ویووهای Dynamic Performance و Data Dictionary در دیتابیس اوراکل

view یکی از OBJECT های دیتابیس اوراکل است که روش ساخت و استفاده از آن را در متن “VIEW در دیتابیس اوراکل” توضیح دادیم. دو دسته ویوو در دیتابیس اوراکل وجود دارد که بعد از ایجاد دیتابیس به صورت اتوماتیک ساخته می شوند و با  استفاده از PUBLIC SYNONYM در اختیار کاربران دیتابیس قرار می گیرند.

این ویووها که به صورت دائمی توسط دیتابیس اوراکل بروزرسانی می شوند شامل اطلاعات کلی OBJECTها و اجزای دیتابیس هستند.

یک دسته از این ویووها Dynamic Performance است که نام آنها معمولا با $V یا $GV شروع می شود. دسته دیگر ویووهای دیتادیکشنری (Data Dictionary) هستند.

در ادامه تفاوت این دو دسته از viewها را توضیح می دهیم.

دیتادیکشنری

دیتادیکشنری یکی از مهم ترین و پرکاربردترین بخش های دیتابیس اوراکل است. دیتادیکشنری مجموعه ای از جداول پایه و ویووهای عموما فقط خواندنی است که متادیتای مدیریتی در مورد دیتابیس را فراهم می کند(البته جداول منبع این ویووها قابل ویرایش هستند اما اوراکل انجام آن را توصیه نمی کند).

به عنوان مثال، کاربران دیتابیس برای اطلاع از موارد زیر از دیتادیکشنری استفاده می کنند:

1.تعاریف مربوط به OBJECTهای موجود در هر SCHEMA

2.میزان فضای ذخیره سازی مورد استفاده توسط هر OBJECT

3.نام کاربران دیتابیس، مجوزها و ROLEهای تخصیص یافته به آنها و اطلاعات AUDITING دیتابیس

 

اجزای دیتادیکشنری

دیتادیکشنری از جدول های پایه و ویوو تشکیل می شود:

1.جدول های پایه: اطلاعات دیتابیس در این جداول قرار می گیرد و ویووهای دیتادیکشنری از روی آنها ایجاد می شوند. اطلاعات جدول های پایه توسط دیتابیس اوراکل دستیابی یا بروزرسانی می شود.

2.ویوو: با استفاده از دستورات SQL اطلاعات لازم از جدول های پایه رمزگشایی و استخراج می شود و به صورت قابل فهم در قالب ویوو در اختیار کاربران قرار می گیرد.

نکته: کاربران دیتابیس در صورتی که مجور کافی داشته باشند می توانند جدول های پایه را تغییر دهند ولی این کار از لحاظ امنیتی صحیح نمی باشد و ممکن است عملیات دیتابیس با مشکل مواجه شود.

 

انواع ویووهای دیتادیکشنری

 معمولا ویووهای دیتادیکشنری به 3 دسته تقسیم می شوند:

 اکثر ویووهای دیتادیکشنری در این 3 دسته قرار می گیرند ولی بعضی از آنها از این قائده مستثنی هستند. 

نکته: برای مشاهده نام تمام ویووها دیتادیکشنری در دیتابیس اوراکل می توان از ویووی DICTIONARY استفاده نمود.

SQL> SELECT * FROM DICTIONARY

  2  ORDER BY TABLE_NAME;

TABLE_NAME                     COMMENTS

—————————— —————————————-

ALL_ALL_TABLES                 Description of all object and relational tables accessible to the user

ALL_APPLY                      Details about each apply process that dequeues from the queue visible to the current user

ویووهای با پیشوند _DBA

این دسته از ویووها اطلاعات تمام OBJECTها و اجزای دیتابیس را نمایش می دهند و مناسب کاربر مدیر سیستم هستند ولی هر کاربری که مجوز لازم را داشته باشد می تواند محتویات این ویووها را ببیند.

مثال: مشاهده اطلاعات تمام OBJECTهای دیتابیس.

SELECT OWNER, OBJECT_NAME, OBJECT_TYPE

FROM   DBA_OBJECTS

ORDER BY OWNER, OBJECT_NAME;

 

ویووهای با پیشوند _ALL

زمانی که یک کاربر از این دسته از ویووها استفاده می کند فقط اطلاعات زیر را مشاهده خواهد کرد:

1.اطلاعات OBJECTهای دیتابیس که مالک و سازنده آنها است.

2.اطلاعات OBJECTهایی که مجوز لازم برای دسترسی به آنها را دارد

SELECT OWNER, OBJECT_NAME, OBJECT_TYPE

