在Oracle数据库开启了归档日志模式的情况下,归档日志会不断积累,如果不定时关注维护,可能会让归档日志把磁盘空间撑爆,并且若把归档目录设置在快速恢复区里,可在短时间内把该区撑爆,从而让数据库无法归档,数据库会挂起无法响应,影响严重!下面方案是部署自动化作业,定时清理历史归档日志,从而避免上述的归档日志撑爆的隐患。

LINUX下自动清理归档脚本(自动清理7天前的历史归档日志):

#/bin/sh
source ~/.bash_profile
rman target / log /home/oracle/rman.log <<EOF
DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';
YES
exit;
EOF

如实现每天记录一个执行日志文件,可用下面的详细版:

#!/bin/bash
source ~/.bash_profile

LOGDIR=$HOME/delete_archivelog
LOGFILE=$LOGDIR/delete_$(date +%Y-%m-%d).log
if [ ! -d $LOGDIR ]
             then
                mkdir -p $LOGDIR
fi

 delete archivelog in 3 days
$ORACLE_HOME/bin/rman target / <<script > $LOGFILE
crosscheck archivelog all;
delete archivelog all completed before 'sysdate-3';
YES
exit;
script

上述脚本生成后,可在Linux的crontab任务,或windows的自动计划任务程序里设置定时任务,每天执行一次即可!