签到成功

知道了

CNDBA社区CNDBA社区

Sql Monitor测试说明

2016-09-20 14:17 3297 0 原创 Oracle 11G
作者: Expect-乐

Sql Monitor介绍

这是Oracle 11G新特性,提供实时SQL监控。默认情况是自动启动的。当SQL并行执行时,会立即被实时监控到,或者当SQL单进程运行时,如果消耗超过5秒的CPUI/O时间,它也会被监控到,当然也可以通过hint强行监控指定的SQLhttp://www.cndba.cn/Expect-le/article/260

监控的信息包括:执行时间,CPU时间,读写,I/O等待时间和其他一些等待时间。这些数据几乎是实时刷新的。这些数据都存储在V$SQL_MONITOR/V$SQL_PLAN_MONITOR视图中,保存时间长短空间大小来决定数但是至少保存一分钟

启用Sql Monitor

默认Sql Monitor是开启的

2.1  启用条件:

STATISTICS_LEVEL设置为TYPICAL或者ALL,两者没有区别。

http://www.cndba.cn/Expect-le/article/260

CONTROL_MANAGEMENT_PACK_ACCESS参数设置为’DIAGNOSTIC+TUNING’
SQL > show parameter statistics_level
NAME                  TYPE         VALUE
--------------------- ------------ -------------
statistics_level      string       TYPICAL


http://www.cndba.cn/Expect-le/article/260

SQL > select statistics_name,session_status,system_status,activation_level,session_settable
  2  from v$statistics_level 
  3  where statistics_name = 'SQL Monitoring';
STATISTICS_NAME   SESSION_STATUS   SYSTEM_STATUS    ACTIVATION_LEVEL   SESSION_S
----------------- ---------------- ---------------- ------------------ ---------
SQL Monitoring    ENABLED          ENABLED          TYPICAL            YES


http://www.cndba.cn/Expect-le/article/260

SQL > show parameter control_manage
NAME                                 TYPE         VALUE
------------------------------------ ------------ ----------------------
control_management_pack_access       string       DIAGNOSTIC+TUNING


HINT强行监控SQL

强制对某个SQL使用实时监控可以如下改写SQL

select /*+ monitor */ count(*) from scott.emp where sal > 5000;


指定不执行实时监控:

select /*+ no_monitor */ count(*) from scott.emp where sal > 5000;


查看监控信息

4.1  常用的传入参数:

SQL_ID: 如果是NULL,则监控最近一条SQL。可以通过视图来查看V$sql_monitorhttp://www.cndba.cn/Expect-le/article/260

REPORT_LEVEL:选项有 'NONE', 'BASIC', 'TYPICAL' or 'ALL',

TYPE:可以指定生成:TEXTHTMLXMLACTIVE 模式的报告。ACTIVE是对好的选择对于并行查询,需要联网

SESSION_ID : 可以通过SYS_CONTEXT('USERENV','SID') from dual来查看当前会话的ID

具体参数:

DBMS_SQLTUNE.REPORT_SQL_MONITOR(
   sql_id                    IN VARCHAR2  DEFAULT  NULL,
   dbop_name               IN VARCHAR2  DEFAULT  NULL,
   dbop_exec_id             IN NUMBER    DEFAULT  NULL,
   session_id                IN NUMBER    DEFAULT  NULL,
   session_serial             IN NUMBER    DEFAULT  NULL,
   sql_exec_start            IN DATE      DEFAULT  NULL,
   sql_exec_id               IN NUMBER    DEFAULT  NULL,
   inst_id                   IN NUMBER    DEFAULT  NULL,
   start_time_filter         IN DATE      DEFAULT  NULL,
   end_time_filter           IN DATE      DEFAULT  NULL,
   instance_id_filter        IN NUMBER    DEFAULT  NULL,
   parallel_filter           IN VARCHAR2  DEFAULT  NULL,
   plan_line_filter          IN NUMBER    DEFAULT  NULL,
   event_detail              IN VARCHAR2  DEFAULT  'YES',
   bucket_max_count          IN NUMBER    DEFAULT  128,
   bucket_interval           IN NUMBER    DEFAULT  NULL,
   base_path                 IN VARCHAR2  DEFAULT  NULL,
   last_refresh_time         IN DATE      DEFAULT  NULL,
   report_level              IN VARCHAR2  DEFAULT 'TYPICAL',
   type                      IN VARCHAR2  DEFAULT 'TEXT',
   sql_plan_hash_value       IN NUMBER    DEFAULT  NULL)
 RETURN CLOB;


