一个检查Oracle Alert Log的perl脚本

自动检查Oracle AlertLog的脚本.

在windows上测试过. Unix/Linux系统应该也能成但是没试.

[@more@]

在我们的环境中,有N台Oracle Instance.每天人工去查看Alert Log显然不太可能.

这个脚本会根据输入去查找Alert Log. 如果有错误会用非0代码退出,否则用0退出显示成功.根据各人的环境不同可以在外面再包一层,比如接收到非0代码退出则自动发送信件等等.这个就没有包含在里面了.

文件列表如下:

env_variables_Test: 配置文件.文件名是 env_variables_.

在这个配置文件中目前有用的只有一个参数就是LOG_DIR 也就是决定log文件要写在哪里

Common.pl一个常用的sub的集合.其中有一个sub是专门用来读参数文件的.只要参数文件中符合 A = B的条目都给读进去.

dba_oracle_chkalert.pl: 主体啦.

用法是这样的:

perl dba_oracle_chkalert.pl --sid Test --filename alert_test.log --exclude ORA-01555 -exclude xxxxxx

它找到错误以后,会把错误的前后三行都打印到$log_file中间.目前这个"前后三行"是写死的.在第61行, my $intelval = 3;可以改成从外面输入

exclude的是说排除的错误.

现在有个问题就是,如果错误叠错误的,比如第一行是ORA-01555 第二行是ORA-19504.那么第一行是本来应该被排除的,结果因为第二行要写前后三行就被写进去了...

自己来评评这个脚本:

1.读alert log的时候用一个数组把整个文件都读入内存了.如果alert文件不大还没有问题,如果有几百M那可能就有问题了...

这个主要是perl不支持直接读文件第几行的这种操作.我目前知道的就是用seek和read来做,但是很复杂的样子...抱头.改天再包装一个到common中间吧.

2.这个脚本应该配合一个age alert的脚本来用.你想啊,总不能同个错今天发生了,今天找找有的,明天找找又有的.今天找出错以后就应该用脚本把今天的这个alert文件改名成一个.err文件之类的让oracle去写一个新的alert才不会"错了又错"

3.有心想把这脚本改成"有错报错,无错退出",然后具体错误自己去看alert log的形式被同事BS了...不过我还是觉得就是前后写多少行有时候还是不准确的呀~

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

转载于:http://blog.itpub.net/7369227/viewspace-1020125/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值