来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/27067062/viewspace-2129635/

SQL Monitor Report

1. SQL Monitor简介

在Oracle Database 11g中,系统自动监控符合以下条件的SQL,并收集执行时的细节信息:
1)采用并行方式执行

2)单次执行消耗的CPU或IO超过5秒

3)通过使用/* +MONITOR*/  HINT的语句

系统收集的SQL信息会存储在V$SQL_MONITOR、V$SQL_PLAN_MONITOR视图中

2. SQL Monitor 参数设置

STATISTICS_LEVEL设置为:'TYPICAL'(缺省)或者 'ALL'

CONTROL_MANAGEMENT_PACK_ACCESS设置为:'DIAGNOSTIC+TUNING'

3. SQL Monitor report获取方法

SQL Monitoring可以采用以下3种方式展现:

1)EM:Performance  ——>右下角的SQL Monitoring ——>Monitored SQL Executions

2)SQL Developer:Tools ——>Monitor SQL

3)DBMS_SQLTUNE包 ——> DBMS_SQLTUNE.report_sql_monitor

其报告格式有:'TEXT','HTML','XML' ,'ACTIVE',其中'ACTIVE'只在11g R2以后才支持,使用HTML和Flash的方式显示动态的报告,需要从oracle官网读取相关联的Javascript和Flash。

备注:

如果不能连到Internet又想看ACTIVE Report可以下载相关的库文件到本地的HTTP服务器上,然后用BASE_PATH来制定库文件的位置。

在本地HTTP服务器上创建目录,然后下载下面的文件:

mkdir -p /var/www/html/sqlmon

cd /var/www/html/sqlmon

wget --mirror --no-host-directories --cut-dirs=1 http://download.oracle.com/otn_software/emviewers/scripts/flashver.js

wget --mirror --no-host-directories --cut-dirs=1 http://download.oracle.com/otn_software/emviewers/scripts/loadswf.js

wget --mirror --no-host-directories --cut-dirs=1 http://download.oracle.com/otn_software/emviewers/scripts/document.js

wget --mirror --no-host-directories --cut-dirs=1 http://download.oracle.com/otn_software/emviewers/sqlmonitor/11/sqlmonitor.swf

在调用函数时加上参数,比如:base_path => 'http://ipaddr/sqlmon'

4.          SQL Monitor report生成实例

语法:

DBMS_SQLTUNE.REPORT_SQL_MONITOR()

FUNCTION REPORT_SQL_MONITOR RETURNS CLOB

Argument Name                  Type                    In/Out Default?

------------------------------ ----------------------- ------ --------

SQL_ID                         VARCHAR2                IN     DEFAULT

SESSION_ID                     NUMBER                  IN     DEFAULT

SESSION_SERIAL                 NUMBER                  IN     DEFAULT

SQL_EXEC_START                 DATE                    IN     DEFAULT

SQL_EXEC_ID                    NUMBER                  IN     DEFAULT

INST_ID                        NUMBER                  IN     DEFAULT

START_TIME_FILTER              DATE                    IN     DEFAULT

END_TIME_FILTER                DATE                    IN     DEFAULT

INSTANCE_ID_FILTER             NUMBER                  IN     DEFAULT

PARALLEL_FILTER                VARCHAR2                IN     DEFAULT

PLAN_LINE_FILTER               NUMBER                  IN     DEFAULT

EVENT_DETAIL                   VARCHAR2                IN     DEFAULT

BUCKET_MAX_COUNT               NUMBER                  IN     DEFAULT

BUCKET_INTERVAL                NUMBER                  IN     DEFAULT

BASE_PATH                      VARCHAR2                IN     DEFAULT

LAST_REFRESH_TIME              DATE                    IN     DEFAULT

REPORT_LEVEL                   VARCHAR2                IN     DEFAULT

TYPE                           VARCHAR2                IN     DEFAULT

SQL_PLAN_HASH_VALUE            NUMBER                  IN     DEFAULT

4.1 Text文本格式

1)  Sqlplus 参数设置查看


show parameter statistics_level;

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

statistics_level                     string      TYPICAL


show parameter CONTROL_MANAGEMENT_PACK_ACCESS;

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

control_management_pack_access       string      DIAGNOSTIC+TUNING

2)  执行模拟SQL

[oracle@node4 sqlmonitor]$ sqlplus -S /nolog

conn /as sysdba;

select /* +moniotr*/* from scott.dept where deptno<=30;

DEPTNO DNAME          LOC

---------- -------------- -------------

10 ACCOUNTING     NEW YORK

20 RESEARCH       DALLAS

30 SALES          CHICAGO

3)  v$sql_monitor获取模拟SQL信息

col sql_text for a60;

set line 200;

set pagesize 20000;

select sql_id,sql_text from v$sql_monitor where sql_text like '%scott.dept%';

SQL_ID        SQL_TEXT

------------- ------------------------------------------------------------

