2016-11-14 26 views
-1

SUN OS 5.8 的Bash shell脚本 Oracle 10g数据库错误在Solaris

Error 1 the command executing at the time of the error was egrep ORA-\|TNS-\|PLS-\|Error\|PLW-\|IMP-\|EXP-\|RMAN-\|SQL- alert_work.log > alert.err on line 11 

的 “egrep的” 行运行egrep的成功运行,当我手动运行它。但在一个bash脚本(cron作业)中会出现上述错误。下面是该脚本:

#!/bin/bash 
    SID=$ORACLE_SID 
    DOMAIN=$(uname -n) 
    DBALIST='[email protected]' 
    YESTERDAY=`TZ=CST+24 date +%Y-%m-%d` 

    cd $ORACLE_HOME/admin/$SID/bdump 
    mv alert_${SID}.log alert_work.log 
    touch alert_${SID}.log 
    cat alert_work.log >> alert_${SID}.hist 
    egrep ORA-\|TNS-\|PLS-\|Error\|PLW-\|IMP-\|EXP-\|RMAN-\|SQL- alert_work.log > alert.err 

    if [ `cat alert.err|wc -l` -gt 0 ] 
    then 
      mailx -s "${DOMAIN}.${SID} ALERT LOG ERRORS FOUND" $DBALIST < alert.err.log 
    fi 

    /usr/bin/mv alert_work.log $ORACLE_HOME/admin/$SID/bdump/hist/alert_${SID}_${YESTERDAY}.log 
    exit 
+0

在你的shell中运行'which egrep',并确保你在你的crontab中使用了同样的一个。 –

回答

0

我怀疑你的egrep正则表达式,你没有引用它,从bash脚本中创建一个脚本的事实导致,然后运行该脚本,使我认为您将最终得到: egrep ORA- | TNS- | PLS- |错误| PLW- | IMP- | EXP- | RMAN- | SQL- alert_work.log> alert.err 这不是你想要的。请尝试: egrep'ORA- \ | TNS- \ | PLS- \ |错误\ | PLW- \ | IMP- \ | EXP- \ | RMAN- \ | SQL-'alert_work.log> alert.err 应该保留反斜杠。