sql monitor简介

来源:这里教程网 时间:2026-03-03 12:39:09 作者:

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 文件裁剪一下开头和结尾,然后就可以用浏览器查看了。 就像下面这样:    

相关推荐