自动清理 oracle 的归档日志、alert 日志、监听日志、审计日志脚本。
#crontab
30 8 * * * /ora/u01/scripts/clean_log.sh > /dev/null 2>&1
#######################################################################
################archive log
#!/bin/bash
. /home/oracle/.bash_profile
# --------------------
# every day archivelog about 400G
# --------------------
export ORACLE_SID=ORCL
$ORACLE_HOME/bin/rman log=/oracle/archlog/ORCL/clean.log <<EOF
connect target /
run{
crosscheck archivelog all;
delete noprompt expired archivelog all;
delete noprompt archivelog all completed before 'sysdate - 3';
}
exit;
EOF
#################arlert log
#!/bin/bash
#---------------------
#alert about 30m every month
#---------------------
cd ${ORACLE_BASE}/diag/rdbms/ORCL/$ORACLE_SID/trace
export SIZE=`du -m alert_${ORACLE_SID}.log | cut -f1`
if [ ${SIZE} -ge 30 ]; then
# cp alert_${ORACLE_SID}.log /oracle/rmanbackup/oracle_log/alert/alert_$
{ORACLE_SID}_`date +%Y%m%d%H%M%S`.log
cp alert_${ORACLE_SID}.log /oracle/rmanbackup/oracle_log/alert/alert_$
{ORACLE_SID}_`date +%Y%m%d%H%M%S`.log
# cat /dev/null > alert_${ORACLE_SID}.log
truncate -s 0 alert_${ORACLE_SID}.log
fi
find . -mtime +30 -name "*.trc" | xargs rm -rf
find . -mtime +30 -name "*.trm" | xargs rm -rf
#################listener log
#!/bin/bash
#---------------------
#listener.log about 100m every 8 month,listener.xml about 200m every month
#---------------------
cd $ORACLE_BASE/diag/tnslsnr/`hostname`/listener/trace
export SIZE=`du -m listener.log | cut -f1`
if [ $SIZE -ge 100 ]; then
# lsnrctl set log_status off
# mv listener.log /oracle/rmanbackup/oracle_log/listener/listener_`date +%Y%m%d
%H%M%S`.log
cp listener.log /oracle/rmanbackup/oracle_log/listener/listener_`date +%Y%m%d
%H%M%S`.log
truncate -s 0 listener.log
# lsnrctl set log_status on
fi
cd $ORACLE_BASE/diag/tnslsnr/`hostname`/listener_orcl/alert
find . -mtime +30 -name "log_*.xml" | xargs rm -rf
#################audit log
#!/bin/bash
评论