74qqqwntwzxb1 select /*+ Monitor*/ * from scott.dept where deptno=10

4)  生成text类型报告

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       => '74qqqwntwzxb1',

TYPE         => 'TEXT',

REPORT_LEVEL => 'ALL') AS REPORT

FROM dual;

spool off

5)  展示报告内容

4.2 HTML格式

1)生成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       => '74qqqwntwzxb1',

TYPE         => 'HTML',

REPORT_LEVEL => 'ALL') AS REPORT

FROM dual;

spool off

2)html类型报告展示

4.3 Active格式

如不能联网,需要下载相应的flash组件、脚本,详细见SQL Monitor report获取方法

1)active类型报告生成

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       => '74qqqwntwzxb1',

TYPE         => 'ACTIVE',

REPORT_LEVEL => 'ALL',

BASE_PATH    => 'http://ipaddr/sqlmon') AS report

FROM dual;

spool off

2)active类型报告展示

可以通过启动http服务,将文件放置在发布目录下,通过http://ipaddr/sqlmon/report_sql_monitor_active.html形式查看(需下载相应的脚本和组件)

或者拿到windows本地查看

5.          SQL Monitor report其他方法使用

1DBMS_SQLTUNE.REPORT_SQL_MONITOR_LIST

FUNCTION REPORT_SQL_MONITOR_LIST RETURNS CLOB
 Argument Name                  Type                    In/Out Default?
 ------------------------------ ----------------------- ------ --------
 SQL_ID                         VARCHAR2                IN     DEFAULT
 SESSION_ID                     NUMBER                  IN     DEFAULT
 SESSION_SERIAL                 NUMBER                  IN     DEFAULT
 INST_ID                        NUMBER                  IN     DEFAULT
 ACTIVE_SINCE_DATE              DATE                    IN     DEFAULT
 ACTIVE_SINCE_SEC               NUMBER                  IN     DEFAULT
 LAST_REFRESH_TIME              DATE                    IN     DEFAULT
 REPORT_LEVEL                   VARCHAR2                IN     DEFAULT
 AUTO_REFRESH                   NUMBER                  IN     DEFAULT
 BASE_PATH                      VARCHAR2                IN     DEFAULT
 TYPE                           VARCHAR2                IN     DEFAULT

需要Oracle 11g R2以上版本。此函数用于产生一个对监控SQL的汇总页,类似于EM中的“Monitored SQL Executions”。

常用参数:TYPE和REPORT_LEVEL,用法与REPORT_SQL_MONITOR类似。

例如:

conn /as sysdba;
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

2DBMS_SQLTUNE.REPORT_SQL_DETAIL

FUNCTION REPORT_SQL_DETAIL RETURNS CLOB
 Argument Name                  Type                    In/Out Default?
 ------------------------------ ----------------------- ------ --------
 SQL_ID                         VARCHAR2                IN     DEFAULT
 SQL_PLAN_HASH_VALUE            NUMBER                  IN     DEFAULT
 START_TIME                     DATE                    IN     DEFAULT
 DURATION                       NUMBER                  IN     DEFAULT
 INST_ID                        NUMBER                  IN     DEFAULT
 DBID                           NUMBER                  IN     DEFAULT
 EVENT_DETAIL                   VARCHAR2                IN     DEFAULT
 BUCKET_MAX_COUNT               NUMBER                  IN     DEFAULT
 BUCKET_INTERVAL                NUMBER                  IN     DEFAULT
 TOP_N                          NUMBER                  IN     DEFAULT
 REPORT_LEVEL                   VARCHAR2                IN     DEFAULT
 TYPE                           VARCHAR2                IN     DEFAULT
 DATA_SOURCE                    VARCHAR2                IN     DEFAULT
 END_TIME                       DATE                    IN     DEFAULT
 DURATION_STATS                 NUMBER                  IN     DEFAULT
需要Oracle 11g R2以上版本。此函数用于根据各种条件参数(包括:start_time, end_time, duration, inst_id, dbid, event_detail, bucket_max_count, bucket_interval, top_n, duration_stats),产生比使用REPORT_SQL_MONITOR更加详细的SQL报告。

例如:

conn /as sysdba;
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_DETAIL_HTML.HTML
SELECT dbms_sqltune.REPORT_SQL_DETAIL(SQL_ID   => '74qqqwntwzxb1',
                                 TYPE         => 'active',
                                 report_level => 'ALL') AS report
FROM dual;
SPOOL OFF

