如何理解rman保留备份天数

在rman的配置中。可以看到这样的配置信息。

RMAN> show all;
RMAN 配置参数为:
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 2 DAYS;
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO 'E:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\S
NCFORA10G.ORA'; # default
Configure retention policy to recovery window of 2 days; 表示备份保留两天,即表示oracle可以保证还原到两天的任意时间点。
当前时间为2012-08-09.我给DB做一个0级备份。
Rman_lv0
run{
     allocate channel c1 type disk maxpiecesize=3500m;
     allocate channel c2 type disk maxpiecesize=3500m;
     backup incremental level 0 database format 'E:\backup\oradata\backup_%T_%s_%p.LV0' tag inc0;
     sql 'alter system archive log current';
     crosscheck archivelog all;
     backup archivelog all format 'E:\backup\arch\backup_%T_%s_%p.arc' tag arch0 delete input;
     crosscheck backup;
     delete noprompt obsolete;
     delete noprompt expired backup;
     release channel c1;
     release channel c2;
}
列出备份信息
List backup; 可以看出有一0级的全备。为了达到实验效果。我手动调整系统时间到2012-08-10并重启DB
然后给DB做增量1级别备份。
Rman_lv1
run{
     allocate channel c1 type disk maxpiecesize=3500m;
     allocate channel c2 type disk maxpiecesize=3500m;
     backup incremental level 1 database format 'E:\backup\oradata\backup_%T_%s_%p.LV1' tag inc1;
     sql 'alter system archive log current';
     crosscheck archivelog all;
     backup archivelog all format 'E:\backup\arch\backup_%T_%s_%p.arc' tag arch1 delete input;
     crosscheck backup;
     delete noprompt obsolete;
     delete noprompt expired backup;
     release channel c1;
     release channel c2;
}
List backup;可以看到昨天的0级备份和今天的增量1级备份;上面rman也没有找到废弃的备份。
我再次重启DB。并且把系统时间调到2012-08-11
然后我给DB做一个0级备份。
脚本如上rman_lv0.
Rman脚本最后开始删除一个备份归档日志,但是没有删除备份的数据文件。
RMAN 保留策略将应用于该命令
将 RMAN 保留策略设置为 2 天的恢复窗口
已废弃的备份和副本报表
类型                 关键字 完成时间           文件名/句柄
-------------------- ------ ------------------ --------------------
备份集               14     09-8月 -12
备份片段       14     09-8月 -12         E:\BACKUP\ARCH\BACKUP_20120809_17_1.ARC
我们继续。我把系统的时间手动调整到2012-08-12。重启DB,并给DB做增量1级备份。
脚本同上rman_lv1;
Rman 脚本跑出这样的结果
RMAN 保留策略将应用于该命令
将 RMAN 保留策略设置为 2 天的恢复窗口
删除以下已废弃的备份和副本:
类型                 关键字 完成时间           文件名/句柄
-------------------- ------ ------------------ --------------------
备份集               12     09-8月 -12
备份片段       12     09-8月 -12         E:\BACKUP\ORADATA\BACKUP_20120809_15_1.
LV0
备份集               13     09-8月 -12
备份片段       13     09-8月 -12         E:\BACKUP\ORADATA\BACKUP_20120809_16_1.
LV0
备份集               14     09-8月 -12
备份片段       14     09-8月 -12         E:\BACKUP\ARCH\BACKUP_20120809_17_1.ARC
备份集               15     09-8月 -12
备份片段       15     09-8月 -12         E:\BACKUP\ARCH\BACKUP_20120809_18_1.ARC
备份集               16     09-8月 -12
备份片段       16     09-8月 -12         E:\BACKUP\ARCH\BACKUP_20120809_19_1.ARC
备份集               21     10-8月 -12
备份片段       21     10-8月 -12         E:\BACKUP\ARCH\BACKUP_20120810_24_1.ARC
备份集               23     10-8月 -12
备份片段       23     10-8月 -12         E:\BACKUP\ARCH\BACKUP_20120810_26_1.ARC
已删除备份片段
备份段 handle=E:\BACKUP\ORADATA\BACKUP_20120809_15_1.LV0 recid=12 stamp=79085598
4
已删除备份片段
备份段 handle=E:\BACKUP\ORADATA\BACKUP_20120809_16_1.LV0 recid=13 stamp=79085598
5
已删除备份片段
备份段 handle=E:\BACKUP\ARCH\BACKUP_20120809_17_1.ARC recid=14 stamp=790855992
已删除备份片段
备份段 handle=E:\BACKUP\ARCH\BACKUP_20120809_18_1.ARC recid=15 stamp=790855993
已删除备份片段
备份段 handle=E:\BACKUP\ARCH\BACKUP_20120809_19_1.ARC recid=16 stamp=790855994
已删除备份片段
备份段 handle=E:\BACKUP\ARCH\BACKUP_20120810_24_1.ARC recid=21 stamp=790942971
已删除备份片段
备份段 handle=E:\BACKUP\ARCH\BACKUP_20120810_26_1.ARC recid=23 stamp=790942972
7 对象已删除
RMAN> list backup of database;
备份集列表
===================
BS 关键字  类型 LV 大小       设备类型 经过时间 完成时间
------- ---- -- ---------- ----------- ------------ ----------
10      Incr 0  234.34M    DISK        00:01:26     09-8月 -12
关键字: 10   状态: AVAILABLE  已压缩: NO  标记: INC0
段名:E:\BACKUP\ORADATA\BACKUP_20120809_14_1.LV0
10 中的数据文件列表
LV 类型 Ckp SCN    Ckp 时间   名称
  ---- -- ---- ---------- ---------- ----
