源于pub中的一篇帖子http://www.itpub.net/thread-1584375-1-1.html
delete obsolete; --能删除7天前的备份
delete expired backup; --不能删除7天前的备份, 为什么?
Rman有两种备份策略,一种是基于时间的,默认的是认为7天的备份有效,还有一种是基于冗余的,会认为最后一次的备份有效。
Delete obsolete会删除过期的备份,而如果在物理上删除的备份,还是会存储在rman备份信息中并置为有效,nocatalog下controlfile保留备份集信息,删除的备份集信息依然记载在controlfile中,只是用flag来标记状态,这里也明白了eygle说过的nocatalog模式下controlfile会越来越大,备份集信息虽然delete了,但是实际的记录信息依然存在于controlfile中,只是标记为deleted状态。这里也说下与rman备份相关的数据字典视图V$backup_set中记录所有备份的信息而不论是否存在或可用。
下面测试一下expired和obsolete的备份集在ctl中记录变化
Backup database include current controlfile format ‘’
Plus archivelog format;
先做一个数据库的全备份,然后dump controlfile查看备份集信息.flag并没有什么标记obselte和expired状态
Alter session set events ‘immediate trace name controlf level 8’;
BACKUP PIECE RECORDS
***************************************************************************
(size = 736, compat size = 736, section max = 200, section in-use = 4,
last-recid= 4, old-recno = 1, last-recno = 4)
(extent = 1, blkno = 99, numrecs = 200)
Earliest record:
RECID #1 Recno 1 Record timestamp 03/01/12 13:19:09 piece #1 copy #1 pool 0
Backup set key: stamp=776783942, count=1
V$RMAN_STATUS: recid=160283880, stamp=160283876
Flags:
Device: DISK
Handle: D:ARCH_XIAOYU_20120301_1
Media-Handle:
Comment:
Tag: TAG20120301T131855
Completion time 03/01/12 13:20:06
然后在os上物理删除备份集信息,此时的controlfile中依然没有标记备份集信息为obsolete或expired状态,rman还没有用crosscheck去检索备份集状态。
Backup set key: stamp=776783942, count=1
V$RMAN_STATUS: recid=160283880, stamp=160283876
Flags:
Device: DISK
Handle: D:ARCH_XIAOYU_20120301_1
Crosscheck backup检查物理文件上不存在的备份集然后标记controlfile中的flag为expired状态
RECID #1 Recno 1 Record timestamp 03/01/12 13:19:09 piece #1 copy #1 pool 0
Backup set key: stamp=776783942, count=1
V$RMAN_STATUS: recid=160283880, stamp=160283876
Flags:
Device: DISK
Handle: D:ARCH_XIAOYU_20120301_1
Delete expired backup删除rman认为存在废弃的备份集,标记flag为deleted。
RECID #1 Recno 1 Record timestamp 03/01/12 13:19:09 piece #1 copy #1 pool 0
Backup set key: stamp=776783942, count=1
V$RMAN_STATUS: recid=160283880, stamp=160283876
Flags:
Device: DISK
Handle:
那么如果此时自己的测试库中rman是基于冗余的备份策略,此时自己backup datafile 1两次,那么应该有一个obsolete backup,查看下controlfile记录的状态吧
RMAN> show all;
RMAN 配置参数为:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
两次关于数据文件1的备份都被标记为可用备份集,看来即使是obsolete状态rman也不会在controlfile中标记flag为obsolete状态,仅仅只是针对crosscheck状态扫描的出来的缺少物理文件的标记expired和删除的备份集为delete状态。
Latest record:
RECID #8 Recno 8 Record timestamp 03/01/12 15:52:56 piece #1 copy #1 pool 0
Backup set key: stamp=776793174, count=8
V$RMAN_STATUS: recid=238730472, stamp=238730468
Flags:
Device: DISK
Handle: E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAXIAOYUBACKUPSET2012_03_01O1_MF_NCSNF_TAG20120301T155228_7NYBPR1B_.BKP
Media-Handle:
Comment:
Tag: TAG20120301T155228
Completion time 03/01/12 15:52:56
RECID #6 Recno 6 Record timestamp 03/01/12 15:51:51 piece #1 copy #1 pool 0
Backup set key: stamp=776793109, count=6
V$RMAN_STATUS: recid=238730472, stamp=238730468
Flags:
Device: DISK
Handle: E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAXIAOYUBACKUPSET2012_03_01O1_MF_NCSNF_TAG20120301T155123_7NYBNQNO_.BKP
Media-Handle:
Comment:
Tag: TAG20120301T155123
Completion time 03/01/12 15:51:52
RMAN> report obsolete;
RMAN 保留策略将应用于该命令
将 RMAN 保留策略设置为冗余 1
已废弃的备份和副本报表
类型 关键字 完成时间 文件名/句柄
-------------------- ------ ------------------ --------------------
备份集 6 01-3月 -12
备份段 6 01-3月 -12 E:ORACLEPRODUCT10.2.0FLASH_RECOVERY_A
REAXIAOYUBACKUPSET2012_03_01O1_MF_NCSNF_TAG20120301T155123_7NYBNQNO_.BKP
[@more@]来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/25362835/viewspace-1057484/ ,如需转载,请注明出处,否则将追究法律责任。