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

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

原文发布于微信公众号 - 杨建荣的学习笔记(jianrong-notes)

原文发表时间:2016-09-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏杨建荣的学习笔记

通过Snapshot Standby来精确评估SQL性能 (r9笔记第73天)

最近处理了一个需求,比较紧急,映射到数据库层面是需要更新17万id的值,听起来是不少,根据数据架构进行了分析,发现目前是做了分库分表的方式,所以这17万的id在...

3133
来自专栏小俊博客

纯代码实现WordPress邀请码功能

3675
来自专栏DeveWork

制作WordPress侧边栏“热门文章”小工具并集成在主题中的方法

制作“热门文章”小工具的思路与文章《制作WordPress侧边栏“随机文章”小工具并集成在主题中的方法》提供的一致,如果你没看过这篇文章,不妨看看先。“热门文章...

21410
来自专栏美团技术团队

数据库运维必读的10个问题

本文中的问题精选自上期【你问我答】——数据库专题中读者的提问。【你问我答】是由美团点评技术团队推出的线上问答服务,你在工作学习中遇到的各种技术问题,都可以通过我...

37311
来自专栏Albert陈凯

Hbase二级索引

二级索引与索引Join是多数业务系统要求存储引擎提供的基本特性,RDBMS早已支持,NOSQL阵营也在摸索着符合自身特点的最佳解决方案。这篇文章会以Hbase做...

5194
来自专栏程序员的SOD蜜

还在写SQL的同志,去喝杯咖啡吧!

--标题可能比较“雷人”,但这是我今天早上的第一个感受。我们有一个同事昨天加班写了一大堆有关某些大表(字段很多的表)的增、删、查的SQL语句,看着哪些SQL语句...

2375
来自专栏数据和云

性能优化:监控索引的使用情况

黄玮(Fuyuncat),资深 Oracle DBA,从事 Oracle 数据库管理、维护与开发工作十余年,有丰富的大型数据库设计、开发与维护方面的经验,博客w...

3536
来自专栏程序人生 阅读快乐

SQL Server从入门到精通.pdf

《SQL Server从入门到精通》从初学者的角度出发,通过通俗易懂的语言、丰富多彩的实例,详细地介绍了SQL Server 2008开发应该掌握的各方面技术...

2242
来自专栏简书专栏

mysql必知必会

数据库是按照数据结构来组织、存储和管理数据的仓库,它产生于距今。 六十多年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不再仅仅是存储和管...

1191

所有您需要了解的关于Elasticsearch 5.0:索引管理

我们看到两种主要的Elasticsearch索引使用模式 - 全局索引和滚动索引。多年来,Elasticsearch增加了一些功能,可以极大地改善这些模式的工作...

4133

扫码关注云+社区

领取腾讯云代金券