zoukankan      html  css  js  c++  java
  • Oracle SQL调优系列之SQL Monitor Report

    @

    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参数

    show parameter statistics_level;
    

    在这里插入图片描述
    建议还是改变Session就可以

    alter session set statistics_level=ALL;
    
    

    查看参数CONTROL_MANAGEMENT_PACK_ACCESS

    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*/

    
    select /*+ moniotr*/ a.user_code, a.full_name, a.user_pwd, c.unit_code, c.unit_name
      from base_user a
      left join (select ur.user_code, ur.unit_code
                   from t_user_role ur
                  where ur.user_role < 10) b
        on a.user_code = b.user_code
      left join t_unit_info c
        on b.unit_code = c.unit_code
     where c.unit_code in
           (select uinfo.unit_code
              from t_unit_info uinfo
             start with uinfo.unit_code = '15803'
            connect by prior uinfo.unit_code = uinfo.para_unit_code);
         
    

    提供sql查询,获取sql_id

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

    4.2、Text文本格式

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

    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 report_sql_monitor_text.txt
    SELECT DBMS_SQLTUNE.REPORT_SQL_MONITOR(
      SQL_ID => 'g9rtj389t0g66',
      TYPE => 'TEXT',
      REPORT_LEVEL => 'ALL') AS REPORT
    FROM dual;
    spool off
    
    

    获取到text格式的sql monitor
    在这里插入图片描述

    4.3、Html格式

    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 report_sql_monitor_html.html
    SELECT DBMS_SQLTUNE.REPORT_SQL_MONITOR(
      SQL_ID => 'g9rtj389t0g66',
      TYPE => 'HTML',
      REPORT_LEVEL => 'ALL') AS REPORT
    FROM dual;
    spool off
    

    获取到对应报告,可以看到执行计划、Buffer Gets 等等信息
    在这里插入图片描述

    4.4、ACTIVE格式

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

    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 report_sql_monitor_active.html
    SELECT DBMS_SQLTUNE.REPORT_SQL_MONITOR(
      SQL_ID => '2rjh5d5k2yujz',
      TYPE => 'ACTIVE',
      REPORT_LEVEL => 'ALL',
      BASE_PATH => 'http://ip/script') AS REPORT
    FROM dual;
    spool off
    
    

    4.5 SQL Monitoring list

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

    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 report_sql_monitor_list.html
    SELECT dbms_sqltune.report_sql_monitor_list(
      type         => 'HTML',
      report_level => 'ALL') AS report
    FROM dual;
    SPOOL OFF
    

    在这里插入图片描述

    5、SQL Monitor Report查询

    提供sql monitor常用的查询脚本

    5.1、查看所有的sql monitor report

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

    5.2、查看某个sql的sql monitor report

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

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

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

    5.4、查看整个系统的性能

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

    相关SQL脚本下载:sql download

  • 相关阅读:
    线性回归——梯度下降法
    线性回归——最小二乘法_实例(二)
    线性回归——最小二乘法(二)
    线性回归——最小二乘法_实例(一)
    线性回归——最小二乘法(一)
    Spark——SparkContext简单分析
    Kubernets搭建Kubernetes-dashboard
    Docker中部署Kubernetes
    Akka初步介绍
    laravel The Process class relies on proc_open, which is not available on your PHP installation.
  • 原文地址:https://www.cnblogs.com/mzq123/p/13163298.html
Copyright © 2011-2022 走看看