小知识:SQL Monitor Report的使用

科技资讯 投稿 5500 0 评论

小知识:SQL Monitor Report的使用

中,提到的两个SQL对比,使用的是传统的dbms_xplan.display_cursor方式来查看执行计划,好处是文本输出的通用性强,基本信息也都有。
但如果大家参加过我们的RWP培训,就会发现O原厂强烈推荐大家使用的一个工具是 SQL Monitor Report,且要使用ACTIVE的类型,这可以让看SQL执行计划变得赏心悦目。

    1.准备通用的sqlmon.sql脚本
  • 2.执行两条SQL,并确认各自的sql_id
  • 3.调用sqlmon脚本生成SQL Monitor Report
  • 4.对比两个SQL Monitor Report

1.准备通用的sqlmon.sql脚本

为了更具通用性,这里以SQL_ID为输入条件:

set pagesize 0 echo off timing off linesize 1000 trimspool on trim on long 2000000 longchunksize 2000000 feedback off
spool sql_monitor_&sql_id\.htm
select dbms_sqltune.report_sql_monitor(type=>'ACTIVE', sql_id=>'&sql_id', report_level=>'ALL' monitor_report from dual;
spool off

2.执行两条SQL,并确认各自的sql_id

这次使用更明确的hints来区分是否使用In-Memory和确保都可以生成SQL Monitor Report:

--SQL1:
select /*+ monitor */ count(* from L

sql_id: ahtu40vr8dbhu

--SQL2:
select /*+ monitor no_inmemory */ count(* from L

sql_id: 7rzcsju067wr0

获取sql_id有多种方式,其实最方便的就是也可以通过传统看执行计划的方式来获取。

3.调用sqlmon脚本生成SQL Monitor Report

SQL> @sqlmon
Enter value for sql_id: ahtu40vr8dbhu
Enter value for sql_id: ahtu40vr8dbhu

SQL> @sqlmon
Enter value for sql_id: 7rzcsju067wr0
Enter value for sql_id: 7rzcsju067wr0

4.对比两个SQL Monitor Report

SQL1的SQL Monitor Report:

除了之前执行时就体验的执行时间差异,其对IO资源的实际消耗也可以非常直观的看到,二者有很大的差异。

编程笔记 » 小知识:SQL Monitor Report的使用

赞同 (32) or 分享 (0)
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