专栏首页杨建荣的学习笔记shell脚本自动化采集性能sql(r2笔记39天)

shell脚本自动化采集性能sql(r2笔记39天)

通过v$sql_monitor能够实时采集可能存在的sql性能问题,但是每次问题发生的时候采取采取措施就有点“晚”了,我们需要防患于未然,把一些潜在问题提前发现,并加以解决。 如果有些sql执行很频繁,我们需要得到一个执行的报告,但是因为sql执行很频繁,每次都生成一个报告就显得有些过于消耗资源了。 现在想达到的目标就是能够在每天早上上班的时候能够得到一些已经生成的报告。如果有些sql已经生成过报告了,就不需要重复生成报告了,这样一切问题都在监控之中。 采用的脚本如下: DATE=`date '+%y%m%d'` sqlplus -s n1/n1 <<EOF set pages 0 set feedback off set linesize 100 set trimspool on col sql_id format a50 spool tmp_monitor_sql.lst_$DATE select sql_id from v\$sql_monitor where status='EXECUTING' and username='xxxx' group by sql_id; spool off; EOF ls -lrt *_rpt.lst_$DATE*|grep -v tmp|awk -v DATE=$DATE 'BEGIN{FS="_rpt.lst_"} {print $1 }'|awk '{print $9}'|sort > tmp_current_exist_sql sort tmp_monitor_sql.lst_$DATE > monitor_sql.lst_$DATE comm -13 tmp_current_exist_sql monitor_sql.lst_$DATE > tmp_monitor_sql_minus.lst issue_sql_cnt=`cat tmp_monitor_sql_minus.lst|wc -l` for((i=1;i< ${issue_sql_cnt};i++)) do tmp_sql_id=`sed -n ''$i'p' tmp_monitor_sql_minus.lst` sqlplus -s n1/n1 <<EOF set pages 0 set linesize 150 col comm format a200 set long 99999 spool ${tmp_sql_id}_rpt.lst_$DATE SELECT dbms_sqltune.report_sql_monitor( sql_id => '$tmp_sql_id', report_level => 'ALL', type=>'HTML' ) comm FROM dual; spool off; EOF done rm tmp_monitor_sql_minus.lst rm tmp_monitor_sql.lst_$DATE rm tmp_current_exist_sql rm monitor_sql.lst_$DATE

脚本运行后结果如下: 如果有sql在运行超过5秒,耗用了大量的资源,就会被记录下来。 [ora11g@rac1 tmp]$ ll total 876 -rw-r--r-- 1 ora11g dba 103889 Jul 20 03:44 4dtvhq9n8s751_rpt.lst_140720 -rw-r--r-- 1 ora11g dba 77917 Jul 20 03:44 5zruc4v6y32f9_rpt.lst_140720 -rw-r--r-- 1 ora11g dba 403473 Jul 20 03:44 63n9pwutt8yzw_rpt.lst_140720 -rw-r--r-- 1 ora11g dba 119744 Jul 20 03:44 7hdtv2wcb63my_rpt.lst_140720 如果下次运行脚本,报告已经存在,就不会重复生成报告了。 可以把这个脚本设为crontab或者nohup模式。

本文分享自微信公众号 - 杨建荣的学习笔记(jianrong-notes),作者:r2笔记39天

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2014-07-20

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 浅谈pl/sql (r3笔记第14天)

    关于pl/sql,可能大家熟悉而又陌生,熟悉是因为大家在工作中老是写sql,如果稍微改动一些,加入begin,end和控制结构,就是pl/sql了。:) 今...

    jeanron100
  • awr性能问题排查第一篇(r3笔记第42天)

    对于awr,里面涵盖的内容比较杂,有时候看报告的时候总是不知道该怎么下手。时间长了,可能会有一些阅读习惯或者心得。今天在看大师chris lawson的一篇博文...

    jeanron100
  • MyCAT中的DDL

    今天开发同学提了一个需求,是希望对某一个时间范围的表做DDL操作,看起来好像复杂度也不高。

    jeanron100
  • 算法与数据结构(一)

      用计算机实现问题求解,实质上就是在计算机中建立一个解决问题的模型。用来表示问题或处理问题的模型可以有不同的抽象形式:

    Hongten
  • git 在切换分支时有未提交的文件,怎么办? git stash

    用git checkout切换本地分支从b1到b2时, 如果b1的本地文件有修改, 会发生冲突。 (b1和b2不在一个commit id上)

    MickyInvQ
  • 各门户备战2016年奥运会,谁会赢在关键时刻?

    里约奥运会在5个月之后就开幕了,这一全世界的盛会已是媒体的黄金时刻。在中国,越来越多的民众习惯于通过互联网关注奥运会,这对于各大门户来说是巨大的利好——互联网本...

    罗超频道
  • 拓扑排序-HDU2647 Reward

    什么是拓扑排序? 简单来说,在做一件事之前必须先做另一(几)件事都可抽象为图论中的拓扑排序,比如课程学习的先后,安排客人座位等。 一个图能拓扑排序的充要条件...

    唔仄lo咚锵
  • Git知识总览(三) 分支的创建、删除、切换、合并以及冲突解决

    前两篇博客集中的聊了git的一些常用命令,具体请参见《Git知识总览(一) 从 git clone 和 git status 谈起》、《Git知识总览(二) g...

    lizelu
  • LeetCode Weekly Contest 41解题思路

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.n...

    用户1147447
  • 如何在Ubuntu 16.04上使用Icinga监视主机和服务

    Icinga是一个开源监控系统,用于监控网络主机和服务的运行状况。在本教程中,我们将使用Icinga设置两种不同类型的监视配置。第一种是基于对主机外部服务的简单...

    灬半痴

扫码关注云+社区

领取腾讯云代金券