1. Incremental Backups(增量备份)

建立增量备份,指定参数INCREMENTAL LEVEL=n,增量备份可以创建两个级别,用整型数字0…n表示(n最大不超过4),从0级开始,所有增量备份都必须先创建0级备份。0级备份相当于数据库的完整备份。

使用BACKUP DATABASE也是创建数据库的完整备份,但这种完全备份不等同于增量备份中的0级备份,因为常规的完全备份中不包含增量备份策略,并不支持在其基础上创建增量备份集。

级别为1的增量备份还可以分为differential incremental backupcumulative incremental backup

1) differential incremental backup(默认,差异增量备份)

wKioL1NHOOTxTNCzAACkI0MH2FQ505.jpg

  • Sunday

对数据库做0级的增量备份(全备份)。

  • Monday - Saturday

周一至周六,对数据库做1级的差异增量备份,主要备份最近一次的0级或1级增量备份后数据块的改变。

2)Cumulative Incremental Backups(累计增量备份)

wKioL1NHOVXS_CL5AAC4bejaOk0006.jpg

  • Sunday

对数据库做0级的增量备份(全备份)。

  • Monday - Saturday

周一至周六,对数据库做1级的累计增量备份,主要备份最近一次0级增量备份后数据块的改变,因为最近一次的增量备份是在周日,所以每天备份从周日以来数据块的改变。

2.增量备份策略

可以对数据库每月做一个全备,每周做一个累计增量备份,每天做一个差异增量备份。

一般情况下,对于上次备份以来,数据库有超过20%的数据发生改变,可以做一个全备份;

下面显示自上次全备以来,数据文件改变量超过50%的信息:

SQL> SELECT FILE#, INCREMENTAL_LEVEL, COMPLETION_TIME, BLOCKS, DATAFILE_BLOCKS
  2  FROM V$BACKUP_DATAFILE
  3  WHERE INCREMENTAL_LEVEL > 0 AND BLOCKS / DATAFILE_BLOCKS > .5
  4  ORDER BY COMPLETION_TIME;

比如,只创建了一个1级的累计增量备份,自上次全备以来的所有增量备份数据文件的改变量超过了50%,那么就做一个全备份。

增量备份注意事项:

在9i及以前的版本,不管是否是增量备份,RMAN在执行备份时都需要先将所有数据全部读入内存,检查每一个数据块头的SCN信息,并于增量备份的父备份集相比较来确定块是否被修改。如果发现块被修改过,则该块所在的数据文件都要从新备份(检查是在块一级,备份是在数据文件级)。

在10g提供了块修改跟踪(Block Change Tracing),RMAN不再扫描数据文件中的每一个块了,直接通过这块修改跟踪文件就可以获取那些修改块的信息。

通过下面的语句启用块修改跟踪:

SQL> ALTER DATABASE ENABLE BLOCK CHANGE TRACKING USING FILE '/u01/app/BLOCK_TRAC/TRK_FILENAME';

Database altered.

可以使用下面的语句查询是否启用块修改跟踪:

SQL> SELECT STATUS FROM V$BLOCK_CHANGE_TRACKING;

STATUS
----------
ENABLED

可以使用下面的语句禁用块修改跟踪:

SQL> ALTER DATABASE DISABLE BLOCK CHANGE TRACKING;

Database altered.

3.控制文件和参数文件的自动备份

鉴于数据库控制文件和参数文件的重要性,数据库支持控制文件和参数文件的自动备份。

在控制文件丢失或损坏,并且没有恢复目录的情况下,控制文件的自动备份能够使你从RMAN的存储库中进行修复。比如:

RESTORE CONTROLFILE FROM AUTOBACKUP;

在恢复并加载完控制文件后,通过备份信息可以对数据库进行修复和恢复。你可以在没有恢复目录的模式下连接目标实例实现对数据库的恢复;也可以建立一个新的恢复目录并注册数据库,RMAN将会记录拷贝到新创建恢复目录中的控制文件。

控制文件的自动备份独立于那些使用backup命令备份的控制文件,可以使用on或off来开启或关闭控制文件的自动备份,如下:

CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP OFF;

4.备份保留策略

RMAN提供了两种备份保留策略:基于时间和基于冗余数量的备份保留策略

RMAN可以使用下列命令不使用任何备份保留策略:

RMAN>CONFIGURE RETENTION POLICY TO NONE;

