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模式。

优质内容筛选与推荐>>
1、显示ubuntu 10.4右上角网络图标
2、147. Insertion Sort List
3、基于角色权限管理
4、phpMyadmin新建数据库,添加用户并配置用户权限
5、Java 多态


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号