数据库日志需要定时清理

2018年3月27日 6994点热度 0人点赞 0条评论

在数据运维过程中,发现数据库的日志文件会不断增长,如果不定期进行清理,会导致占用较大的磁盘空间,或者文件太大难以分析和追踪问题,尤其是监听日志listener.log,一个生产库几个月可能达到几十G大小。

下面给出对这些日志文件进行清理、备份的脚本,请大家参考使用。

【linux、aix平台,11gRAC环境、11g单实例,在bash、ksh环境运行测试通过,可添加到crontab里定时执行】

■监听日志文件listener.log的备份、清理
[注:oracle用户(RAC环境用grid用户),在所有节点执行以下脚本]

cd $ORACLE_BASE/diag/tnslsnr/`hostname`/listener/trace
export SIZE=`du -m listener.log | cut -f1`
if [ $SIZE -ge 200 ]; then
  lsnrctl set log_status off
  mv listener.log listener_`date +%Y%m%d%H%M%S`.log
  lsnrctl set log_status on
fi

■数据库日志文件alert_sid.log的备份、清理
[注:oracle用户,在所有节点执行以下脚本]

cd ${ORACLE_BASE}/diag/rdbms/?*/$ORACLE_SID/trace
export SIZE=`du -m alert_${ORACLE_SID}.log | cut -f1`
if [ ${SIZE} -ge 200 ]; then
  mv alert_${ORACLE_SID}.log alert_${ORACLE_SID}_`date +%Y%m%d%H%M%S`.log
  cat /dev/null > alert_${ORACLE_SID}.log
fi

■listener_scan1.log的备份清理
[注:grid用户,在所有节点执行以下脚本]

cd $ORACLE_BASE;cd ../11.2.0/grid/log/diag/tnslsnr/`hostname`/listener_scan1/trace
export SIZE=`du -m listener_scan1.log | cut -f1`
if [ ${SIZE} -ge 200 ]; then
  mv listener_scan1.log listener_scan1_`date +%Y%m%d%H%M%S`.log
  cat /dev/null > listener_scan1.log
fi

■另外还有两个asm实例的alertlog,一般比较小,关注即可。

liking

这个人很懒,什么都没留下

文章评论