WEB开发网
开发学院数据库Oracle 使用shell处理oracle数据库alert日志 阅读

使用shell处理oracle数据库alert日志

 2008-10-16 12:56:17 来源:WEB开发网   
核心提示: 产生格式化日期的脚本dated_alert.shecho "set heading off" >get_date.sqlecho "set feedback off" >>get_date.sqlecho "set ter

产生格式化日期的脚本dated_alert.sh

echo "set heading off" >get_date.sql
echo "set feedback off" >>get_date.sql
echo "set term off" >>get_date.sql
echo "spool tmp_date.log" >>get_date.sql
echo "select sysdate-"$1" from dual;" >>get_date.sql
echo "spool off" >>get_date.sql
echo "exit" >>get_date.sql
export NLS_LANG=american
sqlplus "/as sysdba" @get_date.sql <<EOF
EOF
rm -f get_date.sql

处理ORA-00600错误的脚本check_00600.sh

本只给出ORA-00600错误的处理脚本,其他错误类似,限于篇幅,其他错误的处理脚本在此处省略。

echo
echo "----------------------"
echo "ORA-00600错误跟踪信息"
echo "----------------------"
awk '/ORA-00600/{print NR}' tmp_alert.tmp|awk '{print "awk ""'''""NR=="$1-1" {print """mget """substr($4,1,length($4)-1)}""'''"" tmp_alert.tmp"}' >tmp1.sh
chmod 777 tmp1.sh
chmod 777 tmp1.sh
echo
echo
sh tmp1.sh |sort -r| uniq >ora006000_trc.log
#对所有的ORA-00600跟踪文件进行处理,去掉重复的文件,判断文件是否存在,并生成ftp可用的格式
echo "" >trc_tmp
for trc_file in $(cat ora006000_trc.log|awk '{print $2}')
do
if [ -f $trc_file ]
then
echo "mget $trc_file" >>trc_tmp
else
echo "找不到跟踪文件: $trc_file" >>trc_tmp
fi
done
cat trc_tmp|sort -r
echo
echo
echo >tmp_3_line.sh
chmod 777 tmp_3_line.sh
chmod 777 tmp_3_line.sh
#对于每个ORA-00600,打印时间戳、跟踪文件和具体报错信息
for tmp_row_num in $(awk '/ORA-00600/{print NR}' tmp_alert.tmp)
do
let tmp_time=$tmp_row_num-2
let tmp_trc=$tmp_row_num-1
echo "awk 'NR=="$tmp_time"{print $0}' tmp_alert.tmp" >>tmp_3_line.sh
echo "awk 'NR=="$tmp_trc"{print $0}' tmp_alert.tmp" >>tmp_3_line.sh
echo "awk 'NR=="$tmp_row_num"{print $0}' tmp_alert.tmp" >>tmp_3_line.sh
echo "echo" >>tmp_3_line.sh
done
sh tmp_3_line.sh
echo
echo
#错误信息提示
echo "---------------"
echo "关于ORA-00600"
echo "---------------"
oerr ora 00600
echo

Tags:使用 shell 处理

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接