ORACLE 事先监控alert log 发出邮件

实现该功能需要如下配置:

#yum install mutt

 

 

#!/bin/bash

#功能:监控oracle的alert日志,如有ORA- 错误则邮件发出。

#如果是第一次运行,脚本会创建mailinfo文件(该文件用于存放上次执行脚本时alert的日志的行数),存放本次alert日志的行数。

#初始化环境变量

source /home/oracle/.bash_profile

#邮件列表

mail_list='zhxx@xx.net,[url=mailto:zhangxx@xx.net]zhangxx@xx.net,139xxxxxxxx@139.com,135xxxxxxxx@139.com'[/url]

#根据自己库的实际情况,填写以下alert日志的路径

alert_log=/u01/oracle/diag/rdbms/orcl/orcl/trace/alert_orcl.log

#判断本脚本路径下是否存在mailinfo文件,不存在就创建,并放入本次alert日志的行数

if [ ! -e ./mailinfo ]

then

echo "建立mailinfo文件"

touch ./mailinfo

current_line=`wc -l $alert_log|awk '{print $1}'`

echo $current_line>./mailinfo

#如果存在mailinfo文件,则检查上次行数到本次行数之间是否有ORA-错误

else

#读取上次检查到的行数

last_line=`cat ./mailinfo`

echo "上次行数:"$last_line

#算出本次alert日志的行数

current_line=`wc -l $alert_log|awk '{print $1}'`

echo "本次行数:"$current_line

#取上次行数和本次行数之间的alert日志内容,然后把ORA错误及上下三行放到mailinfo中

sed -n "$last_line,$current_line p" $alert_log|grep -nB4 -nA4 'ORA-'>./mailinfo

#判断mailinfo文件的行数是否大于0,大于0则发邮件,无论是否发邮件都把本次行数放到mailinfo文件中

n=`wc -l ./mailinfo | awk '{print $1}'`

if [ $n -gt 0 ]

then

echo "检测到错误,发邮件"

cat ./mailinfo|mutt -s "10.68 alert中出现ORA错误,请检查" $mail_list

#把本次行数放到mailinfo文件中

echo $current_line>./mailinfo

else

echo "没检测到错误,不发邮件"

echo $current_line>./mailinfo

fi

fi

========================================================================

加入到oracle用户的定时任务中,周一至周五的9:30、11:30、15:30、17:30执行

crontab -e

30 9,11,15,17 * * 1-5 /home/oracle/shell/checkalert.sh

 

 

(笔者原创文章,转载请注明出处:https://blog.csdn.net/LFCuiYs)谢谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值