DELETE ARCHIVELOG ALL COMPLETED BEFORE/after 'SYSDATE-7'与DELETE ARCHIVELOG UNTIL TIME 'SYSDATE-7'区别
1、基础知识
V$ARCHIVED_LOG: FIRST_TIME DATE Timestamp of the first change NEXT_TIME DATE Timestamp of the next change COMPLETION_TIME DATE Time when the archiving completed
FIRST_TIME代表该归档日志中LOW SCN对应的时间戳,
NEXT_TIME代表HIGH SCN对应的时间戳;
COMPLETION_TIME指该日志实际归档成功的时间,
当归档可以快速完成时 NEXT_TIME往往等于COMPLETION_TIME,但是也存在因为LOGFILE SIZE尺寸较大导致archive归档操作持续较长时间,导致 NEXT_TIME << COMPLETION_TIME的情况存在。
2、总结
(1)UNTIL TIME的TIME:
指的是 ARCHIVELOG的FIRST_TIME ,即归档日志中LOW SCN对应的时间戳;其意思为找出所有LOW SCN TIMESTAMP小于等于指定的时间变量的归档日志。
(2)COMPLETED BEFORE
指的是ARCHIVELOG的COMPLETION_TIME,即实际归档操作完成的时间;其意思为找出所有归档完成时间小于指定的时间变量的归档日志。
COMPLETED AFTER 指的是ARCHIVELOG的COMPLETION_TIME,即实际归档操作完成的时间;其意思为找出所有归档完成时间大于等于指定的时间变量的归档日志。
3、这种区别的意义:
试想这样一个场景
SEQUENCE A 的ARCHIVELOG 的First TIME为 07:45 、 NEXT TIME为08:10、归档操作耗费了1分钟即COMPLETION_TIME为08:11
SEQUENCE A+1即后续的一个ARCHIVELOG的 FIRST TIME为08:10,NEXT TIME为08:30……..
我们以08:00为时间变量,
若使用DELETE ARCHIVELOG UNTIL TIME 08:00 ,因为SENQUENCE A的FIRST_TIME <08:00,所以SEQUENCE A将被删除,若没有相应的归档备份或COPY,则意味着08:00~08:10 这段时间将变成unrecoverable;
若使用DELETE ARCHIVELOG ALL COMPLETED BEFORE 08:00,因为SENQUENCE A的COMPLETION_TIME>08:00,所以SEQUENCE A将不被删除。
【转:https://blog.csdn.net/yabingshi_tech/article/details/43966033】