月 -12 E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10G\UND
OTBS01.DBF
月 -12 E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10G\SYS
AUX01.DBF
月 -12 E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10G\EXA
MPLE01.DBF
BS 关键字  类型 LV 大小       设备类型 经过时间 完成时间
------- ---- -- ---------- ----------- ------------ ----------
11      Incr 0  366.57M    DISK        00:01:26     09-8月 -12
关键字: 11   状态: AVAILABLE  已压缩: NO  标记: INC0
段名:E:\BACKUP\ORADATA\BACKUP_20120809_13_1.LV0
11 中的数据文件列表
LV 类型 Ckp SCN    Ckp 时间   名称
  ---- -- ---- ---------- ---------- ----
月 -12 E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10G\SYS
TEM01.DBF
月 -12 E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10G\USE
RS01.DBF
BS 关键字  类型 LV 大小       设备类型 经过时间 完成时间
------- ---- -- ---------- ----------- ------------ ----------
17      Incr 1  552.00K    DISK        00:00:18     10-8月 -12
关键字: 17   状态: AVAILABLE  已压缩: NO  标记: INC1
段名:E:\BACKUP\ORADATA\BACKUP_20120810_21_1.LV1
17 中的数据文件列表
LV 类型 Ckp SCN    Ckp 时间   名称
  ---- -- ---- ---------- ---------- ----
月 -12 E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10G\UND
OTBS01.DBF
月 -12 E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10G\SYS
AUX01.DBF
月 -12 E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10G\EXA
MPLE01.DBF
BS 关键字  类型 LV 大小       设备类型 经过时间 完成时间
------- ---- -- ---------- ----------- ------------ ----------
18      Incr 1  272.00K    DISK        00:00:18     10-8月 -12
关键字: 18   状态: AVAILABLE  已压缩: NO  标记: INC1
段名:E:\BACKUP\ORADATA\BACKUP_20120810_20_1.LV1
18 中的数据文件列表
LV 类型 Ckp SCN    Ckp 时间   名称
  ---- -- ---- ---------- ---------- ----
月 -12 E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10G\SYS
TEM01.DBF
月 -12 E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10G\USE
RS01.DBF
BS 关键字  类型 LV 大小       设备类型 经过时间 完成时间
------- ---- -- ---------- ----------- ------------ ----------
24      Incr 0  235.03M    DISK        00:01:19     11-8月 -12
关键字: 24   状态: AVAILABLE  已压缩: NO  标记: INC0
段名:E:\BACKUP\ORADATA\BACKUP_20120811_28_1.LV0
24 中的数据文件列表
LV 类型 Ckp SCN    Ckp 时间   名称
  ---- -- ---- ---------- ---------- ----
月 -12 E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10G\UND
OTBS01.DBF
月 -12 E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10G\SYS
AUX01.DBF
月 -12 E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10G\EXA
MPLE01.DBF
BS 关键字  类型 LV 大小       设备类型 经过时间 完成时间
------- ---- -- ---------- ----------- ------------ ----------
25      Incr 0  367.06M    DISK        00:01:25     11-8月 -12
关键字: 25   状态: AVAILABLE  已压缩: NO  标记: INC0
段名:E:\BACKUP\ORADATA\BACKUP_20120811_27_1.LV0
25 中的数据文件列表
LV 类型 Ckp SCN    Ckp 时间   名称
  ---- -- ---- ---------- ---------- ----
