当前位置:  数据库>oracle

通过Shell脚本抓取AWR报告中的问题SQL

    来源: 互联网  发布时间:2017-06-20

    本文导语: awr报告中的sql明细部分基本必看的部分,尤其是SQL Order by Elapsed time这个部分,能够很清晰的看到哪些sql语句占用了较多的DB time,所占的比例。这个可以作为调优时的一个重要参考,可以有针对性的来看哪些sql需要格外关注。 比...

awr报告中的sql明细部分基本必看的部分,尤其是SQL Order by Elapsed time这个部分,能够很清晰的看到哪些sql语句占用了较多的DB time,所占的比例。这个可以作为调优时的一个重要参考,可以有针对性的来看哪些sql需要格外关注。

比如说我们得到了一个awr报告,Elapsed time这个部分的内容如下。可以很明显看出sql_id为dfb15m5s2uwmc的sql需要格外关注,因为它占用了近一半的DB time.

Elapsed Time (s)Executionsper Exec (s)%Total%CPU%IOSQL IdSQL ModuleSQL Text 3,601.90 0   48.52 99.77 0.16 dfb15m5s2uwmc JDBC Thin Client SELECT :1, machinecode, cn, co... 1,612.04 21 76.76 21.71 99.97 0.00 8tmf11fvxy09j JDBC Thin Client SELECT ROUND(AVG(SUM(END_TIME... 1,593.80 20 79.69 21.47 99.97 0.00 cy55p6nrd31db JDBC Thin Client SELECT MAX(USER_CLASS) FROM S... 298.34 20 14.92 4.02 99.96 0.00 29tdwfv5d9s4f JDBC Thin Client SELECT NVL(SUM(OTAL), ...

awr提供的功能集很完整,如果我们能够更快的定位出来哪些sql占用了较多的DB time而不用每次都去生成一个awr报告,其实也是可以实现的,我们可以定制。

部分日志如下:
. . exported "SYS"."WRH$_SQL_PLAN"                      432.1 KB    1089 rows
 . . exported "SYS"."WRH$_LATCH":"WRH$_LATCH_3645037571_0"  198.6 KB    3871 rows
 . . exported "SYS"."WRH$_SYSMETRIC_HISTORY"              180.1 KB    3600 rows

可以看到awr的基表是wrh$开头的,这个和我们常用的数据字典表息息相关。
 比如sqlstat,数据字典里的历史数据就把wrh$换位dba_hist即可。
 我们查看dba_hist_sqlstat的基表,其实发现就是wrh$这样的基表。
$ ksh showdict.sh DBA_HIST_SQLSTAT
 object_details
 OWNER                          OBJECT_ID DATA_OBJECT_ID OBJECT_NAME                    OBJECT_TYPE
 ------------------------------ ---------- -------------- ------------------------------ -------------------
 SYS                                  9409                DBA_HIST_SQLSTAT              VIEW
 PUBLIC                              9410                DBA_HIST_SQLSTAT              SYNONYM
 synonym_details
 OWNER                          SYNONYM_NAME
 ------------------------------ ------------------------------
 PUBLIC                        DBA_HIST_SQLSTAT

 view_details
 VIEW_NAME                      TEXT
 ------------------------------ --------------------------------------------------------------------------------
 DBA_HIST_SQLSTAT              select sql.snap_id, sql.dbid, sql.instance_number,
                                xxxx  from WRM$_SNAPSHOT sn, WRH$_SQLSTAT sql
                                  where    sn.snap_id        = sql.snap_id
                                        and sn.dbid            = sql.dbid
                                        and sn.instance_number = sql.instance_number
                                        and sn.status          = 0

那么我们就可以直接从这些数据字典历史表里去查看所需要的信息而不用每次都重新生成一个awr报告。
 当然实现的过程也略微费了一些周折,把脚本稍一加工,就成了shell版本。
sqlplus -s $DB_CONN_STR@$SH_DB_SID


    
 
 

您可能感兴趣的文章:

  • c# HttpWebRequest通过代理服务器抓取网页内容应用介绍
  • C#实现通过程序自动抓取远程Web网页信息的代码
  • 自定义Adapter并通过布局泵LayoutInflater抓取layout模板编辑每一个item实现思路
  • 红帽redhat下通过脚本和yum安装docker容器引擎的详细步骤
  • C语言调用shell脚本后,通过何种方法能获取脚本中变量的值
  • linux能够通过执行脚本添加oracle数据库的用户吗
  • linux下如何通过sh脚本切换root?
  • window下通过ftp执行linux脚本?
  • 通过shell脚本修改终端标题
  • 如何通过shell脚本遍历文件夹
  • 请问如何通过shell脚本判断本机是否已经连通某个主机。只有连通后才走下一步?
  • 多网卡多IP情况下如何通过脚本获取当前登录终端使用的ip?
  • 急,在线等待,Java程序怎样在linux下通过脚本启动时自动运行?
  • 想通过shell脚本编程实现:改写文本文件(完全改写和部分替换)
  • 通过脚本清空标签p中的class名和style 原创
  • 直接在终端启动程序和通过脚本或者exec函数执行有何不同?
  • 通过短信发送LOG归类号码发送情况的shell脚本
  • 请教脚本中如何判断文件是否通过ftp传输成功问题
  • 高分求救!怎样把shell脚本通过SQL语句查询的结果写到一个文件中?
  • linux数据库备份并通过ftp上传脚本分享
  • 通过什么工具编写shell脚本更方面直观
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 我用newwin()的时候编译通过了,可是运行的时候报告Segmentation fault
  • 通过javascript实现DIV居中,兼容各浏览器版本
  • applet可以不通过数字签名,通过设置IE直接在本地访问本地文件吗
  • php通过socket_bind()设置IP地址代码示例
  • 我使用.net编译通过,但是使用g++编译不能通过。总是提示我undefined reference to ~myclass()
  • 通过javascript库JQuery实现页面跳转功能代码
  • 紧急求救!能通过jdbc怎样连接sqlsever 然后通过 for xml 关键字得到xml流吗?
  • c#通过委托delegate与Dictionary实现action选择器代码举例
  • 我想我的网站屏蔽掉通过某些网站过来的访问,我想通过htaccess 文件来做,请大家帮帮我。
  • linux下通过crond实现自动执行程序
  • 如何通过INTERNET访问通过共项一条线路上网的局域网中的机器???
  • 通过docker commit命令保存对docker容器的修改
  • 为什么g++编译通过了,而gcc却编译通过不了???
  • 通过docker run命令运行新的docker镜像
  • 请指点: 在windows下能否通过程序来获取linux下的用户列表,甚至通过自己写的windows程序界面增加修改linux的用户
  • 通过docker ps命令检查运行中的docker镜像
  • Jbuilder第一次编译说缺包,引入通过!然后把原来引入的注释,又通过!上帝,救我!
  • Session id实现通过Cookie来传输方法及代码参考
  • 红旗Linux主机可以通过127.0.0.1访问,但如何是连网的Win2000机器通过Linux的IP去访问Linux
  • 通过docker search命令搜索可用docker镜像
  • 请指点: 在windows下能否通过程序来获取linux下的用户列表,甚至通过自己写的windows程序界面增加修改linux的用户 100分相赠
  • Python3通过request.urlopen实现Web网页图片下载
  • 工作站Redhat Linux7.2如何通过NT4.0 proxy代理服务器上网,我不能通过其验证!请高手指点思路和方法!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3