پایگاه داده اوراکل و Real-Time Database Operation Monitoring in

پایگاه داده اوراکل و Real-Time Database Operation Monitoring in

در پایگاه داده اوراکل نسخه ۱۱ امکان Real-Time SQL Monitoring معرفی گردید که اجازه می دهد بر فعالیت sql های که زمان اجرای طولانی دارند و یا از hint monitor در انها استفاده شده نظارت داشته باشیم.در اوراکل ۱۲c این امکان در حد اینکه بر روی انواع دستورات حاوی sql و pl sql که در آنها از Sql استفاده گردیده، نظارت داشته باشیم. بسته DBMS_SQL_MONITOR API های مورد نیاز در این خصوص را فراهم می نماید به خوبی رویه هایی که در بسته DBMS_SQLTUNE پیدا می گردید.

تغییرات Real-Time SQL Monitoring:
پایه عملکرد Real-Time SQL Monitoring نسب به اوراکل ۱۱g تغییری نداشته به غیر از رویه های REPORT_SQL_MONITOR و REPORT_SQL_MONITOR_LIST که از بسته DBMS_SQLTUNE به بسته DBMS_SQL_MONITOR منتقل شده اند.

نظارت عملیات Real-Time SQL پایگاه داده :
در اوراکل ۱۲ امکان نظارت بر عملکرد sql و plsql به صورت گروهی وترکیبی وجود دارد. این عملیات با رویه های begin_operatin آغاز و با end_operation از بسته DBMS_SQL_MONITOR پایان می یابد.
پارامتر های رویه BEGIN_OPERATION شامل موارد زیر می باشد.
DBOP_NAME: یک نام که کابر تعریف کرده برای عملیات ترکیبی پایگاه داده
DBOP_EID: یک شناسه واحد اختیاری برای اجراهای جاری. در صورتی که NULL باشد، یک شناسه اجرایی واحد ساخته می شود.
FORCED_TRACKING: اگر مقدار آن FORCE_TRACKING تنظیم گردد، عملیات حتما ارزیابی می گردد. در صورتی که مقدار NO_FORCE_TRACKING که مقدار پیش فرض هم می باشد تنظیم گردد، عملیات های که بیش از ۵ ثانیه از CPU و I/O استفاده می کندد ارزیابی می شوندو
ATTRIBUTE_LIST: یک لیستی که بر اساس کاما جدا می شوند که نام ویژگی های که برای محدود کردن نظارت در یک دورهاستفاده می شوند.
رویه end_operation فقط از دو پارامتر اول استفاده می کند که اجباری هم می باشند.
در ادامه یک نمونه کاربردی آورده شده است :

DROP TABLE t1 PURGE;

DROP TABLE t2 PURGE;

CREATE TABLE t1 AS

SELECT level AS id,

‘Description for ‘ || level AS description

FROM dual

CONNECT BY level <= 1000000;

CREATE TABLE t2 AS

SELECT level AS id,

‘Description for ‘ || level AS description

FROM dual

CONNECT BY level <= 1000000;

آغاز می کنیم یک عملیات را با ارزیابی اجباری :

VARIABLE l_dbop_eid NUMBER;

BEGIN

:l_dbop_eid := DBMS_SQL_MONITOR.begin_operation (

dbop_name => ‘db_op_1’,

dbop_eid => :l_dbop_eid,

forced_tracking => DBMS_SQL_MONITOR.force_tracking

);

END;

/

یک عمایاتی را اجرا می کنیم که از دو جدول T1 و T2 استفاده گردد:

BEGIN

FOR cur_rec IN (SELECT * FROM t1) LOOP

NULL;

END LOOP;

FOR cur_rec IN (SELECT * FROM t2) LOOP

NULL;

END LOOP;

END;

/

عملیات را پایان می دهیم .

BEGIN

DBMS_SQL_MONITOR.end_operation (

dbop_name => ‘db_op_1’,

dbop_eid => :l_dbop_eid

);

END;

/

نتیجه را می توان از نمایه V$SQl_MONITOR مشاهده کرد.

SET LINESIZE 200

SELECT dbop_name, dbop_exec_id, status

FROM v$sql_monitor

WHERE username = ‘TEST’;

DBOP_NAME DBOP_EXEC_ID STATUS

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

db_op_1 3 DONE

db_op_1 2 DONE

db_op_1 1 DONE

SQL>

REPORT_SQL_MONITOR
این امکان نسبت به اوراکل ۱۱G تغییر نداشته به غیر از اینکه به بسته DBMS_SQL_MONITOR منتقل گردیده است.برای نظارت بر عملیات به DBOP_NAME حتما احتیاج داریم که در گزارش، آخرین اجرای عملیات مورد نظر پایگاه داده مشخص می گردد. در صورتی که آخرین اجرا مورد نظر نباشد باید DBOP_EXEC_ID عمیات را هم مشخص کرد.

SET LONG 1000000

SET LONGCHUNKSIZE 1000000

SET LINESIZE 1000

SET PAGESIZE 0

SET TRIM ON

SET TRIMSPOOL ON

SET ECHO OFF

SET FEEDBACK OFF

SPOOL /host/report_sql_monitor.htm

SELECT DBMS_SQL_MONITOR.report_sql_monitor(

dbop_name => ‘db_op_1’,

type => ‘HTML’,

report_level => ‘ALL’) AS report

FROM dual;

SPOOL OFF

خروجی REPORT_SQL_MONITOR می تواند هر کدام از نوع های زیر باشد
• Text
• Html
• Xml
• Active

REPORT_SQL_MONITOR_LIST
این امکان هم مانند نسخه ۱۱g در ۱۲c فعالیت می کند با این تغییر که به بسته DBMS_SQL_MONITOR منتقل گردیده است و گزارش های فعال را هم پشتیبانی می کند.

SET LONG 1000000

SET LONGCHUNKSIZE 1000000

SET LINESIZE 1000

SET PAGESIZE 0

SET TRIM ON

SET TRIMSPOOL ON

SET ECHO OFF

SET FEEDBACK OFF

SPOOL /host/report_sql_monitor_list.htm

SELECT DBMS_SQL_MONITOR.report_sql_monitor_list(

type => ‘HTML’,

report_level => ‘ALL’) AS report

FROM dual;

SPOOL OFF

خروجی REPORT_SQL_MONITOR_LIST می تواند هر کدام از نوع های زیر باشد
• Text
• Html
• Xml
• Active

REPORT_SQL_DETAIL
این تابع همچنان در بسته DBMS_SQLTUNE باقی مانده است.

نمایه ها
از نمایه های زیر می توان استفاده کرد.

V$SQL_MONITOR
V$SQL_PLAN_MONITOR

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