在数据运维过程中,发现数据库的日志文件会不断增长,如果不定期进行清理,会导致占用较大的磁盘空间,或者文件太大难以分析和追踪问题,尤其是监听日志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,一般比较小,关注即可。
文章评论