欢迎来到天天文库
浏览记录
ID:34740197
大小:126.68 KB
页数:7页
时间:2019-03-10
《修改nagios的checkoracle脚本来监控oracle的临时表空间》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、修改Nagios的check_oracle脚本来监控Oracle的临时表空间1.前言Nagios的NagiosPlugins中有很多程序或脚本提供给我们,用于监控相应的服务、资源等等。在NagiosPlugins中有一个用于实现对Oracle数据库进行监控的脚本,叫做check_oracle,位于Nagios安装路径下的libexec目录中。check_oracle脚本可以监控Oracle数据库的cache、tns、tablespace等信息,但是通过“--tablespace”选项监控表空间时,我们发现这个脚本不能监控临时表空间。仔细查看该脚本,发现其中的确没
2、有对临时表空间进行处理,现对该脚本做修改,使之能够监控Oracle的临时表空间。本文以Oracle10g作为实验数据库。2.分析源码和问题的解决方法查看check_oracle源码的tablespace部分,发现其对于表空间信息的获取是通过sql语句完成的。sql语句如下:selectNVL(b.free,0.0),a.total,100-trunc(NVL(b.free,0.0)/a.total*1000)/10prcfrom(selecttablespace_name,sum(bytes)/1024/1024totalfromdba_data_filesgr
3、oupbytablespace_name)ALEFTOUTERJOIN(selecttablespace_name,sum(bytes)/1024/1024freefromdba_free_spacegroupbytablespace_name)BONa.tablespace_name=b.tablespace_nameWHEREa.tablespace_name='${5}';其中${5}是表空间的名字。由于临时文件的的信息不在dba_data_files表中,所以通过上述脚本显然不能获得临时表空间的任何信息。那么如何获得临时表空间的空间使用情况呢,具体sql
4、语句如下:selectNVL(b.free,0.0),a.total,100-trunc(NVL(b.free,0.0)/a.total*1000)/10prcfrom(selecttablespace_name,sum(bytes)/1024/1024totalfromdba_temp_filesgroupbytablespace_name)ALEFTOUTERJOIN(selecttablespace_name,sum(bytes_cached)/1024/1024freefromv\$temp_extent_poolgroupbytablespace_n
5、ame)BONa.tablespace_name=b.tablespace_nameWHEREa.tablespace_name='TEMP';这条sql语句可以获得临时表空间“TEMP”的空间使用情况。解决的方法找到了,下面我们只需将脚本做小小修改就可以达到要求了。1.check_oracle脚本的修改在check_oracle脚本中的“case”语句中增加一个“--tablespaceTEMP”分支,用于完成监控Oracle临时表空间的功能。修改后的脚本如下(修改、添加的部分已标出):#!/bin/ksh##latigid010@yahoo.com#01/0
6、6/2000##ThisNagiospluginwascreatedtocheckOraclestatus#PROGNAME=`basename$0`PROGPATH=`echo$0
7、sed-e's,[\/][^\/][^\/]*$,,'`REVISION=`echo'$Revision:1749$'
8、sed-e's/[^0-9.]//g'`.$PROGPATH/utils.shprint_usage(){echo"Usage:"echo"$PROGNAME--tns"echo"$PROGNAM
9、E--db"echo"$PROGNAME--login"echo"$PROGNAME--cache"echo"$PROGNAME--tablespace"echo"$PROGNAME--tablespaceTEMP
10、"echo"$PROGN
此文档下载收益归作者所有