12.Oracle杂记——Oracle等待事件性能监控脚本
在第10篇中,列了一个执行脚本但是感觉还是太粗,缺少针对性。对此又进行了一些优化和雕琢。雕琢算不上,只是进行了揣摩。
原型脚本集成的命令太多太散,不能精确分析问题,所以进行了分治。
脚本名字从原先的select_dbinfo.exe改为dbwaiteventmon.exe
更加形象,当然其中和wait无关的监控后续也会重新进行整理。
考虑到数值动态变化,会话与系统统计数据的差异,各类相关信息区别和联系;蛤蟆初步规划如下,当然此处只是个规划,后续可能会改变。如有改变后续再加以说明,很多在可以图形化OEM点击得到,而且非常直观,此处实现用于学习目的和给文本爱好者的朋友。
等待事件监控:dbwaiteventmon.exe
用于错误故障诊断监控:dberrfind.exe
诊断磁盘IO类:dbiomon.exe
诊断内存命中类:dbhitratiomon.exe
诊断表索引类:dbtableindexmon.exe
诊断表空间类:dbtbspacetmon.exe
诊断SQL类:dbsqlmon.exe
诊断进程类:dbprocessmon.exe
诊断会话类:dbsessionmon.exe
报告类:dbreport.exe
此篇主要是实现等待事件动态监控:dbwaiteventmon.exe
据说等待事件从ORACLE7.0.12开始的,对此不做任何评论,这种历史错了又何妨呢?
在12C 中共有等待事件:1650种,记住每个等待事件的可能性几乎是0. 如果能全记住,蛤蟆建议去参加最强大脑,但是生活中没记住可以查的,只要知道哪里可以查找即可。
主要分为IDLE和NON-IDLE的,我们关系NON-IDLE的等待。
当前实现的功能如下:
$ sh dbwaiteventmon.sh
Invalid Arguments!
pls use like this : ./dbwaiteventmon.exe [NUMBER ]
the NUMBER can be from 1 to 100
[1] show the wait event's parameters meaning
[2] show the specified SESSION's current all wait,you should specify the SESSIONID
[3] show the specified SESSION's history TOP 10 wait,you should specify theSESSION ID
[4] show ALL SESSION's current wait
[5] show SYSTEM's TOP 10 wait event (the statistical information begin withinstance started)
[6] show SYSTEM's latch wait,gets,misses,sleeps, need latch name input
[7] get the last Minuts's wait event,you can define how minutes
[8] get the waitevent which waited more than ? seconds,you can control thesecond number
[9] get database wait time ratio
共9个功能。
分别是:
1 显示等待事件的参数含义
2 显示指定会话的当前所有等待,需要输入会话ID
3 显示指定会话的TOP 10历史等待,需要输入会话ID
4显示所有会话的当前等待
5 显示系统TOP 10等待事件
6 显示SYSTEM LATCH的WAITS,GETS,MISSES,SLEEPS,需要输入LATCH名字
7 获取最后几分钟等待事件,可以定义多少分钟
8 获取 超过多少秒的等待事件,可以输入多少秒
9 获取数据库等待事件占总体的比例,这个颗粒度比较大。
后续蛤蟆会不断更新,如果有更新会直接传到CSDN上。
下载地址:http://download.csdn.net/detail/notbaron/9447082
后续几篇的小工具也已经一并打包到里面,大家可以直接下载尝试一下。