在dataGuarad的primary库,rman中使用backup archivelog all delete input 命令删除已经归档并且已经成功传送到备库并且在standby上应用的日志是遇到
RMAN-08137: WARNING: archive log not deleted as it is still needed
archive log filename=/ora03/oraflsh/RMANCCB/1_3740_580667843.dbf thread=1 sequence=3740
主库和备库的alter日志里面也会出现 标记为APPLIED='NO'的归档日志初始化失败。此时尽管日志已经备份了,但是由于不能删除导致磁盘空间被占满最终会导致数据库hang住,因为不能产生任何的归档日志了。
在主库上执行如下语句,最少有一个archivelog 的APPLIED的值为NO:
alter session set nls_date_format='dd-mon-rr hh24:mi:ss';
select recid, dest_id, thread#, sequence#, first_time, completion_time, creator, registrar, archived, applied, deleted, status
from v$archived_log where standby_dest='YES' and status='A';
遇到此类问题的原因是因为主库的日志虽然传送到了备库并且成功应用,但是对应的在主库上的日志条目 在v$archived_log.applied并没有被更新为‘YES’
正是由于该字段的值为NO ,当使用rman 执行delete input 操作时,rman认为该日志没有归档且没有被备库应用。
知道此问题的原因,我们可以使用如下方法解决:
1 检查备库和主库是否有日志的中断,如果有,则解决该中断问题!再次在主库执行上述sql 语句查看是否依然有 applied='NO'的日志条目
2 如果还有归档日志 标记为applied='NO' 并且此日志已经被备库应用,主备库之间没有gap,我们可以使用os 命令删除那些归档日志,然后执行:
RMAN>crosscheck archivelog all;
RMAN>delete expired archivelog all;