1. Incremental Backups(增量备份)
建立增量备份,指定参数INCREMENTAL LEVEL=n,增量备份可以创建两个级别,用整型数字0…n表示(n最大不超过4),从0级开始,所有增量备份都必须先创建0级备份。0级备份相当于数据库的完整备份。
使用BACKUP DATABASE也是创建数据库的完整备份,但这种完全备份不等同于增量备份中的0级备份,因为常规的完全备份中不包含增量备份策略,并不支持在其基础上创建增量备份集。
级别为1的增量备份还可以分为differential incremental backup和cumulative incremental backup
1) differential incremental backup(默认,差异增量备份)
Sunday
对数据库做0级的增量备份(全备份)。
Monday - Saturday
周一至周六,对数据库做1级的差异增量备份,主要备份最近一次的0级或1级增量备份后数据块的改变。
2)Cumulative Incremental Backups(累计增量备份)
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 可以使用下面的语句禁用块修改跟踪: 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: |
批注:当前时间是1月23号,当备份时间保留策略设置为7天时,可以对1月16号至23号之间的时间点进行恢复,因此14号做的备份需要恢复,归档日志序列号是从500至850,而归档日志序列号500之前的备份都已经过期。
批注:当前时间是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 默认情况下备份集信息最长会在控制文件中保存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 # Specifies that backupset 2 is no longer exempt from the retention policy # Creates a backup that is indefinitely exempt from the retention policy |
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; |