FROM ALL_OBJECTS

ORDER BY OWNER, OBJECT_NAME;

مثال: با غیر فعال کردن ROLEها، محتویات ویووی _ALL کمتر است.

SQL> SET ROLE ALL;

Role set.

SQL> SELECT COUNT(*) FROM ALL_OBJECTS;

COUNT(*)

———-

68295

SQL> SET ROLE NONE;

Role set.

SQL> SELECT COUNT(*) FROM ALL_OBJECTS;

COUNT(*)

———-

53771

 

ویووهای با پیشوند _USER

زمانی که یک کاربر از ویووهای _USER استفاده می کند فقط اطلاعات OBJECTهای خودش را مشاهده می کند. در واقع این ویووها یک زیرمجموعه از ویووهای با پیشوند _ALL هستند.

معمولا ستون های هر سه دسته ویووهای _ALL_، DBA_ و _USER یکسان هستند با این تفاوت که در ویووهای  _USER برخلاف دو دسته دیگر، ستون OWNER وجود ندارند.

 

ذخیره سازی دیتادیکشنری

در زمان ایجاد یک دیتابیس، دیتادیکشنری هم ایجاد می شود و تمامی جدول های پایه و ویووها در SYSTEM TABLESPACE ذخیره می شوند و با توجه به اینکه این TABLESPACE همیشه  ONLINEاست دیتادیکشنری نیز همیشه در دسترس خواهد بود.

از آنجایی که دیتابیس دائما به اطلاعات دیتادیکشنری نیاز دارد محل ذخیره سازی آنها در حافظه و در SHARED POOL قسمت DATA DICTIONARY CACHE است. البته معمولا اطلاعات اصلی در این محل است و اطلاعات مربوط به توضیحات سطرها و ستون ها در DATABASE BUFFER CACHE قرار می گیرد.

نکته: کاربر دیتابیس SYS مالک دیتادیکشنری است. البته ویووهای دیتادیکشنری با استفاده از SYNONYM در اختیار کاربران قرار می گیرند.

 

DYNAMIC PERFORMANCE

DYNAMIC PERFORMANCE شامل یکسری جدول های مجازی برای ذخیره سازی فعالیت های دیتابیس است که به صورت مرتب و دائمی بروزرسانی می شوند.

همانند دیتادیکشنری DYNAMIC PERFORMANCE نیز در زمان ایجاد دیتابیس ساخته می شوند. نام ویووهای DYNAMIC PERFORMANCE معمولا با $V و $GV شروع می شوند.

هیچ کدام از کاربران دیتابیس نمی توانند اطلاعات ویووهای DYNAMIC PERFORMANCE را تغییر دهند.

نکته: از آنجایی که این ویووها نمی توانند ALTER یا DROP شوند به آنها FIXED TABLE نیز می گویند. اطلاعات تمام DYNAMIC PERFORMANCE ها در ویووی V$FIXED_TABLE قرار دارد.

select * from v$fixed_table

اطلاعاتی که در این ویووها قرار می گیرند عبارتند از:

1.پارامترهای سیستمی و مربوط به SESSION

2.شرایط تخصیص حافظه

3.وضعیت فایل های دیتابیس

4.وضعیت JOBها

5.دستورات اجرا شده SQL در دیتابیس

6.آمار و ارقام دیتابیس

نکته: کاربر SYS مالک تمام جدول های مجازی DYNAMIC PERFORMANCE است که معمولا با $_V شروع می شوند و از روی آنها VIEW ساخته شده است.

 نکته: ویووهایی که با $GV شروع می شوند معادل ویووهای $V هستند با این تفاوت که مربوط به محیط RAC هستند و اطلاعات تمام INSTANCE ها را نمایش می دهند.

 

ذخیره سازی Dynamic Performance

جدول های مجازی ویووهای DYNAMIC PERFORMANCE در حافظه قرار دارند و در دیتابیس ذخیره نمی شوند. یعنی با پایین آمدن INSTANCE از بین می روند و با شروع مجدد INSTANCE تشکیل می شوند و از آنجایی که مرتبا در حال بروز سانی شدن هستند اصل READ CONSISTENCY در مورد آنها رعایت نمی شود.

برخلاف دیتادیکشنری با تشکیل شدن حافظه SGA حتی در حالت NOMOUNT می توان ویووهای DYNAMIC PERFORMANCE را QUERY گرفت.

 

تفاوت دیتادیکشنری و DYNAMMIC PERFORMANCE

در جدول زیر تفاوت های دیتادیکشنری و DYNAMIC PERFORMANCE  را مشاهده می کنید.

Comment (1)

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.