fbpx

טבלאות המערכת הם מקור המידע בו אנו וה Database משתמשים כדי למצוא מידע רלוונטי על אובייקטים שונים, ביצועי המערכת, והתרחשויות שונות (כגון נעילות, ביצועי מערכת, התחברות התנתקות של יוזרים ועוד)

טבלאות המערכת  נחלקות ל 2 סוגים עיקריים :

·         Data Dictionary Views

·         Dynamic Performance Views

 

Data Dictionary Views

המידע בטבלאות אלו מכיל אינפורמציה אודות האובייקטים השונים במערכת כגון טבלאות, אינדקסים, Views, Functions, Procedures ועוד.
אנו ניגשים לטבלאות אלו כדי לבחון מידע (הנקרא גם "סטטיסטיקות") אודות אובייקטים שונים, והאופטימייזר של אורקל עושה בטבלאות אלו שימוש נרחב על מנת לבנות תוכניות פעולה.

טבלה אחת, קידומות רבות

כל טבלת מערכת מוגדרת בצורה הבאה :  סוג המידע_טווח המידע  לדוגמא :

DBA_TABLES , ALL_TABLES, USER_TABLES

 DBA_VIEWS, ALL_VIEWS, USER_VIEWS

DBA_INDEXES, ALL_INDEXES, USER_INDEXES

וכן הלאה לכל שאר האובייקטים השונים במערכת .. ניתן ללמוד מזה שני דברים

1. אם לרגע אנו מתעלמים מהקידומת המשתנה, שמות טבלאות המערכת לרוב מאוד אינטואיטיביות (TABLES לטבלאות, VIEWS ל Views, INDEXES לאינדקסים וכן הלאה)

2. לכל טבלה ניתן לפנות באמצעות 3 קידומות שונות – DBA_, ALL_, USER_, קידומת אלו מגדירות את היקף הנתונים אותו הטבלה יכולה להציג :

·         USER_ – קידומת עבור האובייקטים השונים אשר שייכים ליוזר בלבד, כל יוזר יכול לגשת לטבלאות אלו.

·         ALL_ – קידומת עבור האובייקטים השונים אשר שייכים ליוזר + האובייקטים השונים אשר ליוזר יש הרשאה אליהם, כל יוזר יכול לגשת לטבלאות אלו.

·         DBA_ – קידומת עבור כל האובייקטים השונים במערכת, רק ל DBA יש את הגישה אל האובייקטים הללו.

לדוגמא, נניח מצב היפותטי בו בכל ה Database שלנו קיימות 3 טבלאות (ואני מדגיש שוב – היפותטי, מצב כזה לעולם לא יקרה במציאות :))

1.      טבלה בשם SALES השייכת ליוזר MOSHE

2.      טבלה בשם CUSTOMERS השייכת ליוזר AVI וליוזר MOSHE יש הרשאה אליה

3.      טבלה בשם PRODUCTS השייכת ליוזר ROEE

 

·         כאשר היוזר MOSHE יתחבר ויריץ את השאילתה הבאה

SELECT table_name FROM user_tables ;  

תתקבל התוצאה

SALES

·         כאשר היוזר AVI יתחבר ויריץ את השאילתה הבאה

SELECT table_name FROM user_tables ;  

תתקבל התוצאה

CUSTOMERS

·         כאשר היוזר MOSHE יתחבר ויריץ את השאילתה הבאה

SELECT table_name FROM all_tables ;  

תתקבל התוצאה

SALES
CUSTOMERS

·         כאשר היוזר AVI יתחבר ויריץ את השאילתה הבאה

SELECT table_name FROM all_tables ;  

תתקבל התוצאה

CUSTOMERS

·         כאשר ה DBA יתחבר ויריץ את השאילתה הבאה

SELECT table_name FROM dba_tables  ;  

תתקבל התוצאה

SALES
CUSTOMERS

PRODUCTS

 

Dynamic Performance Views

 

המידע הנמצא בטבלאות אלו מכיל אינפורמציה דינמית המשקפת את ההתרחשויות העכשוויות השונות. התחילית עבור טבלאות אלו היא V$ ולא אחת טבלאות אלה נקראות "טבלאות ה "V$.

טבלאות אלו לא נחשבות לטבלאות אמיתיות, זוהי הצורה שבה אורקל מאפשרת לנו לראות את ייצוגי הזכרון השונים שלה. בכל Restart המידע בטבלאות אלו מתאפס. טבלאות אלו ניתנות לגישה ע"י ה DBA בלבד ומטרתן העיקרית היא לאפשר לו לבחון את פעילות וביצועי ה Database בכל רגע נתון.

 

לדוגמא אם נרצה לראות אילו יוזרים מחוברים כרגע למערכת נוכל להשתמש בשאילתה הבאה :

RAM >SELECT username, program

  2  FROM v$session

  3  WHERE username IS NOT NULL ;

 

USERNAME                       PROGRAM

------------------------------ -----------------------------

RAM                            sqlplus.exe

SYS                            sqlplus.exe

HR                             sqlplus.exe

אם נרצה לראות כמה פעולות

I/O לוגי נעשו מאז עליית המערכת נוכל להשתמש בשאילתה הבאה :

RAM >SELECT name , value

  2  FROM v$sysstat

  3  WHERE name = 'session logical reads'  ;

 

NAME                                VALUE

------------------------------ ----------

session logical reads             1500770

 לסיכום יהיה ראוי לציין כי הסיבה שטבלאות אלו נקראת Data Dictionary Views ו Dynamic Performance Views ולא Tables היא מכיוון שטבלאות אלו הן למעשה Views.
קיימות טבלאות מערכת (נקראות
Base Tables עבור ה Data Dictionary, ו Virtual Tables עבור ה Dynamic Performance) אשר הן בעצם מקור המידע.
מכיוון שאלו בד"כ לא קריאות, לרוב מכילות מידע מוצפן, ורק
Oracle Database אמור לקרוא ולכתוב אליהן אנו משתמשים ב Views אשר מבוססים על טבלאות אלו.