业务增长发展迅猛,归档日志增长太快,磁盘承受不了,所以准备做个定时清理归档日志的定时任务。



1、RM方式清理归档日志

清理归档日志,可以人为的删除已经归档好的日志文件,然后再调用rman里面RMAN> crosscheck archivelog all;来去数据库里面删除归档记录;也可以通过ram调用delete命令来删除归档日志。



2、使用rman清理归档日志

               RMAN清除方式会自动清除磁盘上的归档日志文件,同时会释放控制文件中对应的归档日志的归档信息。


               可以基于不同的条件来清除归档日志,如基于SCN,基于SEQUENCE,基于TIME等方式。


               对于上述的三种方式又可以配合from, until, between .. and .. 等等子句来限定范围,方式灵活多变。


               下面的命令用于校验归档日志的有效性,列出无效的归档日志,以及以何种方式清除归档日志,列出几种常用的:




delete noprompt archivelog until time "to_date('XXXX-XX-XX','YYYY-MM-DD')";    ---> 清理到某天日期之前的归档

               delete noprompt archivelog until time "to_date('2016-09-14 18:00:00','YYYY-MM-DD hh24:mi:ss')";   ---> 清理到具体时分秒之前的归档日志

               cross check archivelog all;                           --->校验日志的可用性

               list expired archivelog all;                         --->列出所有失效的归档日志

               delete archivelog until sequence 16;                 --->删除log sequence为16及16之前的所有归档日志

               delete archivelog all completed before 'sysdate-7';   --->删除系统时间7天以前的归档日志,不会删除闪回区有效的归档日志

               delete archivelog all completed before 'sysdate - 1'; --->同上,1天以前的

               delete archivelog from time 'sysdate-1';             --->注意这个命令,删除系统时间1天以内到现在的归档日志

               delete noprompt archivelog all completed before 'sysdate';  --->该命令清除当前所有的归档日志

               delete noprompt archivelog all completed before 'sysdate-0';  --->该命令清除当前所有的归档日志

               delete noprompt archivelog all;                              --->同上一命令