@

1、SQL Monitor简介

sql monitor是oracle官方提供的自动监控符合特定条件的SQL,用于收集执行时的细节信息的监控工具,常用于sql调优和系统性能监控

2、捕捉sql的前提

sql monitor 捕捉sql的前提:

  • 并行执行的sql语句
  • 单次执行消耗的CPU或IO超过5秒
  • statistics_level级别必须是TYPICAL 或者ALL
  • 使用/* +MONITOR*/ HINT的SQL语句

3、SQL Monitor 参数设置

  • STATISTICS_LEVEL必须设置为:'TYPICAL'(缺省)或者 'ALL'
  • CONTROL_MANAGEMENT_PACK_ACCESS设置为:'DIAGNOSTIC+TUNING'

查看statistics_level参数

  1. show parameter statistics_level;



建议还是改变Session就可以

  1. alter session set statistics_level=ALL;

查看参数CONTROL_MANAGEMENT_PACK_ACCESS

  1. show parameter CONTROL_MANAGEMENT_PACK_ACCESS;

4、SQL Monitor Report

本博客采用DBMS_SQLTUNE包DBMS_SQLTUNE.report_sql_monitor的方式获取,报告格式有:'TEXT','HTML','XML' ,'ACTIVE',其中'ACTIVE'只在11g R2以后才支持

4.1、SQL_ID获取

sql monitor使用,必须在sql中使用/* +MONITOR*/ Hint,然后数据会存在v$sql_monitor表里

随意找条sql,注意要加/*+ moniotr*/


  1. select /*+ moniotr*/ a.user_code, a.full_name, a.user_pwd, c.unit_code, c.unit_name
  2. from base_user a
  3. left join (select ur.user_code, ur.unit_code
  4. from t_user_role ur
  5. where ur.user_role < 10) b
  6. on a.user_code = b.user_code
  7. left join t_unit_info c
  8. on b.unit_code = c.unit_code
  9. where c.unit_code in
  10. (select uinfo.unit_code
  11. from t_unit_info uinfo
  12. start with uinfo.unit_code = '15803'
  13. connect by prior uinfo.unit_code = uinfo.para_unit_code);

提供sql查询,获取sql_id

  1. select sql_id,sql_text from v$sql_monitor where sql_text like '%t_unit_info%

4.2、Text文本格式

将上面查询到的sql_id改下,然后执行如下SQL:

  1. SET LONG 1000000
  2. SET LONGCHUNKSIZE 1000000
  3. SET LINESIZE 1000
  4. SET PAGESIZE 0
  5. SET TRIM ON
  6. SET TRIMSPOOL ON
  7. SET ECHO OFF
  8. SET FEEDBACK OFF
  9. spool report_sql_monitor_text.txt
  10. SELECT DBMS_SQLTUNE.REPORT_SQL_MONITOR(
  11. SQL_ID => 'g9rtj389t0g66',
  12. TYPE => 'TEXT',
  13. REPORT_LEVEL => 'ALL') AS REPORT
  14. FROM dual;
  15. spool off

获取到text格式的sql monitor

4.3、Html格式

  1. SET LONG 1000000
  2. SET LONGCHUNKSIZE 1000000
  3. SET LINESIZE 1000
  4. SET PAGESIZE 0
  5. SET TRIM ON
  6. SET TRIMSPOOL ON
  7. SET ECHO OFF
  8. SET FEEDBACK OFF
  9. spool report_sql_monitor_html.html
  10. SELECT DBMS_SQLTUNE.REPORT_SQL_MONITOR(
  11. SQL_ID => 'g9rtj389t0g66',
  12. TYPE => 'HTML',
  13. REPORT_LEVEL => 'ALL') AS REPORT
  14. FROM dual;
  15. spool off

获取到对应报告,可以看到执行计划、Buffer Gets 等等信息

4.4、ACTIVE格式

ACTIVE格式需要下载相应的flash组件、脚本,详细见SQL Monitor Report 使用详解

  1. SET LONG 1000000
  2. SET LONGCHUNKSIZE 1000000
  3. SET LINESIZE 1000
  4. SET PAGESIZE 0
  5. SET TRIM ON
  6. SET TRIMSPOOL ON
  7. SET ECHO OFF
  8. SET FEEDBACK OFF
  9. spool report_sql_monitor_active.html
  10. SELECT DBMS_SQLTUNE.REPORT_SQL_MONITOR(
  11. SQL_ID => '2rjh5d5k2yujz',
  12. TYPE => 'ACTIVE',
  13. REPORT_LEVEL => 'ALL',
  14. BASE_PATH => 'http://ip/script') AS REPORT
  15. FROM dual;
  16. spool off

4.5 SQL Monitoring list

如果要获取所有sql monitor,就可以使用如下SQL:

  1. SET LONG 1000000
  2. SET LONGCHUNKSIZE 1000000
  3. SET LINESIZE 1000
  4. SET PAGESIZE 0
  5. SET TRIM ON
  6. SET TRIMSPOOL ON
  7. SET ECHO OFF
  8. SET FEEDBACK OFF
  9. SPOOL report_sql_monitor_list.html
  10. SELECT dbms_sqltune.report_sql_monitor_list(
  11. type => 'HTML',
  12. report_level => 'ALL') AS report
  13. FROM dual;
  14. SPOOL OFF

5、SQL Monitor Report查询

提供sql monitor常用的查询脚本

5.1、查看所有的sql monitor report

  • 查看所有的sql monitor report
  1. select dbms_sqltune.report_sql_monitor from dual;

5.2、查看某个sql的sql monitor report

  • 查看某个sql的sql monitor report
  1. SELECT DBMS_SQLTUNE.report_sql_monitor(sql_id => '2rjh5d5k2yujz', type => 'TEXT') from dual;

