在Oracle Database 11g中,系统自动监控符合以下条件的SQL,并收集执行时的细节信息:
系统收集的SQL信息会存储在V$SQL_MONITOR、V$SQL_PLAN_MONITOR视图中
spool report_sql_monitor_active.html
SELECT DBMS_SQLTUNE.REPORT_SQL_MONITOR(
REPORT_LEVEL => 'ALL') AS report
SPOOL REPORT_SQL_DETAIL_HTML.HTML
SELECT dbms_sqltune.REPORT_SQL_DETAIL(SQL_ID => 'g59kf70w1dpku',
report_level => 'ALL') AS report
STATISTICS_LEVEL设置为:'TYPICAL'(缺省)或者 'ALL'
CONTROL_MANAGEMENT_PACK_ACCESS设置为:'DIAGNOSTIC+TUNING'
1)EM:Performance ——>右下角的SQL Monitoring ——>Monitored SQL Executions
2)SQL Developer:Tools ——>Monitor SQL
3)DBMS_SQLTUNE包 ——> DBMS_SQLTUNE.report_sql_monitor
其报告格式有:'TEXT','HTML','XML' ,'ACTIVE',其中'ACTIVE'只在11g R2以后才支持,使用HTML和Flash的方式显示动态的报告,需要从oracle官网读取相关联的Javascript和Flash。
如果不能连到Internet又想看ACTIVE Report可以下载相关的库文件到本地的HTTP服务器上,然后用BASE_PATH来制定库文件的位置。
wget --mirror --no-host-directories --cut-dirs=1 http://download.oracle.com/otn_software/emviewers/scripts/flashver.js
wget --mirror --no-host-directories --cut-dirs=1 http://download.oracle.com/otn_software/emviewers/scripts/loadswf.js
wget --mirror --no-host-directories --cut-dirs=1 http://download.oracle.com/otn_software/emviewers/scripts/document.js
wget --mirror --no-host-directories --cut-dirs=1 http://download.oracle.com/otn_software/emviewers/sqlmonitor/11/sqlmonitor.swf
在调用函数时加上参数,比如:base_path => 'http://ipaddr/sqlmon'
DBMS_SQLTUNE.REPORT_SQL_MONITOR()
FUNCTION REPORT_SQL_MONITOR RETURNS CLOB
Argument Name Type In/Out Default?
------------------------------ ----------------------- ------ --------
SESSION_SERIAL NUMBER IN DEFAULT
SQL_EXEC_START DATE IN DEFAULT
START_TIME_FILTER DATE IN DEFAULT
END_TIME_FILTER DATE IN DEFAULT
INSTANCE_ID_FILTER NUMBER IN DEFAULT
PARALLEL_FILTER VARCHAR2 IN DEFAULT
PLAN_LINE_FILTER NUMBER IN DEFAULT
EVENT_DETAIL VARCHAR2 IN DEFAULT
BUCKET_MAX_COUNT NUMBER IN DEFAULT
BUCKET_INTERVAL NUMBER IN DEFAULT
LAST_REFRESH_TIME DATE IN DEFAULT
REPORT_LEVEL VARCHAR2 IN DEFAULT
SQL_PLAN_HASH_VALUE NUMBER IN DEFAULT
show parameter statistics_level;
------------------------------------ ----------- ------------------------------
statistics_level string TYPICAL
show parameter CONTROL_MANAGEMENT_PACK_ACCESS;
------------------------------------ ----------- ------------------------------
control_management_pack_access string DIAGNOSTIC+TUNING
[oracle@node4 sqlmonitor]$ sqlplus -S /nolog
select /* +moniotr*/* from scott.dept where deptno<=30;
---------- -------------- -------------
select sql_id,sql_text from v$sql_monitor where sql_text like '%scott.dept%';
------------- ------------------------------------------------------------
74qqqwntwzxb1 select /*+ Monitor*/ * from scott.dept where deptno=10
spool report_sql_monitor_text.txt
SELECT DBMS_SQLTUNE.REPORT_SQL_MONITOR(
REPORT_LEVEL => 'ALL') AS REPORT
spool report_sql_monitor_html.html
SELECT DBMS_SQLTUNE.REPORT_SQL_MONITOR(
REPORT_LEVEL => 'ALL') AS REPORT
如不能联网,需要下载相应的flash组件、脚本,详细见SQL Monitor report获取方法
1)active类型报告生成 (生成到登录sqlplus的目录)
spool report_sql_monitor_active.html
SELECT DBMS_SQLTUNE.REPORT_SQL_MONITOR(
REPORT_LEVEL => 'ALL') AS report
可以通过启动http服务,将文件放置在发布目录下,通过http://ipaddr/sqlmon/report_sql_monitor_active.html形式查看(需下载相应的脚本和组件)
1)DBMS_SQLTUNE.REPORT_SQL_MONITOR_LIST
FUNCTION REPORT_SQL_MONITOR_LIST RETURNS CLOB
Argument Name Type In/Out Default?
------------------------------ ----------------------- ------ --------
SESSION_SERIAL NUMBER IN DEFAULT
ACTIVE_SINCE_DATE DATE IN DEFAULT
ACTIVE_SINCE_SEC NUMBER IN DEFAULT
LAST_REFRESH_TIME DATE IN DEFAULT
REPORT_LEVEL VARCHAR2 IN DEFAULT
AUTO_REFRESH NUMBER IN DEFAULT
需要Oracle 11g R2以上版本。此函数用于产生一个对监控SQL的汇总页,类似于EM中的“Monitored SQL Executions”。
常用参数:TYPE和REPORT_LEVEL,用法与REPORT_SQL_MONITOR类似。
SPOOL REPORT_SQL_MONITOR_LIST.HTML
SELECT dbms_sqltune.report_sql_monitor_list(
report_level => 'ALL') AS report
2)DBMS_SQLTUNE.REPORT_SQL_DETAIL
FUNCTION REPORT_SQL_DETAIL RETURNS CLOB
Argument Name Type In/Out Default?
------------------------------ ----------------------- ------ --------
SQL_PLAN_HASH_VALUE NUMBER IN DEFAULT
EVENT_DETAIL VARCHAR2 IN DEFAULT
BUCKET_MAX_COUNT NUMBER IN DEFAULT
BUCKET_INTERVAL NUMBER IN DEFAULT
REPORT_LEVEL VARCHAR2 IN DEFAULT
DATA_SOURCE VARCHAR2 IN DEFAULT
DURATION_STATS NUMBER IN DEFAULT
需要Oracle 11g R2以上版本。此函数用于根据各种条件参数(包括:start_time, end_time, duration, inst_id, dbid, event_detail, bucket_max_count, bucket_interval, top_n, duration_stats),产生比使用REPORT_SQL_MONITOR更加详细的SQL报告。
SPOOL REPORT_SQL_DETAIL_HTML.HTML
SELECT dbms_sqltune.REPORT_SQL_DETAIL(SQL_ID => '74qqqwntwzxb1',
report_level => 'ALL') AS report
ORA-13971: Component "sql_detail" unknown
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 95
ORA-06512: at "SYS.DBMS_REPORT", line 166
ORA-06512: at "SYS.DBMS_REPORT", line 612
ORA-06512: at "SYS.DBMS_REPORT", line 1079
ORA-06512: at "SYS.DBMS_REPORT", line 1135
ORA-06512: at "SYS.DBMS_SQLTUNE", line 20101
SELECT dbms_sqltune.report_sql_detail(top_n => 5,