טבלאות המערכת הם מקור המידע בו אנו וה 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 אשר מבוססים על טבלאות אלו.