Oracle归档日志清理
跳到导航
跳到搜索
oracle归档日志清理
alias sqlplus='rlwrap sqlplus' alias rman='rlwrap rman' rman target / 列出并确认归档日志路径 RMAN>list archivelog all; delete archivelog all completed before 'sysdate-7'; –删除系统时间7天以前的归档日志,不会删除闪回区有效的归档日志 今天就直接用了这个 SYSDATA-7,表明当前的系统时间7天前,before关键字表示在7天前的归档日志,如果使用了闪回功能,也会删除闪回的数据。 同样道理,也可以删除从7天前到现在的全部日志,不过这个命令要考虑清楚,做完这个删除,最好马上进行全备份数据库 注意 RMAN> delete archivelog all completed before 'sysdate-1'; (“1”对应是一天,若想删除6小时前的归档日志,则改为0.25) 删除完归档,若有对应的备份策略需要重新启动全备 5、删除失效的归档日志 RMAN>delete expired archivelog all; 6、如果日志爆了,用以上命令可能不起作用,可以使用下面的命令强行删除所有日志 RMAN>delete noprompt force archivelog all; 清除归档日志简单的shell脚本 #对于RAC环境或者ASM需要清除archive,使用shell脚本调用RMAN是比较妥当的方式 #其次,如果你的archive位于闪回区,制定合理的保留策略,也可以让Oracle自动老化无用的归档日志 robin@SZDB:~/dba_scripts/custom/bin> more clean_arch.sh # +-------------------------------------------------------+ # + Clean archived log as specified time | # + Author : Robinson | # + Blog : http://blog.csdn.net/robinson_0612 | # + Usage : | # + clean_arch.sh $ORACLE_SID | # +-------------------------------------------------------+ # #!/bin/bash # -------------------- # Define variable # -------------------- if [ -f ~/.bash_profile ]; then . ~/.bash_profile fi if [ -z "${1}" ];then echo "Usage: " echo " `basename $0` ORACLE_SID" exit 1 fi ORACLE_SID=$1; export ORACLE_SID $ORACLE_HOME/bin/rman log=/users/robin/log/rman.log <<EOF connect target / run{ crosscheck archivelog all; delete noprompt expired archivelog all; delete noprompt archivelog all completed before 'sysdate - 1'; } exit; EOF exit
原文:https://blog.csdn.net/leshami/article/details/9308287