[20221121]rman删除归档日志问题.txt
--//前几天检查发现同事设计的删除归档脚本执行的时如下命令(在dg上):
delete noprompt archivelog until time 'sysdate-15';
--//我看了我以前写的类似脚本,我执行的是:
delete noprompt archivelog all completed before 'trunc(sysdate)-15';
--//两者有怎么区别呢?我记忆里我以前写过blog,找了一下,发现如下链接:
http://blog.itpub.net/267265/viewspace-775193/
--//不再重复测试了:
--//http://blog.itpub.net/267265/viewspace-775193/
摘要:
Summary :
UNTIL TIME的TIME 指的是 ARCHIVELOG的FIRST_TIME ,即归档日志中LOW SCN对应的时间戳;其意思为找出所有LOW SCN TIMESTAMP小于
等于指定的时间变量的归档日志。
COMPLETED BEFORE 指的是ARCHIVELOG的COMPLETION_TIME,即实际归档操作完成的时间;其意思为找出所有归档完成时间小于指定的时
间变量的归档日志。
COMPLETED AFTER 指的是ARCHIVELOG的COMPLETION_TIME,即实际归档操作完成的时间;其意思为找出所有归档完成时间大于等于指定
的时间变量的归档日志。
--//注:如果使用completed.前面的all是必须的,不然报错.
--//很明显我感觉我写的更加科学一下,对方until time 'sysdate-15',这样采用的时间点是ARCHIVELOG的FIRST_TIME ,即归档日志中
--//LOW SCN对应的时间戳, 很容易产生歧异.
--//而我写的是all completed before 'trunc(sysdate)-15',这样当天执行执行的时间点不会变,COMPLETED BEFORE 指的是ARCHIVELOG
--//的COMPLETION_TIME,即实际归档操作完成的时间.
--//实际上一个取redofile开始时间first_time,另外一个取redofile结束时间completion_time.对应视图
SELECT recid, first_time, next_time, completion_time FROM v$archived_log where recid between 499 and 501;
--//注:我以前写的一些也是类似before 'sysdate-15',有空做一次巡检,全部改正过来.
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/267265/viewspace-2924664/ ,如需转载,请注明出处,否则将追究法律责任。