5.3、查看某个sql的整体性能

  • 查看某个sql的整体性能
  1. SELECT DBMS_SQLTUNE.report_sql_monitor_list(sql_id=>'2rjh5d5k2yujz',type =>'TEXT',report_level => 'ALL') AS report FROM dual;

5.4、查看整个系统的性能

  • 查看整个系统的性能
  1. SELECT DBMS_SQLTUNE.report_sql_monitor_list(type =>'TEXT',report_level => 'ALL') AS report FROM dual;

相关SQL脚本下载:sql download

Oracle SQL调优系列之SQL Monitor Report的更多相关文章

  1. 初次使用SQL调优建议工具--SQL Tuning Advisor

    在10g中,Oracle推出了自己的SQL优化辅助工具: SQL优化器(SQL Tuning Advisor :STA),它是新的DBMS_SQLTUNE包. 使用STA一定要保证优化器是CBO模式下 ...

  2. 记一次SQL调优/优化(SQL tuning)——性能大幅提升千倍以上

    好久不写东西了,一直忙于各种杂事儿,恰巧昨天有个用户研发问到我一个SQL调优的问题,说性能太差,希望我能给调优下,最近有些懒,可能和最近太忙有关系,本来打算问问现在的情况,如果差不多就不调了,那哥们儿 ...

  3. 一个SQL调优/优化(SQL TUNING)“小把戏”“哄得”小朋友挺满意

    前几天,去一个用户那里,解决完问题,和一个小朋友闲聊,他有点愁眉不展.郁郁寡欢的样子,似乎没心情和我说话,之前,他的话是最多的,见此状,我就问:怎么了?小朋友?,他说,这几天应用人员说他的某个模块的性 ...

  4. 快速SQL调优/优化(SQL TUNING)——1分钟搞定超慢SQL

    前几天,一个用户的研发人员找到我了,说他们有个SQL语句非常慢,我说多慢?他们说:半个小时也没出结果.于是问他们要了SQL语句和执行计划,SQL语句就不能再这里贴出来了,下面是调整前的执行计划(略去某 ...

  5. [SQL SERVER系列]读书笔记之SQL注入漏洞和SQL调优

    最近读了程序员的SQL金典这本书,觉得里面的SQL注入漏洞和SQL调优总结得不错,下面简单讨论下SQL注入漏洞和SQL调优. 1. SQL注入漏洞 由于“'1'='1'”这个表达式永远返回 true, ...

  6. 11g新特性-自动sql调优(Automatic SQL Tuning)

    11g新特性-自动sql调优(Automatic SQL Tuning) 在Oracle 10g中,引进了自动sql调优特性.此外,ADDM也会监控捕获高负载的sql语句. 在Oracle 11g中, ...

  7. 读书笔记之SQL注入漏洞和SQL调优

    原文:读书笔记之SQL注入漏洞和SQL调优 最近读了程序员的SQL金典这本书,觉得里面的SQL注入漏洞和SQL调优总结得不错,下面简单讨论下SQL注入漏洞和SQL调优. 1. SQL注入漏洞 由于“' ...

  8. SQL注入漏洞和SQL调优SQL注入漏洞和SQL调优

    SQL注入漏洞和SQL调优 最近读了程序员的SQL金典这本书,觉得里面的SQL注入漏洞和SQL调优总结得不错,下面简单讨论下SQL注入漏洞和SQL调优. 1. SQL注入漏洞 由于“'1'='1'”这 ...

  9. HiveSql调优系列之Hive严格模式,如何合理使用Hive严格模式

    目录 综述 1.严格模式 1.1 参数设置 1.2 查看参数 1.3 严格模式限制内容及对应参数设置 2.实际操作 2.1 分区表查询时必须指定分区 2.2 order by必须指定limit 2.3 ...

随机推荐

  1. 安装superset遇到的坑

    实验环境:ubuntu16.04 python环境: 3.6.7 安装参考:https://superset.incubator.apache.org/installation.html 特别提醒: ...

  2. Python操作Word与Excel并打包

    安装模块 # Word操作库 pip install docx # Excel操作库 pip install openpyxl # 打包exe工具 pip install pyinstaller Wo ...

  3. Bank4

    Account: package banking4; public class Account { private double balance; public Account(double int_ ...

  4. SourceTree 配置 GitLab

    生成SSH 创建SSH,执行ssh-keygen -t rsa -C "youremail@example.com",会在.ssh目录下生成id_rsa.id_rsa.pub两个私 ...

  5. CSS 超出行显示...

    一行超出 overflow:hidden; white-space:nowrap; text-overflow:ellipsis; 多行超出 overflow: hidden; text-overfl ...

  6. Vue 全选/取消全选,反选/取消反选

    这是一个组件: <template> <div> <div> <input type="checkbox" v-model="i ...

  7. 一个 json 转换工具

    在前后端的数据协议(主要指http和websocket)的问题上,如果前期沟通好了,那么数据协议上问题会很好解决,前后端商议一种都可以接受的格式即可.但是如果接入的是老系统.第三方系统,或者由于某些奇 ...

  8. STL中的迭代器分类

      STL中迭代器的分类 五类迭代器如下: 1.输入迭代器:只读,一次传递    为输入迭代器预定义实现只有istream_iterator和istreambuf_iterator,用于从一个输入流i ...

  9. UML ——六种依赖关系.md

    在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization), 关联(Association), 聚合(Aggregation), 组合(Compos ...

  10. PriorityBlockingQueue 和 Executors.newCachedThreadPool()

    1.PriorityBlockingQueue里面存储的对象必须是实现Comparable接口. 2.队列通过这个接口的compare方法确定对象的优先级priority. 规则是:当前和其他对象比较 ...