月 -12 E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10G\SYS
TEM01.DBF
月 -12 E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10G\USE
RS01.DBF
BS 关键字  类型 LV 大小       设备类型 经过时间 完成时间
------- ---- -- ---------- ----------- ------------ ----------
30      Incr 1  320.00K    DISK        00:00:10     12-8月 -12
关键字: 30   状态: AVAILABLE  已压缩: NO  标记: INC1
段名:E:\BACKUP\ORADATA\BACKUP_20120812_33_1.LV1
30 中的数据文件列表
LV 类型 Ckp SCN    Ckp 时间   名称
  ---- -- ---- ---------- ---------- ----
月 -12 E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10G\SYS
TEM01.DBF
月 -12 E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10G\USE
RS01.DBF
BS 关键字  类型 LV 大小       设备类型 经过时间 完成时间
------- ---- -- ---------- ----------- ------------ ----------
31      Incr 1  600.00K    DISK        00:00:21     12-8月 -12
关键字: 31   状态: AVAILABLE  已压缩: NO  标记: INC1
段名:E:\BACKUP\ORADATA\BACKUP_20120812_34_1.LV1
31 中的数据文件列表
LV 类型 Ckp SCN    Ckp 时间   名称
  ---- -- ---- ---------- ---------- ----
月 -12 E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10G\UND
OTBS01.DBF
月 -12 E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10G\SYS
AUX01.DBF
月 -12 E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10G\EXA
MPLE01.DBF
可以看到我们现在还有2012-08-09的数据文件的全备
我们继续。把系统时间调整为2012-08-13.重启DB。并且做0级备份。
脚本同上rman_lv0
最后rman脚本跑出这样的结果
RMAN 保留策略将应用于该命令
将 RMAN 保留策略设置为 2 天的恢复窗口
删除以下已废弃的备份和副本:
类型                 关键字 完成时间           文件名/句柄
-------------------- ------ ------------------ --------------------
备份集               11     09-8月 -12
备份片段       11     09-8月 -12         E:\BACKUP\ORADATA\BACKUP_20120809_13_1.
LV0
备份集               10     09-8月 -12
备份片段       10     09-8月 -12         E:\BACKUP\ORADATA\BACKUP_20120809_14_1.
LV0
备份集               18     10-8月 -12
备份片段       18     10-8月 -12         E:\BACKUP\ORADATA\BACKUP_20120810_20_1.
LV1
备份集               17     10-8月 -12
备份片段       17     10-8月 -12         E:\BACKUP\ORADATA\BACKUP_20120810_21_1.
LV1
备份集               19     10-8月 -12
备份片段       19     10-8月 -12         E:\BACKUP\ORADATA\BACKUP_20120810_22_1.
LV1
备份集               20     10-8月 -12
备份片段       20     10-8月 -12         E:\BACKUP\ORADATA\BACKUP_20120810_23_1.
LV1
备份集               22     10-8月 -12
备份片段       22     10-8月 -12         E:\BACKUP\ARCH\BACKUP_20120810_25_1.ARC
已删除备份片段
备份段 handle=E:\BACKUP\ORADATA\BACKUP_20120809_13_1.LV0 recid=11 stamp=79085588
8
已删除备份片段
备份段 handle=E:\BACKUP\ORADATA\BACKUP_20120809_14_1.LV0 recid=10 stamp=79085589
2
已删除备份片段
备份段 handle=E:\BACKUP\ORADATA\BACKUP_20120810_20_1.LV1 recid=18 stamp=79094293
6
已删除备份片段
备份段 handle=E:\BACKUP\ORADATA\BACKUP_20120810_21_1.LV1 recid=17 stamp=79094293
6
已删除备份片段
备份段 handle=E:\BACKUP\ORADATA\BACKUP_20120810_22_1.LV1 recid=19 stamp=79094296
3
已删除备份片段
备份段 handle=E:\BACKUP\ORADATA\BACKUP_20120810_23_1.LV1 recid=20 stamp=79094296
4
已删除备份片段
备份段 handle=E:\BACKUP\ARCH\BACKUP_20120810_25_1.ARC recid=22 stamp=790942971
7 对象已删除
我们list backup of database;
RMAN> list backup of database;
备份集列表
===================
BS 关键字  类型 LV 大小       设备类型 经过时间 完成时间
------- ---- -- ---------- ----------- ------------ ----------
24      Incr 0  235.03M    DISK        00:01:19     11-8月 -12
关键字: 24   状态: AVAILABLE  已压缩: NO  标记: INC0
段名:E:\BACKUP\ORADATA\BACKUP_20120811_28_1.LV0
24 中的数据文件列表
LV 类型 Ckp SCN    Ckp 时间   名称
  ---- -- ---- ---------- ---------- ----
