如何用shell脚本捕获oracle异常

如何用shell脚本捕获oracle异常,并可以判断谢谢你的答案... 如何用shell脚本捕获oracle异常,并可以判断
谢谢你的答案
展开
 我来答
百度网友2d3d83f
2014-10-29 · TA获得超过599个赞
知道小有建树答主
回答量:590
采纳率:100%
帮助的人:389万
展开全部

有个监视alert文件并发送邮件的,之前网上找的,你可以试下:

#!/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
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式