oracle sql优化论坛,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;

e7ba005b09aa0b6a86100f7c82df257a.png

建议还是改变Session就可以

alter session set statistics_level=ALL;

查看参数CONTROL_MANAGEMENT_PACK_ACCESS

show parameter CONTROL_MANAGEMENT_PACK_ACCESS;

21f3215c754133b45b4d016237c79f1e.png

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

cbf538619a0646489a8de21ef91c84d9.png

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等等信息

1e18219947942d4e5e497958a0a5327b.png

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

b7c20fda498177f27c68878d890b35d3.png

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;

文章来源: www.cnblogs.com,作者:smileNicky,版权归原作者所有,如需转载,请联系作者。

原文链接:https://www.cnblogs.com/mzq123/p/13163298.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值