又遇到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
从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/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/271283/viewspace-417718/