增量备份,是指在完整备份的基础上,每次只是备份自上次备份以来被修改过的数据块。增量备份策略不能用于映像备份,因为映像备份总是对于所有的数据文件。增量备份可以是数据库、数据文件和表空间三个级别。
一、增量备份的种类
第一、累积增量备份
累积增量备份是指自累积备份自上次完整数据库备份或上一次LEVEL 0差异增量备份以来所修改过的数据块.

第二、差异增量备份
差异增量备份有分为level 0和level1两种。
其中,level 0是指在上一次完整备份或level 0级别的差异增量备份的基础上进行的第一次差异备份,期间会扫描所有的数据块,判断自上次完整备份后有哪些数据块被更新过,然后,对这些数据块进行备份。
而level 1是指自上一次level 0或level 1差异备份之后,有哪些数据块被更新过,然后备份这些数据块。如果没有进行过level 0 的备份则会先进行level 0的备份。期间,如果没有启动块修改跟踪特性(Block Change Tracking)的话,将会有进行对所有数据块的扫描。为此,为了提高性能,自10g以来增加了Block Change Tracking文件,来保存自上次level 0或level 1以来更新的所有数据块记录。
查看是否启动了Block Change Tracking:
SQL> select status from v$block_change_tracking;
STATUS
----------
DISABLED
启动Block Change Tracking:
SQL> alter database enable block change tracking using file 'rman_inc.trk';
Database altered.
关闭Block Change Tracking:
SQL> alter database disable block change tracking using file 'rman_inc.trk';
Database altered.
查看Block Change Tracking文件的位置与大小:
SQL> select * from v$block_change_tracking;
STATUS FILENAME BYTES
---------- -------------------------------------------------- ----------
ENABLED D:\APP\ASUS\PRODUCT\11.2.0\DBHOME_1\DATABASE\RMAN_ 11599872
INC.TRK
三、增量备份原理
1、查找更新过的数据块
首先需要知道的是,每个数据块都有一个block scn,该scn记录的是该数据块最近一次被修改的时间。然后跟最近的一次备份对应的备份时间SCN进行比较,如果block scn大于或等于scn说明该数据块被修改过,需要进行备份。如果已经开启了block change tracking功能而且已经进行过LEVEL 0级别的备份,则这些block就会被记录在block change tracking文件中。以便下一次LEVEL 1的时候使用。
2、增量备份原理
每次LEVEL 1备份后,都会参照前一次增量备份LEVEL 1或LEVEL 0的备份数据的SCN,也就是incremental start scn 。对于当前所有的数据块,如果数据块的block scn比incremental start scn大或等于其的数据块都会是本次LEVEL 1备份的对象,然后就备份这些数据块。
3、利用增量备份进行恢复的原理
介绍前需要了解两点:
第一,每个数据文件都有一个checkpoint_change#,可以通过v$datafile_checkpoint_change#来查看。该数据文件中的所有数据块的block scn都必须小于或等于该checkpoint_change#.
第二,每个备份集,包括增量备份集、全量备份集,其中的数据都是数据文件在某个时间点中的数据块,也就是其中的所有数据块的block scn都是一样的。在这里称其为backup_change#。
原理:恢复的时候,相当于复制这些备份集中的数据块到对应的数据文件中,覆盖原有数据块,同时修改数据块头的checkpoint_change#以及控制文件中的对应数据文件记录的checkpoint_change#。
应用:该备份可以用来修复nologging操作可能带来的非一致性风险。因为增量备份是应用所有修改的数据块,nologging的数据块是新的,也就是修改过的,也是增量备份的对象。因此,进行完nologging操作的批量插入操作之后,通常需要进行一次增量备份。
增量备份的优势:
第一,如果恢复的时候,有两条路选择:一是,通过备份的归档日志文件进行前滚的方式修复;一是,通过复制应用增量备份的数据来恢复。那么增量备份因为方式简单,而使得比redo修复更有效率;
第二,由于映像文件是可以直接使用,不像备份文件那样需要先进行还原操作。为此,如果如果可以的话,可以用映像文件跟增量备份文件结合,减少还原数据量,从而提高还原恢复的效率。