1. 简介
Rman 一个强大的功能是支持增量备份,增量备份中心思想就是减少备份的数据量,使用增量备份后就可以不用从头开始备份了,只需要备份自上次已备份之后的数据块开始进行数据备份。
Oracle 的增量备份分为差异增量备份(Differential Incremental Backup)和积累增量备份(Cumulative Incremental Backup)两种 。
2. 增量备份的原理
每一个数据块上都包含一个 SCN,SCN 可以标识最近一次对数据区块的变更。在增量备份的过程中,Rman 读取每一个数据块的 SCN 与之前备份的 SCN 相比较,从而判断出数据区块是否发生了变化,然后根据此进行备份。但是需要注意的是,在早期版本,即使是数据块只有小的变化,Rman 扫描的时间也可能会极其漫长。Oracle 10g 引入了区块变化跟踪特性解决了这一问题。
2.1. 0级备份和完全备份的区别
The only difference between a level 0 incremental backup and a full backup is that a full backup is never included in an incremental strategy.
翻译:0级增量备份和完全备份之间的唯一区别是,完全备份永远不会包含在增量策略中。
全备份和0级增量备份几乎是一样的。唯一的区别,0级增量备份能作为增量备份的基础,而全备份不能作为增量备份的基础。
2.2. 差异增量备份(Differential Incremental Backup)
差异增量备份是 Rman 生成的增量备份的默认类型。差异备份是指 rman 备份最近一次的 level 1
或 level 0
之后所有发生变化的数据块。
例如:我们在星期天执行 Level 0
级备份操作,这个备份操作会备份整个数据库。根据这个 Level 0
级备份,我们在星期一执行 Level 1
级差异增量备份操作,该备份操作将备份自周日 Level 0
级备份以来所有发生变化的数据块。在周二时 Level 1
级增量备份将备份所有自周一 Level 1
级备份以来发生变化的数据块。
如果要执行恢复操作,就需要星期一、星期二生成的备份以及星期天生成的0级基础备份。
2.3. 累积增量备份(Cumulative Incremental Backup)
累积增量备份是指rman备份最近一次 level 0
级备份之后所有发生变化的数据块。
例如:我们在星期天执行 Level 0
级备份操作,此时会备份整个数据库。随后,我们星期一执行 Level 1
级累积增量备份操作,该备份操作将备份自周日 Level 0
级备份以来所有发生变化的数据块。在星期二进行另一个 Level 1
级累积增量备份操作,不仅包含星期一的累积备份以后发生变化的数据块,而且还含有星期一生成的备份中所包含的数据块。
因此,累积备份累积了任何同级或低级增量备份操作包含的所有发生变化的数据块。如果要执行恢复操作,就只需要星期二生成的备份以及星期天生成的0级基础备份。
2.4. 差异增量备份与累积增量备份比较
-
恢复速度
累积增量备份能更快地把文件覆盖回去(restore)、因为只需在少量被覆盖的文件上应用日志(recover)。 -
备份速度
差异增量备份能花费更少的时间、因为不涉及到之前的备份,然而代价是要更长的时间来恢复。 -
磁盘空间
累积增量备份需要更多的磁盘空间、因为它会进行重复劳动、把之前的备份也给备份。
2.5. 区块变化跟踪
在10g中rman做增量备份不再需要扫描整个数据文件了,10g引入的新特性 block change tracking
。Block change tracking进程记录自从上一次备份以来数据块的变化,并把这些信息记录在跟踪文件中。RMAN使用这个文件判断增量备份中需要备份的变更数据。这极大的促进了备份性能,RMAN可以不再扫描整个文件以查找变更数据。
block change tracking实现了如下功能:
- 维护了一个record,记录了自上次备份以来的被修改的数据块。
- 当redo生成的时候,将这个record写到文件中。
- 当执行增量备份时,会自动访问这个文件,以加快备份速度。
开启block change tracking
SQL> alter database enable block change tracking using file '+DATAC1';
Database altered
查看block change tracking
SQL> set lines 300 pages 999
SQL> col filename for a80
SQL> SELECT * FROM v$block_change_tracking;
STATUS FILENAME BYTES CON_ID
---------- ---------------------------------------------------------- ---------- ----------
ENABLED +DATAC1/LZUDB/CHANGETRACKING/ctf.279.1067373977 11599872 1
附录
A、相关联的文档
Oracle Rman 备份实践:http://dba.qishuo.xin/?p=886
RMAN备份信息查询:http://dba.qishuo.xin/?p=898