暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

日常脚本分享 Oracle错误日志检查

原创 tnan1986 2023-07-14
396

   日常工作中的,对oracle数据库的日志巡检是重要的一环,及时发现日志中的alert问题告警,提早发现,及时干预处理就变得尤为重要。

   一般我们会直接登陆数据库服务器直接查看,但是存在两个小小的问题:

1、日志目录隐藏比较深,想要查找不太方便,特别是遇到多实例的情况,需要不断地切换目录,这点我们可以在环境变量里面使用alias别名的方式来精准直达目录,例如:

alias alert1='cd /u01/app/oracle/diag/rdbms/orcl/ORCL1/trace/;tail -100f alert_ORCL1.log'

alias alert2='cd /u01/app/oracle/diag/rdbms/orcl/ORCL2/trace/;tail -100f alert_ORCL2.log'


   2、如果是很多数据库服务器需要管理,或者我们要批量查看或者进行错误日志收集的的话,就显得有些力不从心,那么以下小脚本就派上用场了。

    话不多说,直接上代码:

[oracle@node01 script]$ cat 12c_log_error_check.sh
#!/bin/bash
export ORACLE_BASE=/u01/app/oracle ##声明ORACLE_BASE环境变量
export ORACLE_HOME=/u01/app/oracle/product/12.2.0.1/dbhome_1 ##声明ORACLE_HOME环境变量
oracle_sids=$(ps -ef|grep "ora_pmon_"|grep -v grep|sed -e 's/ora_pmon_//g'|grep -v sed|awk '{printf $8","}')
###############检查最近5000条日志是否有错误####################
for alterid in ${oracle_sids//,/ }; do
export ORACLE_SID=$alterid
select_alert_sql=" select value from v\$diag_info where name='Diag Trace';"
DB_ALTER=`sqlplus -S / as sysdba << EOF
set linesize 200 pagesize 200
set pages 0
set head off
set feed off
${select_alert_sql}
exit;
EOF`
echo "The $alterid database arter_log is ${DB_ALTER}/alert_${alterid}.log"
ALERT_LOG="${DB_ALTER}/alert_${alterid}.log"
error_count=$(tail -5000 $ALERT_LOG |grep -i ora-)
if [ -n "$error_count" ]
then
echo "The $alterid err is $error_count"
else
echo "The $alterid no err"
fi
done


然后给脚本授权:

chown oracle:oinstall 12c_log_error_check.sh 

chmod +x 12c_log_error_check.sh 


查看脚本属主及权限:

ll 12c_log_error_check.sh

-rwxr-xr-x 1 oracle oinstall 1122 Apr 4 15:40 12c_log_error_check.sh


最终执行效果如下:

[oracle@node01 script]$ sh 12c_log_error_check.sh
The ORCL1 database arter_log is /u01/app/oracle/diag/rdbms/orcl/ORCL1/trace/alert_ORCL1.log
The ORCL1 no err

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论