月 -12 E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10G\UND
OTBS01.DBF
月 -12 E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10G\SYS
AUX01.DBF
月 -12 E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10G\EXA
MPLE01.DBF
BS 关键字  类型 LV 大小       设备类型 经过时间 完成时间
------- ---- -- ---------- ----------- ------------ ----------
25      Incr 0  367.06M    DISK        00:01:25     11-8月 -12
关键字: 25   状态: AVAILABLE  已压缩: NO  标记: INC0
段名:E:\BACKUP\ORADATA\BACKUP_20120811_27_1.LV0
25 中的数据文件列表
LV 类型 Ckp SCN    Ckp 时间   名称
  ---- -- ---- ---------- ---------- ----
月 -12 E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10G\SYS
TEM01.DBF
月 -12 E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10G\USE
RS01.DBF
BS 关键字  类型 LV 大小       设备类型 经过时间 完成时间
------- ---- -- ---------- ----------- ------------ ----------
30      Incr 1  320.00K    DISK        00:00:10     12-8月 -12
关键字: 30   状态: AVAILABLE  已压缩: NO  标记: INC1
段名:E:\BACKUP\ORADATA\BACKUP_20120812_33_1.LV1
30 中的数据文件列表
LV 类型 Ckp SCN    Ckp 时间   名称
  ---- -- ---- ---------- ---------- ----
月 -12 E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10G\SYS
TEM01.DBF
月 -12 E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10G\USE
RS01.DBF
BS 关键字  类型 LV 大小       设备类型 经过时间 完成时间
------- ---- -- ---------- ----------- ------------ ----------
31      Incr 1  600.00K    DISK        00:00:21     12-8月 -12
关键字: 31   状态: AVAILABLE  已压缩: NO  标记: INC1
段名:E:\BACKUP\ORADATA\BACKUP_20120812_34_1.LV1
31 中的数据文件列表
LV 类型 Ckp SCN    Ckp 时间   名称
  ---- -- ---- ---------- ---------- ----
月 -12 E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10G\UND
OTBS01.DBF
月 -12 E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10G\SYS
AUX01.DBF
月 -12 E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10G\EXA
MPLE01.DBF
BS 关键字  类型 LV 大小       设备类型 经过时间 完成时间
------- ---- -- ---------- ----------- ------------ ----------
36      Incr 0  235.03M    DISK        00:00:46     13-8月 -12
关键字: 36   状态: AVAILABLE  已压缩: NO  标记: INC0
段名:E:\BACKUP\ORADATA\BACKUP_20120813_40_1.LV0
36 中的数据文件列表
LV 类型 Ckp SCN    Ckp 时间   名称
  ---- -- ---- ---------- ---------- ----
月 -12 E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10G\UND
OTBS01.DBF
月 -12 E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10G\SYS
AUX01.DBF
月 -12 E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10G\EXA
MPLE01.DBF
BS 关键字  类型 LV 大小       设备类型 经过时间 完成时间
------- ---- -- ---------- ----------- ------------ ----------
37      Incr 0  367.06M    DISK        00:00:51     13-8月 -12
关键字: 37   状态: AVAILABLE  已压缩: NO  标记: INC0
段名:E:\BACKUP\ORADATA\BACKUP_20120813_39_1.LV0
37 中的数据文件列表
LV 类型 Ckp SCN    Ckp 时间   名称
  ---- -- ---- ---------- ---------- ----
月 -12 E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10G\SYS
TEM01.DBF
月 -12 E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10G\USE
RS01.DBF

可以看到已经没有了2012-08-09和2012-08-10的备份数据文件了。

由此我们可以分析得出。因为当前日期为2012-08-13.恢复到两天前,即2012--08-11的任意时间点。那么正好我在2012-08-11正好有0级别备份。所以可以删除前面所有的备份。而当我在2012-08-13之前的时间。如2012-08-12,则两天前为2012-08-10.恢复到这个时间点是需要它的上一次全备,即2012-08-09的全备数据。所以才在2012-08-12备份是不会完全删除2012-08-09的全备数据文件。