#!/bin/bash
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_log=/u01/app/oracle/diag/rdbms/orcl_p/orcl/trace/alert_orcl.log
if [ ! -e /tmp/mo_alert.log ]
then
echo "make mailinfo"
touch /tmp/mo_alert.log
current_line=`wc -l $alert_log|awk '{print $1}'`
echo $current_line>/tmp/current.log
else
last_line=`cat /tmp/current.log`
echo "last line: "$last_line
current_line=`wc -l $alert_log|awk '{print $1}'`
echo "current_line: "$current_line
rm -rf /tmp/mo_alert.log
sed -n "$last_line,$current_line p" $alert_log|grep -nB4 -nA4 'ORA-' > /tmp/mo_alert.log
n=`wc -l /tmp/mo_alert.log | awk '{print $1}'`
current_line=`expr $current_line + 1`
if [ $n -gt 0 ]
then
echo "find ORA error send mail"
##cat . /tmp/mo_alert.log |mutt -s "alert on 4.22" $mail_list
echo $current_line >/tmp/current.log
else
echo "no error"
echo $current_line >/tmp/current.log
fi
fi
最新版:
#!/usr/bin/bash
##定义alert日志路径
Alter_log_dir=/data/app/oracle/database/diag/rdbms/siebproda/siebprod/trace/alert_siebprod.log
if [ ! -f "/home/oracle/scripts/log_allrow.txt" ];then
touch /home/oracle/scripts/log_allrow.txt
echo "1" > /home/oracle/scripts/log_allrow.txt
fi
##定义上次日志行起点
Begin_row=`sed -n '1p' /home/oracle/scripts/log_allrow.txt`
##定义日志行截止点
End_row=`wc -l $Alter_log_dir |awk '{print $1}'`
##获取主机IP
Host=`hostname`
sed -n ''$Begin_row','$End_row'p' $Alter_log_dir >/tmp/new_alert_SIEBUAT.log
Excep_row=`egrep -i "ora-|warning" /tmp/new_alert_SIEBUAT.log |wc -l`
if [ $Excep_row -ne 0 ]; then
egrep -iC 5 "ora-|warning" /tmp/new_alert_SIEBUAT.log >/tmp/error.log
echo -e "$Host siebel Prod环境数据库alert日志有异常\n`cat /tmp/error.log` " |mail -s "siebel数据库Prod环境报警" DBA@immotors.com >/dev/null 2>&1
else
echo "`date +%F-%T` ------ NO Error in alert.log" >>/tmp/alert_normal.log
fi
##下一次日志截取点
echo $(($End_row +1)) >/home/oracle/scripts/log_allrow.txt