九. 增量备份

通过增量备份,RMAN 允许用户只备份上次增量备份以来被修改过的数据块。 增量备份具有以下有点:

(1)更少的使用磁盘或磁带

(2)降低网络宽带要求

(3)节约备份时间

可以在联机或脱机模式,Archivelog 模式或者noarchivelog 模式中执行增量备份。 一旦选择了增量备份策略,就会在效益方面的问题。 如果显着

减少了整个备份操作的时间,在恢复操作方面就会投入更多的时间。 这是因为如果使用增量备份策略,Oracle 就需要使用更多的备份集来恢复数据

库,恢复所需要的时间就会显着增加。


9.1 块更改跟踪文件

默认情况下,当执行增量备份时,发生任何更改的所有数据文件都将备份。 这可能使增量备份花费更长的时间,并且会增加增量备份的大小。 10g中

RMAN 提供了只备份更改过的数据块的功能。 这就可以加快增量数据库备份的速度并减少其大小。 执行alter database enable block change

tracking 命令可以启用块更改跟踪。

如果使用Oracle管理文件(OMF),Oracle 将会创建块更改跟踪文件。 如果没有使用OMF,则必须定义块更改跟踪文件的位置和名称。 如:

Alter database enable block change tracking using file 'F:/backup/block.fil';

如果跟踪文件已经存在,可以使用reuse参数:

Alter database enable block change tracking using file 'F:/backup/block.fil' reuse;

使用alter database block change tracking 命令可以禁用块更改跟踪。 块更改跟踪文件的大小通常预先分片且与数据库大小和重做日志线程的数

量有关。 块更改跟踪文件的大小一般是数据库大小的1/30000。 块更改跟踪文件可能会以10MB为增量增长。 块更改跟踪文件的最小尺寸是每个数据

文件320k,如果有许多数据文件,则块更改跟踪文件就会较大。 Oracle 会在块更改跟踪文件中存储足够的信息,从而允许最多8天的增量备份。 显

而易见,如果增量备份超过8天,则将不使用块跟踪更改跟踪文件,并且无法利用块跟踪文件的有点。

可以通过检查v$block_change_tracking 视图来确定是否启用了块更改跟踪。 Status 指示了是否启用了块更改跟踪,filename 包含块更改跟踪文件

的文件名。可以通过alter database rename file 命令来转移块更改跟踪文件。

SQL> select status,filename from v$block_change_tracking;

STATUS     FILENAME

---------- ------------------------------------------------------

ENABLED    F:/BACKUP/BLOCK.FIL


9.2 基本备份

执行增量备份操作时,首先需要的是增量基本备份(incremental base backup),以后所有的增量备份都基于这个基本备份。 每次执行数据库备份操

作时,都可以通过backup 命令的incremental 参数来为备份指定一个增量级别标识符。 基本备份的增量级别为0,并且必须有基本备份才能够执行其

他类型的增量备份操作。 如果没有生成基本备份就尝试执行增量备份操作,RMAN会自动执行基本备份操作。 示例:

Backup incremental level=0 database;


9.3 差异备份与增量备份


9.3.1 差异备份

差异备份是RMAN生成的增量备份的默认类型,对于差异备份来说,RMAN会备份自上次同级或者低级差异增量备份以来所发生变化的数据块。

Backup incremental level=1 database;


9.3.2 累积备份

累积备份可以使备份集备份前面所有级别的备份以及此次要备份的所有发生变化的数据块。 累积备份是一个可选的备份方法,并要求在backup 命令

中使用cumulative 关键字。

Backup incremental level =2 cumulative database;


9.3.3 增量备份选项

Oracle 不仅允许执行数据库的增量备份,还允许执行表空间,数据文件以及数据库文件副本的增量备份操作。 控制文件,归档重做日志以及备份集

都不能生成增量备份。 此外,还可以在执行增量备份操作时同时备份归档的重做日志。

Backup incremental level=0 tablespace users;

Backup incremental level=1 tablespace users;

Backup incremental level=0 datafile 4;

Backup incremental level=1 datafile 4;

Backup incremental level=1 database plus archivelog;


9.3.4 增量备份更新备份

RMAN 提供了增量备份更新备份。 这种备份避免了采用数据文件的完整映像副本进行备份的开销,并且具有与映像副本相同的恢复特性。 从某种意义

上来说,这种备份类似与使用映像副本的增量备份。

Run{

Recover copy of database with tag 'Orcl';

Backup incremental level 1 for recover of copy with tag 'Orcl' database;

}

示例中的recover of  copy  database 命令并没有真正的恢复数据库,但它使RMAN将任何增量备份应用于与列出标记(Orcl)关联的数据文件副本。

第一次运行该命令时,它将没有任何效果,因为它没有任何可用的增量备份或数据文件副本。 这并不是很严重的问题,并且RMAN 将只显示一条警告

消息。 第二次运行该命令时也没有任何效果,因为没有任何增量备份可用。

执行recover 命令后,就会产生一个增量备份,这个备份第一次运行时,它会创建一个基本备份(如果没有的话)。这实际上增量为1的备份。 第二

次执行这个run代码块时,将通过backup 命令执行第一个增量备份。

一旦该命令运行了2次,第三次执行和后面的执行就能够将前面的增量备份应用与数据文件副本。 注意,recover 和backup命令中将标记赋予相同的

名称非常重要。



oracle视频教程请关注:http://u.youku.com/user_video/id_UMzAzMjkxMjE2.html