Archivelog并不能直接得从OS层直接物理删除,因为archivelog的相关信息是记录在controlfile中的,当物理删除后不会改变controlfile的设置。并且在查询相关的动态视图(例如v$archived_log)时,该部分日志仍然标注为存在。也就是说Oracle并不认为这些日志被删除了,所以在删除archivelog的时候,需要我们在其他地方做一些设置。
一、使用RMAN清除物理删除后的记录
可以使用RMAN来删除archivelog,具体可以按以下步骤操作:
1、物理删除archivelog
2、进入RMAN
3、crosscheck archivelog all;
4、delete expired archivelog all;
这样就在一些Oracle的记录中查不到相应的archivelog记录了。
二、直接使用RMAN删除archivelog
其实在RMAN中是可以使用命令直接将ARCHIVELOG删除的,命令如下:
RMAN> DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';
表示删除7天以前的所有archivelog,但是这个命令的缺点是无法对archivelog进行细致的划分。
三、使用RMAN备份achivelog后删除
这是一种最为稳妥的方法了,使用RMAN备份archivelog,备份后全部删除
backup format '/u01/arch_%T_%s_%U' archivelog all delete input;
或者
backup database plus archivelog;
附:
list backup 命令
-
RMAN> list backup of archivelog all;
-
列出所有archive log 备份
-
-
RMAN> list backup of archivelog from logseq 100 until logseq 120;
-
列出archive log 从100到120
-
-
RMAN> list backup of archivelog sequence between 100 and 110;
-
列出archive log 从100到120
-
–说明:between……and只能使用sequence,而不能使用logseq
-
-
RMAN> list backup of archivelog from logseq 100;
-
列出seq大于等于100的archive log
-
-
RMAN> list backup of archivelog low logseq 120;
-
列出seq大于等于120的archive log
-
-
RMAN> list backup of archivelog sequence 100;
-
列出seq为100的archive log
-
–说明:在对于rman中关于archivelog的操作中logseq与sequence作用相同,但是建议尽量使用sequence
-
-
RMAN> list backup of archivelog logseq 85;
-
列出seq为85的archive log
-
-
RMAN> list backup of archivelog until logseq 85;
-
列出seq小于等于85的archive log
-
-
RMAN> list backup of archivelog high logseq 40;
-
列出seq小于等于40的archive log
-
-
RMAN> list backup of archivelog from time ‘sysdate-7′;
-
列出7天以前的archive log
list archivelog命令
-
RMAN> list archivelog until time 'sysdate-1';
-
此时是按照归档日志开始时间即fisrt_time作为截止时间
-
-
RMAN> list archivelog all completed before 'sysdate-1';
-
是按照归档日志完成时间即completion_time作为截止时间
-
-
SQL> select THREAD#,sequence#,FIRST_TIME,NEXT_TIME,COMPLETION_TIME
-
2 from v$archived_log order by thread#,sequence#;
配置和delete
-
RMAN> run {
-
2> set archivelog destination to '/opt/oracle/oradata/test/newlog';
-
3> restore archivelog low logseq 40;
-
4> }
-
从seq为40开始,恢复到/opt/oracle/oradata/test/newlog中
-
–说明:list backup of archivelog中限定日志的位置也适合restore archivelog
-
-
RMAN> backup archivelog sequence between 100 and 110 format '/tmp/text_test.rman' delete input;
-
备份seq为100至110的archive log
-
–说明:list backup of archivelog中限定日志的位置也适合backup archivelog
-
-
RMAN>DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';
-
删除7天前archive log
-
-
RMAN>DELETE ARCHIVELOG low logseq 40;
-
删除seq大于等于40的archive log
-
-
RMAN> crosscheck archivelog all;
-
-
RMAN> delete expired archivelog all;
-
删除无效archive log
-
–说明:DELETE ARCHIVELOG中限定日志的位置也适合restore archivelog
四、备份还原,恢复数据库
可以参考这个博文,http://blog.csdn.net/leshami/article/details/6032739
阅读(2737) | 评论(0) | 转发(0) |