ERROR:
ORA-13971: Component "sql_detail" unknown
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 95
ORA-06512: at "SYS.DBMS_REPORT", line 166
ORA-06512: at "SYS.DBMS_REPORT", line 612
ORA-06512: at "SYS.DBMS_REPORT", line 1079
ORA-06512: at "SYS.DBMS_REPORT", line 1135
ORA-06512: at "SYS.DBMS_SQLTUNE", line 20101
ORA-06512: at line 1
(上述错误在指定html格式,调整为active格式即可

可以针对topSQL

conn /as sysdba;
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_DETAIL.HTML
SELECT dbms_sqltune.report_sql_detail(top_n        => 5,
                                 TYPE         => 'active',
                                 report_level => 'ALL') AS report
FROM dual;
SPOOL OFF

【转载】sql monitor的更多相关文章

  1. sql monitor生成不了报告& FFS hint不生效两个问题思考

    事情的发生就是这么偶然,一步步的深入才能汲取到更深入的知识~~ -------------------START------------------------------------------- ...

  2. DB SQL Monitor 阻塞及等待事件监控工具

    SQL Monitor Designed By zhaoguan wang 说明------------------------------------------------------------ ...

  3. 11g SQL Monitor

    1,首先确认两个参数的值 SQL> show parameter statistics_level NAME                     TYPE     VALUE ------- ...

  4. 利用 SQL Monitor 查看语句运行状态步骤

    利用 SQL Monitor 查看语句运行状态步骤 1.确定语句被 SQL Monitor 监控 SQL> SELECT * FROM GV$SQL_MONITOR WHERE sql_id=' ...

  5. [SQL]透過redgate SQL Monitor 來找出 ASYNC_NETWORK_IO 問題

    原文:[SQL]透過redgate SQL Monitor 來找出 ASYNC_NETWORK_IO 問題 最近因為在查一個SQL的效能問題,透過 sys.dm_os_wait_stats 來取得To ...

  6. 我的工具:Db SQL Monitor

    SQL Monitor 是一款界面简洁.绿色小巧的sql活动监视器,它能够帮助用户对 SQL Server 运行进程和Job进行实时监视,您可以查看当前执行的SQL/命令并终止. 工具下载地址:htt ...

  7. DB SQL Monitor 会话状态及等待事件监控工具

    DB SQL Monitor v1.7.6       Designed by Wang Zhaoguan   工具说明 --------------------------------------- ...

  8. [转载]sql 盲注之正则表达式攻击

    [转载]sql 盲注之正则表达式攻击 -----------------------------------------MYSQL 5+-------------------------------- ...

  9. Oracle SQL调优系列之SQL Monitor Report

    @ 目录 1.SQL Monitor简介 2.捕捉sql的前提 3.SQL Monitor 参数设置 4.SQL Monitor Report 4.1.SQL_ID获取 4.2.Text文本格式 4. ...

随机推荐

  1. Centos6安装和配置etcd3

    etcd 是一个高可用的 Key/Value 存储系统,主要用于分享配置和服务发现.etcd 的灵感来自于 ZooKeeper 和 Doozer,侧重于: 简单:支持 curl 方式的用户 API ( ...

  2. CentOS7+CDH5.14.0安装CDH错误排查:Hue错误: Load Balancer 该角色的进程启动失败

    Hue错误: Load Balancer 该角色的进程启动失败 解决办法:主机能够联网情况下,直接运行如下命令即可在线安装openssl.httpd 需要提前安装环境  httpd, mod_ssl ...

  3. SpringBoot集成MongoDB

    前言 之前写了各种nosql数据库的比较,以及相关理论,现在我在本地以springboot+MongoDB框架,探究了具体的运行流程,下面总结一下,分享给大家. 运行前准备 安装并启动MongoDB应 ...

  4. python简单实现tftp客户端(基于udp)

    TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂.开销不大的文件传输服务 ...

  5. Linux 学习笔记 3:Shell 基础

    1.Shell的工作原理 Shell是用户和操作系统之间的接口.当用户登录系统,有一个Shell进程随之启动,并在用户注销时终止.用户输入的命令是Shell输入. 处理命令的步骤:查找命令中的元字符: ...

  6. 如何监听Element组件<el-input>标签的回车事件

    一.现象 表单提交时需要处理输入框的回车事件,一般的原生input标签可以用@keyup.enter="onSubmit"(tips:onSubmit为定义的方法) 二.解决 1. ...

  7. leetcode5:最长回文子串

    给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为1000. 示例 1: 输入: "babad" 输出: "bab" 注意: &quo ...

  8. java socket编程(一)简介

    #Java TCP Ip编程 其实下面几张图片就可以解释简单解释tcp-ip协议的大体流程了. ###计算机网络,分组报文和协议 网络是一组通过通信信道相互连接的机器组成. 组与组之间通过路由器连接 ...

  9. python基础:条件循环字符串

    一. 完成完整的温度转换程序 使用while True 循环,摄氏度转换为华氏度按1,华氏度转换成摄氏度按2,按其他数字退出循环. while True: a = int(input('摄氏度转换为华 ...

  10. python3 第三十一章 - 模块

    1.什么是模块 如果从Python解释器退出并再次输入,您所做的定义(函数和变量)将丢失.因此,如果要编写一个稍长的程序,最好使用文本编辑器为解释器准备输入,并以该文件作为输入运行它.这称为创建脚本. ...