博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
通过shell脚本监控sql执行频率
阅读量:2446 次
发布时间:2019-05-10

本文共 1949 字,大约阅读时间需要 6 分钟。

在生产环境中,可能会存在各种潜在的sql问题,比如由于硬件资源导致,如果影响到了IO,CPU,就会导致一些本来运行很快的sql语句变慢或者系统响应严重减缓。

比如由于数据库的一些设置导致执行计划的问题,sql_profile导致的执行计划稳定带来的性能不稳定,表中统计信息的变更导致的执行计划的变化等等。
有时候等到问题发生的时候,可能已经发生较长的一段时间了。如果想一下子定位问题还是很困难的,在sql_id没有发生变化的情况下,如果要查看语句的执行频率,一种可能就是通过在awr中筛查,但是可行性太差。毕竟耗时费力,还不灵活,很有可能问题sql的执行时间再特定的几个时间段内,那么完整的抽取也就有些冗余了,针对性不强。这个时候可以使用脚本来抽取DBA_HIST_SQLSTAT的信息,然后结合快照信息,得到一个快照级的sql语句执行情况。
shell脚本的内容如下:

sqlplus -s < set linesize 200

col BEGIN_INTERVAL_TIME format a30
set pages 50
select * from (
select
BEGIN_INTERVAL_TIME,
SQL_ID,
 sum(CPU_TIME_DELTA),
sum(DISK_READS_DELTA),
sum(Executions_total),
sum(EXECUTIONS_DELTA),
count(*)
from
DBA_HIST_SQLSTAT a, dba_hist_snapshot s
where
s.snap_id = a.snap_id
and to_char(s.begin_interval_time,'yyyymmdd')='$3'
and EXTRACT(HOUR FROM S.END_INTERVAL_TIME) between $1 and $2
and sql_id='$4'
group by
SQL_ID,
executions_total,
EXECUTIONS_DELTA,
BEGIN_INTERVAL_TIME
order by
sum(CPU_TIME_DELTA) desc)
where rownum <20;

exit
EOF
执行脚本的情况如下:
我们想查看在2014年11月9号的1点到22点之间,sql_id 7sx5p1ug5ag12的执行频率,得到的结果如下:

ksh showsqlhist.sh 1 22 20141109 7sx5p1ug5ag12

BEGIN_INTERVAL_TIME            SQL_ID        SUM(CPU_TIME_DELTA) SUM(DISK_READS_DELTA) SUM(EXECUTIONS_TOTAL) SUM(EXECUTIONS_DELTA)   COUNT(*)

------------------------------ ------------- ------------------- --------------------- --------------------- --------------------- ----------
09-NOV-14 05.00.39.436 AM      7sx5p1ug5ag12             1071833                     0                 59785                 11712          1
09-NOV-14 12.00.25.211 AM      7sx5p1ug5ag12             1040858                     0                 48075                 12052          1
可以简单的验证一下。比如我们想查看12:00左右的时候sql_id 7sx5p1ug5ag12 的执行情况。来得到一个awr报告。

Executions Rows Processed Rows per Exec Elapsed Time (s) %CPU %IO SQL Id SQL Module SQL Text
12,052 12,052 1.00 1.03 101.5 0 DBMS_SCHEDULER SELECT SPARE4 FROM SYS.OPTSTAT...
或者来反证,可能绝大多数时候发现问题的时候,我们会生成awr报告,如果看到某些sql语句可能存在问题,可以使用脚本得到一个语句的执行频率,结合快照来看更加具有针对性。
对于排查问题来说还是有一定的帮助的。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23718752/viewspace-1327832/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/23718752/viewspace-1327832/

你可能感兴趣的文章
unity 粒子系统反弹_零反弹-最佳电子邮件验证系统
查看>>
rail_deviceid_C和C ++中的Rail Fence密码程序[加密和解密]
查看>>
数字转日期 pl/sql_交换两个数字的PL / SQL程序
查看>>
stl set容器_C ++ STL设置容器– std :: set
查看>>
HTML和HTML5之间的区别
查看>>
android mvp示例_Android使用SwipeRefreshLayout示例向下拉或向下滑动以刷新
查看>>
在Android中获取当前日期的4种方法
查看>>
windows便笺_如何将便笺提醒附加到Windows和应用程序
查看>>
加密货币钱包提供商_每日新闻摘要:一位加密货币钱包开发者为了保护用户而黑客攻击
查看>>
chromebook刷机_每日新闻摘要:Google终止了将Windows引入Chromebook的项目
查看>>
vue alexa:_免费下载:在任何PC上使用Alexa免提
查看>>
2019新闻列表_每日新闻摘要:Google I / O 2019的期望
查看>>
如何修复破坏大照片的Undertow
查看>>
电子书pdf文件网站_如何转换PDF文件以便于阅读电子书
查看>>
如何在PowerPoint中水平翻转图片
查看>>
如何从Excel列表中的Word中创建邮件标签
查看>>
如何在Linux启动时轻松挂载分区
查看>>
outlook 加载配置项_如何禁用Outlook加载项进行故障排除
查看>>
如何导出或删除Outlook.com搜索历史记录
查看>>
dd-wrt固件_如何使用DD-WRT优先安排网络流量
查看>>