前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SQL Monitor,你值得掌握的一个特性(r10笔记第29天)

SQL Monitor,你值得掌握的一个特性(r10笔记第29天)

作者头像
jeanron100
发布2018-03-19 18:01:50
8090
发布2018-03-19 18:01:50
举报

对于线上的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解析的方式。效果还是蛮不错的。值得推荐。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-09-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 杨建荣的学习笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档