1)Recovery Window(基于时间的备份保留策略)

设置RMAN基于时间的保留策略就是保证数据库最早恢复到前几天。

CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF n DAYS;

下面将设置恢复时间段为7天,如下:

RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;

old RMAN configuration parameters:
CONFIGURE RETENTION POLICY TO REDUNDANCY 3;
new RMAN configuration parameters:
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
new RMAN configuration parameters are successfully stored

wKioL1NHT6WzviEzAADRS1qKyhA468.jpg

批注:当前时间是1月23号,当备份时间保留策略设置为7天时,可以对1月16号至23号之间的时间点进行恢复,因此14号做的备份需要恢复,归档日志序列号是从500至850,而归档日志序列号500之前的备份都已经过期。

wKioL1NHUnvwiDaqAADFQ6oJYzc611.jpg

批注:当前时间是1月30号,当备份时间保留策略设置为7天时,可以对1月23号至30号之间的时间点进行恢复,注意,尽管最近一次的备份是在1月28号,但是1月14号做的一次备份并没有过期。为了保重基于时间保留策略的恢复点,要对14号做的备份进行恢复,归档日志序列号是从500至1150。

总结:备份和备份策略的目的都是为了更好的保证数据不丢失,基于时间的保留策略进行恢复时,是基于保留策略最早的时间点之前的那一次备份进行恢复。

提示:控制文件中记录保存时间有可能对备份保留策略影响

对于在NOCATALOG下创建的备份,RMAN的备份集信息都是保存在目标端控制文件中,其中能够保存控制文件的也是有限的,通过初始化参数control_file_record_keep_time可以查看保存时间:(单位:天)

SQL> show parameter control_file_record_keep_time;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
control_file_record_keep_time        integer     7

默认情况下备份集信息最长会在控制文件中保存7天,超过7天,如果控制文件空间不足需要重新记录,超期的可能会被覆盖,在重用记录中不管你在RMAN中设置的备份保留时间是多久。

因此建议control_file_record_keep_time初始化参数值不小于在RMAN中设置的备份保留时间。

当前控制文件中分配的空间中,可存储和已存储记录数,可查看视图v$controlfile_record_section获取。

2)Backup Redundancy(基于冗余数量的备份保留策略)

RMAN基于冗余数量的备份保留策略实质上是某个数据文件以各种格式(包括备份集和映像副本)存在的备份的数量,如果某个数据文件的冗余数量超出了指定数量,RMAN将废弃最旧的备份。

CONFIGURE RETENTION POLICY TO REDUNDANCY  n;

示例:设置冗余数量为2,如下

CONFIGURE RETENTION POLICY TO REDUNDANCY 2;

3)Batch Deletes of Obsolete Backups(批量删除过期的备份)
如果不设置任何保留策略,使用report obsolete和delete obsolete命令不会有任何匹配的记录.

RMAN对于OBSOLETE和EXPIRED的定义,对于手工删除的文件,物理上已经存在的,在执行了CROSSCHECK命令之后,RMAN将其标记为EXPIRED;对于那些超出了备份保留策略的备份集备份片段,则标记为OBSOLETE。

4)Exempting Backups from the Retention Policy(免除备份保留策略)

此种策略主要用于希望长期保存备份文件,示例如下:

# Creates a backup and exempts it from retention policy until last day of 2007
BACKUP DATABASE KEEP UNTIL TIME "TO_DATE('31-DEC-2015' 'dd-mon-yyyy')" NOLOGS;

# Specifies that backupset 2 is no longer exempt from the retention policy
CHANGE BACKUPSET 2 NOKEEP;

# Creates a backup that is indefinitely exempt from the retention policy
BACKUP TABLESPACE users KEEP FOREVER NOLOGS;

5.Backup Optimization(备份优化)

满足下列条件,才能够启用备份优化功能:

  • CONFIGURE BACKUP OPTIMIZATION参数设置为 ON 

  • 执行的BACKUP DATABASE, BACKUP ARCHIVELOG 命令中带有ALL或LIKE参数,或者BACKUP BACKUPSET ALL.

  • 分配的通道仅使用一种设备类型,也就是不能同时分配使用SBT与DISK的多个通道

通过如下命令打开或关闭优化设置:

RMAN> CONFIGURE BACKUP OPTIMIZATION ON;
RMAN> CONFIGURE BACKUP OPTIMIZATION OFF;