sql monitor简介
Sql monitor 简介
11g 之后的版本 oracle 提供了一种实时 sql 监控工具,即 sql monitor 。默认情况下,当 sql 开启并行,或者 sql 的单词执行时间超过 5 秒钟, sql monitor 就会自动触发。当然前提是 sql monitor 功能没有被禁用。开启条件也比较简单:
1. STATISTICS_LEVEL 被设置为 all 或者 typical
2. control_management_pack_access 被设置为 DIAGNOSTIC+TUNING
当 sql monitor 启动之后,会收集执行时间, IO 信息, CPU 时间,读写压力等信息到 V$SQL_MONITOR 和 V$SQL_PLAN_MONITOR 视图中。基本上每秒钟收集一次。虽然是实时监控工具,但是 sql 执行完成后,信息并不会马上删除,会保留 1 分钟。
实际意义:可以发现sql执行中的瓶颈,有的放矢,解决sql性能问题。
v$sql_monitor
只有在 v$sql_monitor 中的 sql 才可以用来生成 sql monitor 报告。
查看:
SET LINESIZE 300 COLUMN sql_text FORMAT A100 SELECT sql_id, status, sql_text FROM v$sql_monitor;
|
DBMS_SQLTUNE.REPORT_SQL_MONITOR
DBMS_SQLTUNE.report_sql_monitor 这个包有几个最常用的参数:
Sql_id: 目标 sql Report_level :可选值有 none , basic,typical,all; 默认值 typical 对大部分情况足够用了。 Type :可选值有 TEXT , XML , HTML.ACTIVE.active 是 11gR2 可用的,需要使用 HTML 和 flash 。一般 html 就够用了。 Session_id: 指定 sid 。其实不常用。 |
这里有个例子:
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 monitor_sql.html SELECT DBMS_SQLTUNE.report_sql_monitor(sql_id =>'10z5xmbjdxysr',type=> 'HTML') AS report FROM dual; spool off |
将生成的 html 文件裁剪一下开头和结尾,然后就可以用浏览器查看了。
就像下面这样:
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31480688/viewspace-2284143/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/31480688/viewspace-2284143/