暂无图片
暂无图片
2
暂无图片
暂无图片
暂无图片

Oracle 性能调优工具:SQL Monitor

生有可恋 2022-10-13
4255

SQL Monitor 的应用场景主要针对可能存在性能瓶颈的 SQL 进行监控和分析,调用 dbms_sqltune.report_sql_monitor 可以获得相应 SQL 的 HTML 报告。

当 SQL 的执行时间超过 5 秒,会被 SQL Monitor 自动列为监控对象,并会被记录在 v$sql_monitor 视图中。当表开启并行查询时,也会被 SQL Monitor 记录。

SQL Monitor 的报告功能很容易上手。使用时有两种形式,一种是指定 SID,另一种是指定存在问题的 SQL_ID。我们可以通过查询 v$sql_monitor 视图,检查有哪些慢 SQL 被 SQL Monitor 列入监控。

    col status for a15
    col username for a10
    col module for a12
    col program for a12
    col sql_id for a15
    col sql_text for a50
    set pagesize 0
    set linesize 200
    col sid for 999999


    select status, username, module, 
    program, sid, sql_id, sql_text 
    from v$sql_monitor;

    通过 v$sql_monitor 记录的有问题的 SQL 的 SID 或 SQL_ID,可以通过调用 dbms_sqltune.report_sql_monitor 生成 HTML 的分析报告。

    如下语句是对指定的 SQL_ID 进行分析:

      set trimspool on
      set arraysize 512
      set trim on
      set pagesize 0
      set linesize 1000
      set long 1000000
      set longchunksize 1000000
      spool active_sqlmon.html
      select dbms_sqltune.report_sql_monitor(
      sql_id => '1cg9h05uqz1sn' ,
      report_level=>'ALL',
      type=>'ACTIVE')
      from dual;
      spool off

      在指定目录开启 http 服务,就可以通过 http://server-ip 在线查询生成的 HTML 报告:

        # python2
        python -m SimpleHTTPServer 80
        # python3
        python -m http.server 80

        另一种方式是使用 SID,当可以定位到会话时,可以使用会话ID来分析有问题的SQL,dbms_sqltune.report_sql_monitor 的用法如下:

          select /*+ noparallel */ dbms_sqltune.report_sql_monitor (
          session_id=>8651
            report_level=>'ALL'
            type=>'ACTIVE'
          from dual;

          SQL Monitor 生成的报告类型有多种样式,其中用的多的有 ACTIVE、HTML、TEXT。上面我们用过的 ACTIVE 是一种 HTML 的交互页面,可以点击标签页切换内容。另一种样式 HTML 是个静态页面,TEXT 则是纯文本表格样式。

          HTML 样式:

            select /*+ noparallel */ dbms_sqltune.report_sql_monitor (
            session_id=>8651,
            report_level=>'ALL',
            type=>'HTML')
            from dual;

            TEXT 样式:

              select /*+ noparallel */ dbms_sqltune.report_sql_monitor (
              session_id=>8651,
              report_level=>'ALL',
              type=>'TEXT')
              from dual;

              SQL Monitor 的监控功能默认会自动开启,默认的参数文件配置为:

                SQL> show parameter control_management_pack_access 
                control_management_pack_access string DIAGNOSTIC+TUNING
                SQL> show parameter statistics_level
                statistics_level string TYPICAL


                参考:

                • https://docs.oracle.com/cd/E11882_01/server.112/e41573/instance_tune.htm#PFGRF94546


                全文完。


                如果转发本文,文末务必注明:“转自微信公众号:生有可恋”。


                文章转载自生有可恋,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                评论