monitor top sql html,SQL Monitor Report 使用详解

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

wget

--mirror --no-host-directories --cut-dirs=1

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

在调用函数时加上参数,比如:base_path

=> ''

4.SQL Monitor report生成实例

语法:

DBMS_SQLTUNE.REPORT_SQL_MONITOR()

FUNCTION

REPORT_SQL_MONITOR RETURNS CLOB

Argument NameTypeIn/Out Default?

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

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

SQL_IDVARCHAR2INDEFAULT

SESSION_IDNUMBERINDEFAULT

SESSION_SERIALNUMBERINDEFAULT

SQL_EXEC_STARTDATEINDEFAULT

SQL_EXEC_IDNUMBERINDEFAULT

INST_IDNUMBERINDEFAULT

START_TIME_FILTERDATEINDEFAULT

END_TIME_FILTERDATEINDEFAULT

INSTANCE_ID_FILTERNUMBERINDEFAULT

PARALLEL_FILTERVARCHAR2INDEFAULT

PLAN_LINE_FILTERNUMBERINDEFAULT

EVENT_DETAILVARCHAR2INDEFAULT

BUCKET_MAX_COUNTNUMBERINDEFAULT

BUCKET_INTERVALNUMBERINDEFAULT

BASE_PATHVARCHAR2INDEFAULT

LAST_REFRESH_TIMEDATEINDEFAULT

REPORT_LEVELVARCHAR2INDEFAULT

TYPEVARCHAR2INDEFAULT

SQL_PLAN_HASH_VALUENUMBERINDEFAULT

4.1Text文本格式

1)Sqlplus参数设置查看

show

parameter statistics_level;

NAMETYPEVALUE

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

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

statistics_levelstringTYPICAL

show

parameter CONTROL_MANAGEMENT_PACK_ACCESS;

NAMETYPEVALUE

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

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

control_management_pack_accessstringDIAGNOSTIC+TUNING

2)执行模拟SQL

[oracle@node4 sqlmonitor]$ sqlplus -S

/nolog

conn /as sysdba;

select /* +moniotr*/* from

scott.dept where deptno<=30;

DEPTNO

DNAMELOC

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

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

10 ACCOUNTINGNEW YORK

20 RESEARCHDALLAS

30 SALESCHICAGO

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_IDSQL_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)展示报告内容

e56c8a643df1ed7625f857fbd5c588c6.png

4.2HTML格式

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类型报告展示

cec8a0faa0735e9da350184948fa4c29.png

4.3Active格式

如不能联网,需要下载相应的flash组件、脚本,详细见

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=>

'') AS report

FROM dual;

spool off

2)active类型报告展示

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

或者拿到windows本地查看

15279c0762c52ca84c1cbf03e4104d75.png

5.SQL Monitor report其他方法使用

1)DBMS_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

ece69fe22a17705cea7d8cc40f78ea7f.png

2)DBMS_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格式即可)

a7c0a8fcc99d1e3459c1984548a26168.png

1ebc00875e4d1a0269fca6b8103979ec.png

可以针对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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值