crosscheck archivelog all;
delete noprompt force archivelog until time 'sysdate-6';
在主库删除归档时报如下错误
RMAN-08137: WARNING: archived log not deleted, needed for standby or upstream capture process
- 参考文档:RMAN-08137 on Primary Database although Archive Destination to Standby is deferred (文档 ID 1380368.1)
原因是log_archive_dest_state_x设置为DEFER,但是Oracle认为只要设置了log_archive_dest_n就会认为备库存在,只是暂时不可用而已,因此不会删除归档。
可以通过设置隐含参数(动态参数)来规避这个问题,默认值是true,该参数将认为延迟存档目的地完全不可用,并且不再为这些目的地保存归档日志
alter system set "_deferred_log_dest_is_valid" = FALSE scope=both;
--修改前
NAME DESCRIPTION VALUE ISDEFAULT ISMODIFIED ISADJUSTED
------------------------------------------------------------ ---------------------------------------------------------------------- ---------------------------------------- ---------- ---------- ----------
_deferred_log_dest_is_valid consider deferred log dest as valid for log deletion (TRUE/FALSE) TRUE TRUE false false
--修改后
NAME DESCRIPTION VALUE ISDEFAULT ISMODIFIED ISADJUSTED
------------------------------------------------------------ ---------------------------------------------------------------------- ---------------------------------------- ---------- ---------- ----------
_deferred_log_dest_is_valid consider deferred log dest as valid for log deletion (TRUE/FALSE) FALSE TRUE system_mod false
delete noprompt force archivelog all completed before 'sysdate-6';