shell脚本自动化采集性能sql

简介:

通过v$sql_monitor能够实时采集可能存在的sql性能问题,但是每次问题发生的时候采取采取措施就有点“晚”了,我们需要防患于未然,把一些潜在问题提前发现,并加以解决。

如果有些sql执行很频繁,我们需要得到一个执行的报告,但是因为sql执行很频繁,每次都生成一个报告就显得有些过于消耗资源了。
现在想达到的目标就是能够在每天早上上班的时候能够得到一些已经生成的报告。如果有些sql已经生成过报告了,就不需要重复生成报告了,这样一切问题都在监控之中。

采用的脚本如下:

DATE=`date '+%y%m%d'`
sqlplus -s n1/n1 < 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 < 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模式。

本文转自ICT时空dbasdk的博客,原文链接: shell脚本自动化采集性能sql ,如需转载请自行联系原博主。

相关文章
|
23天前
|
弹性计算 Shell Perl
ecs服务器shell常用脚本练习(二)
【4月更文挑战第1天】shell代码训练(二)
106 1
|
26天前
|
Java Shell
SpringBoot启动脚本Shell
SpringBoot启动脚本Shell
17 0
|
28天前
|
jenkins 持续交付
Jenkins自动化部署脚本
Jenkins自动化部署脚本
28 0
|
3天前
|
Java 关系型数据库 MySQL
Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
【4月更文挑战第12天】Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
28 3
|
2天前
|
Linux Shell Android开发
自动化脚本之GPIO/LED相关适用于Android/Linux
自动化脚本之GPIO/LED相关适用于Android/Linux
13 0
|
6天前
|
运维 监控 Shell
利用Shell脚本编写局域网监控软件:实时监测主机连接情况
本文介绍了如何使用Shell脚本创建一个局域网监控工具,以实时检查主机连接状态。脚本包括扫描IP地址范围检测主机可达性及使用`netstat`监控ESTABLISHED连接。此外,还展示了如何每60秒将连接数数据自动提交到指定网站API,以便实时跟踪网络活动。这个自动化监控系统有助于提升网络安全性和故障排查效率。
27 0
|
7天前
|
Shell
Shell脚本之流程控制语句
Shell脚本之流程控制语句
|
8天前
|
JSON 运维 监控
训练shell常用脚本练习(三)
【4月更文挑战第14天】shell代码训练(三)
29 1
|
12天前
|
存储 弹性计算 Shell
ecs服务器shell常用脚本练习(十)
【4月更文挑战第11天】shell代码训练(十)
143 0
|
12天前
|
弹性计算 Shell Go
ecs服务器shell常用脚本练习(九)
【4月更文挑战第10天】shell代码训练(八)
138 0

热门文章

最新文章