http://www.cndba.cn/Expect-le/article/260

如果什么参数都不指定那就默认监控显示最近一条被监控的SQL.http://www.cndba.cn/Expect-le/article/260

4.2  TEXT模式

SQL>SET LONG 1000000
SQL>SET LONGCHUNKSIZE 1000000
SQL>SET LINESIZE 1000
SQL>SET PAGESIZE 0
SQL>SET TRIM ON
SQL>SET TRIMSPOOL ON
SQL>SET ECHO OFF
SQL>SET FEEDBACK OFF
SQL> SELECT DBMS_SQLTUNE.report_sql_monitor(sql_id => ' bn963duckk02p', type => 'TEXT')
AS report FROM dual;
 
REPORT_SQL_MONITOR
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SQL Monitoring Report
 
SQL Text
------------------------------
select /*+ monitor */ count(*) from scott.emp where sal > 5000
 
Global Information
------------------------------
 Status       : DONE (ALL ROWS)
 Instance ID      : 1
 Session      : SYS (51:11)
 
REPORT_SQL_MONITOR
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 SQL ID       : bn963duckk02p
 SQL Execution ID    : 16777216
 Execution Started   : 08/23/2016 18:07:35
 First Refresh Time  : 08/23/2016 18:07:35
 Last Refresh Time   : 08/23/2016 18:07:35
 Duration      : .003751s
 Module/Action      : sqlplus@rac1 (TNS V1-V3)/-
 Service      : SYS$USERS
 Program      : sqlplus@rac1 (TNS V1-V3)
 Fetch Calls      : 1
REPORT_SQL_MONITOR
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Global Stats
=================================================================
| Elapsed |    IO    | Other | Fetch | Buffer | Read | Read |
| Time(s) | Waits(s) | Waits(s) | Calls |  Gets  | Reqs | Bytes |
=================================================================
|    0.00 | 0.00 |    0.00 |     1 |      6 |    2 | 49152 |
=================================================================
 
SQL Plan Monitoring Details (Plan Hash Value=2083865914)
=========================================================================================================================================
| Id |     Operation     | Name |  Rows   | Cost | Time | Start  | Execs |   Rows   | Read | Read  | Activity | Activity Detail |
 
REPORT_SQL_MONITOR
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|    |       |    | (Estim) |     | Active(s) | Active |  | (Actual) | Reqs | Bytes |   (%)    |   (# samples) |
=========================================================================================================================================
|  0 | SELECT STATEMENT     |    |      |     |       1 |     +0 |     1 |   1 |    |    |       |     |
|  1 |  SORT AGGREGATE     |    |    1 |     |       1 |     +0 |     1 |   1 |    |    |       |     |
|  2 |   TABLE ACCESS FULL | EMP  |    1 |   3 |  |  |     1 |     |  2 | 49152 |       |     |


http://www.cndba.cn/Expect-le/article/260

4.3  ACTIVE模式:

最容易阅读的模式

http://www.cndba.cn/Expect-le/article/260

SQL>SET LONG 1000000
SQL>SET FEEDBACK OFF
SQL>spool monitor_sql.html 
SQL> SELECT DBMS_SQLTUNE.report_sql_monitor(sql_id => '49z1nngjfdp9j',type=> ACTIVE) AS report FROM dual;
SQL>spool off


QQ图片20160920141534.png

 

4.4  生成所有SQL的概要

所有存储在V$SQL_MONITOR中的sql都会显示出来。http://www.cndba.cn/Expect-le/article/260

SQL> SET LONG 1000000
SQL> SET LONGCHUNKSIZE 1000000
SQL> SET LINESIZE 1000
SQL> SET PAGESIZE 0
SQL> SET TRIM ON
SQL> SET TRIMSPOOL ON
SQL> SET ECHO OFF
SQL> SET FEEDBACK OFF
SQL> SELECT DBMS_SQLTUNE.report_sql_monitor_list(type =>'TEXT',report_level => 'ALL') AS report FROM dual;


QQ图片20160920141428.png


版权声明:本文为博主原创文章,未经博主允许不得转载。

sql monitor

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
Expect-乐

Expect-乐

关注

Without the continuous bitter cold, there can be no fragrant plum blossom

  • 336
    原创
  • 6
    翻译
  • 100
    转载
  • 41
    评论
  • 访问:1553373次
  • 积分:1957
  • 等级:核心会员
  • 排名:第4名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