INCREMENTAL BACKUP
增量备份:ORACLE允许我们使用RMAN只备份上次增量备份以来被更改的数据库。增量备份只能是在RMAN中执行,既可以联机,也可以脱机,既可以ARCHIVELOG,也可以NOARCHIVELOG。对于增量备份,他只能作用于数据文件,不能作用于归档日志。
增量备份的类型:差异备份,累积备份。
差异备份:差异备份是增量备份的默认类型,对于差异备份,RMAN会备份自上次同级或者低级差异增量备份别以来的所变化的BLOCK.
比如说:星期一执行level 0的基备,星期二执行 level 2的差异备份,星期三执行 level 2的差异备份,星期四执行 level 1的差异备份,那么星期二就会备份星期一level 0备份之后到星期二所变化的BLOCK,星期三会备份星期2 level 2备份之后到星期3所变化的BLOCK,星期四会备份星期一level 0备份之后到星期四的BLOCK。
累积备份:累积备份积累了任何同级或者低级增量备份操作所发生变化的BLOCK. 比如说:星期一执行level 0的基备,星期一执行level 2的差异增量备份,星期二执行一个 level 2的差异增量备份,星期3执行一个 level 1的累积增量备份,那么此时的累积增量备份包含level 0备份之后到星期三备份时变化的block.星期4执行一个level 1的累积增量备份,那么此时的累积增量备份将包含level 0备份之后到星期四备份时变化的block.星期五执行一个level 2的累积增量备份,那么此时就只能备份星期四 level 1累积备份之后到星期五所变化的BLOCK.
在10g中,ORACLE推荐使用0,1两个级别的增量备份,因为这样的备份策略完全可以满足备份策略,在9i中备份级别可以设置从0--4,不过在10g中仍然可以这样设置,它不会把你设置的level 2 当成level 1,我在itpub论坛上面看见有网友说10g会忽略高于1级别的设置,其实这个是不正确的,不相信的人可以做实验验证。我这里列出一小段备份信息:
BS 关键字 类型 LV 大小 设备类型 经过时间 完成时间
------- ---- -- ---------- ----------- ------------ ----------
120 Incr 2 152.00K DISK 00:00:02 02-11月-09
BP 关键字: 127 状态: AVAILABLE 已压缩: NO 标记: TAG20091102T152809
段名:C:/ORACLE/PRODUCT/10.2.0/FLASH_RECOVERY_AREA/ROBINSON/BACKUPSET/2009_11_02/O1_MF_NNND2_TAG20091102T152809_5GX2JBG5_.BKP
备份集 120 中的数据文件列表
文件 LV 类型 Ckp SCN Ckp 时间 名称
---- -- ---- ---------- ---------- ----
1 2 Incr 14415980 02-11月-09 C:/ORACLE/PRODUCT/10.2.0/ORADATA/ROBINSON/DATAFILE/O1_MF_SYSTEM_5CLYNO0Q_.DBF
2 2 Incr 14415980 02-11月-09 C:/ORACLE/PRODUCT/10.2.0/ORADATA/ROBINSON/DATAFILE/O1_MF_UNDOTBS1_5CLYNO9G_.DBF
3 2 Incr 14415980 02-11月-09 C:/ORACLE/PRODUCT/10.2.0/ORADATA/ROBINSON/DATAFILE/O1_MF_SYSAUX_5CLYNO3J_.DBF
4 2 Incr 14415980 02-11月-09 C:/ORACLE/PRODUCT/10.2.0/ORADATA/ROBINSON/DATAFILE/O1_MF_USERS_5CLYNOBW_.DBF
5 2 Incr 14415980 02-11月-09 C:/ORACLE/PRODUCT/10.2.0/ORADATA/ROBINSON/DATAFILE/O1_MF_ROBINSON_5CMKM0DV_.DBF
6 2 Incr 14415980 02-11月-09 C:/ORACLE/PRODUCT/10.2.0/ORADATA/ROBINSON/DATAFILE/UNDO2.DBF
注意看LV列,他们为2,没有被处理为1,所以10g中仍然保留了9i的0--4的备份级别。
10g中的增量备份策略:由于10g推荐使用0,1这两个级别的备份来完成增量备份,所以,差异备份就只能是上一次增量备份以来所变化的BLOCK,累积备份就是level 0到此次要备份期间所变化的block(10g中最好不要设置高于1的级别,0,1两种级别完全够用)。
10g中增量备份的增强:在9i中,相信很多DBA都不愿意用增量备份,因为需要扫描整个数据文件,以判断BLOCK是否发生变化,10g中改善了这个情况,我们可以创建一个块更改跟踪文件来记录变化的BLOCK,从而避免扫描整个数据文件。可以查看
v$block_change_tracking视图来判断是否启用了块更改跟踪。创建块更改跟踪文件的语法如下:
alter database enable block change tracking using file 'c:/block_change/block_change.log';这个文件的大小默认为10m,或者11m,以10m为增长量,它的大小一般是整个数据库的1/30000,它是用位图来记录BLOCK是否发生变化,所以它很小,但是它有个缺点就是它只能存放8天的信息,所以如果你采用了增量备份的策略,建议7天一个循环做一个level 0的基备。