ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 写shell遇到一个问题

写shell遇到一个问题

原创 Linux操作系统 作者:jolly10 时间:2008-08-04 11:43:25 0 删除 编辑
又遇到shell的问题了.

从alert_log中取到了error的信息,如ORA-00312: online log 2 thread 1: '/u01/oradata/orcl/redo02.log'

将这行插入到数据库时出错
[qht109] oracle error:ORA-00312: online log 2 thread 1: '/u01/oradata/orcl/redo02.log'
      (sql_alert_err.nextval,'[qht109] oracle error:ORA-00312: online log 2 thread 1: '/u01/oradata/orcl/redo02.log'')

知道原因是有单引号,如何将ORA-00312: online log 2 thread 1: '/u01/oradata/orcl/redo02.log'的单引号变成两个单引号?


整个脚本如下:
#!/bin/bash
. /home/oracle/.bash_profile
ADMIN=$ORACLE_BASE/admin/orcl
BDUMP_DEST=$ADMIN/bdump
LOGFILE=alert_$ORACLE_SID.log
HOSTNAME=`/bin/hostname`

export user=l5m
export passwd=l5m
#export service=orcl_107

cd $BDUMP_DEST

if [ ! -f "$LOGFILE" ]
then
        exit 100
fi

FILE_SIZE=`ls -l $LOGFILE |awk '{print $5}'`
ERRORCNT=`egrep -c 'ORA-|error|ERROR' $LOGFILE`
echo $ERRORCNT

if [ "$ERRORCNT" -gt 0 ]
then
    grep -E -B 2 "ORA-[0-9]+" $LOGFILE |{ while read ORA_ERR
    do
    ORA_ERR="["$HOSTNAME"] oracle error:"$ORA_ERR
    echo $ORA_ERR

  sqlplus -silent ${user}/${passwd} << END
       set pagesize 0 feedback off verify off heading off echo off
       insert into alert_error
        values
      (sql_alert_err.nextval,'$ORA_ERR');
      commit;
     exit;
END

#   echo $ORA_ERR |mail -s "ALERT: db alertlog " oracle
    done
else
    echo "nothing error found"
fi
exit 0

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

请登录后发表评论 登录
全部评论

注册时间:2008-02-20

  • 博文量
    263
  • 访问量
    769279