SQL Monitor,你值得掌握的一个特性

    对于线上的SQL语句,看着执行计划cost还不错,但是实际执行的时候效果却有千壤之别,这是为什么呢?
    对于一个庞大的SQL语句,看着得到的执行计划却不知道瓶颈在哪里,SQL语句太复杂,但是执行计划更复杂,要读明白它掌握要领也不是一件容易的事情。
    碰到很多朋友问我,怎么去读一个执行计划,这个无论说的怎么细,似乎都不是很容易去理解,语言描述,纯文字描述和图形的效果还是有很大的差别。
    如果你在11g的版本中,SQL Monitor就是一个大大的福利,你值得掌握,如果你还没有好好掌握它,就实在太可惜了。
至于SQL Monitor更多的细节就不一一描述了,11g推出的这个特性其实和MySQL里的慢日志有些类似,MySQL里面的阈值要更低一些,SQL Monitor是5秒。一旦达到这个标准,就会进收集到v$sql_monitor这个视图中,可以得到详细的会话信息和执行计划。
    如果想单独定制,那么也不是一件难事。可以使用hint monitor来完成。比如这样的形式
select /*+ monitor */ count(*) from emp where  xxxxx
    如果确认不需要放入监控范围,也可以使用no_monitor来定制,比如这样的形式
select /*+ no_monitor */ count(*) from emp where  xxxxx
    查看生成的监控信息,可以使用如下的方式:
select dbms_sqltune.report_sql_monitor from dual;
    当然这些都是SQL Monitor常规的一些知识点,这些还不足以让我兴趣大开。我感兴趣的是它强大的UI展现能力。当然听起来这个似乎和这个特性好像关联不大,你看到效果就知道了。一个很复杂,抽象的事物如果用图形表示,要比文字丰富形象的多。
    得到SQL Monitor的报告,大体有以下几种格式。TEXT,HTML,ACTIVE三种
我们打一个比方。很多手机都会按照配置来冠以各种名号。



SQL Monitor的报告也是如此,TEXT格式是标准版,HTML是高配版,ACTIVE是尊享版
我们不来虚的,来实际看看效果。

文本格式的效果如下:


HTML格式的效果如下:
执行概览,会话信息,执行计划一目了然,非常贴心。

那么ACTIVE格式是什么意思呢,大体就是最炫,最全面的效果,还有一个小的flash效果。


有的朋友可能看到会说,这和HTML的效果有啥差别啊,有的,我再给一张图。
执行计划原来可以这么读。全表扫描,索引扫描,表连接信息都一目了然,越是复杂的执行计划这种方式越省事。


SQL文本和绑定变量的信息,点击SQL_ID就会弹出一个小窗口来。

好吧,看起来这么炫,想得到这个报告难不难呢,很简单就一个SQL语句就能搞定,绝对没有标题党的意思。
如果想写成shell脚本,也就是嵌入一个SQL语句即可。
tmp_sql_id=$1
sqlplus -s  / as sysdba<<eof
set pages 0
set long 99999999
set linesize 300
col comm format a200
set long 99999
SELECT dbms_sqltune.report_sql_monitor(
sql_id => '${tmp_sql_id}',
report_level => 'ALL',
type=>'TEXT',
base_path =>'http://www.jeanron100/sqlmon'
) comm
FROM dual;
EOF
唯一的差别就是在type的地方。TEXT,HTML的就设置为TEXT,HTML即可。如果是ACTIVE格式的,这个咱得稍说一些背景。
这个功能在Enterprise Manager中查看是很自然的一件事情,如果没有安装EM,我们不能因为这个专门去部署一个EM来不是。要达到同样的效果,就需要连接网络下载相应的格式,当然退一步来说,要做以下的一些辅助工作,还可以下载几个脚本到本地即可。
比如我们设置一个本地的目录结构,设置类似的站点http://www. jeanron100
就需要在本地创建一个jeanron100的目录
mkdir -p jeanron100/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
生成SQL语句的active报告语句如下:
SELECT dbms_sqltune.report_sql_monitor(
sql_id => '${tmp_sql_id}',
report_level => 'ALL',
type=>'ACTIVE',
base_path =>'http://www.jeanron100/sqlmon'
) comm
FROM dual;
把拷贝到的结果以HTML格式保存,在本地的目录下打开即可。其实感兴趣可以读一下里面的内容,里面大量使用了xml解析的方式。效果还是蛮不错的。值得推荐。
</eof

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23718752/viewspace-2125294/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/23718752/viewspace-2125294/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值