rman 的增量备份
差异增量(Differential)
备份低级别或者相同级别备份以来变化的所有数据块,顾名思议,也就是要备前期备份以来的差异数据块
累积增量(Cumulative)
是备份n-1级别(上级)或更低级别以来变化的所有数据块
使用增量备份时,如何缩短RMAN 备份时间
Block ChangeTracking
Block ChangeTracking 是Oracle 10g里推出的特性。 Block change tracking 会记录data file里每个block的update 信息,这些tracking信息保存在tracking 文件里。当启动block change tracking 后,RMAN 使用trackingfile里的信息,只读取改变的block信息,而不用在对整个data file进行扫描,从而提高了RMAN 备份的性能。
block change tracking file 是bitmap file。
默认是禁用Block change tracking的,如果使用增量备份,那么建议开启block change tracking。启用BCT后,不需要其他的维护操作。
第一个0级的增量备份扫描整个datafile。随后的增量备份使用block change tracking file的信息,只扫描自上次备份以来被标记为change 的block。
block change tracking 文件是针对整个数据库,默认情况下,change tracking file 会作为Oracle managed file,在DB_CREATE_FILE_DEST指定的目录下创建。可以放到放到其他的目录。 Oracle 不建议使用rawdevice 来存放change tracking file.如果是RAC 环境,change tracking file 必须放在共享设备上。
RMAN 不支持对change tracking file 的备份与恢复。当数据检测到change tracking file 无效时,就会reset changetracking file。如果我们还原了数据库,那么数据库也会reset block change tracking,并从新进行tracking。
block change tracking file的大小和数据库的大小及 enabled threads of redo 的数量有关系,tracking file 的大小会根据数据库大小的变化和变化。和更新频率没有关系。典型的,单实例下大约DB的1/30000的block 会把track。如果是RAC 环境,在乘以threads。
以下因素会导致file 超过估计值:
(1)为了避免tracking file 占用太多的空间,初始值是10M,然后每次增加10M,如果数据库接近300G,那么trackingfile 不能小于10M,如果接近600G,不能小于20M。
(2)每个datafile,在tracking file里最少需要分配320k的空间,所以如果有大量的小data file, change tracking file 也会相对较大。
启用Block Change Tracking
数据库在open 或者 mounted 状态都可以启用block change tracking.
1.检查DB_CREATE_FILE_DEST参数配置,
DB_CREATE_FILE_DEST 参数用来指定默认的Oracle Managed datafiles 的位置。
在没有指定DB_CREATE_ONLINE_LOG_DEST_n参数的情况下,这个参数也可以用来作为
Oracle-managed control files和online redo logs的默认位置。
SYS@hyyk> show parameter db_create_file_dest
如果使用文件系统目录作为默认的位置,那么这个目录必须是已经存在的,Oracle 不会创建这个目录。并且Oracle对这个目录有足有的操作的权限。使用OMF管理时,在这个目录下生成文件每个名称都是唯一的,这个文件也称为Oracle-Manager file。
2.设置DB_CREATE_FILE_DEST
SYS@hyyk> alter system set db_create_file_dest = '/u01/app/oracle/oradata/hyyk/' scope=both sid='*';
3.验证该参数
SYS@hyyk> show parameter db_create_file_dest
4.启用Block change tracking
SYS@hyyk> alter database enable block change tracking;
5.可以使用v$block_change_tracking 视图查看tracking 启动情况。
col status format a8
col filename format a60
SYS@hyyk> select status, filename from v$block_change_tracking;
禁用Block Change Tracking
SQL> alter database disable block change tracking;
更改change tracking
可以使用alter database rename 语句来修改change tracking file 文件的位置,该命令会更新控制文件里的信息,命令必须在mount 下执行,如果DB 不能shutdown,那么可以先disable,然后指定新的位置在启动,但是这样会丢失以前在tracking file里的数据。
1. 查看当前文件的位置
SQL> select status, filename from v$block_change_tracking;
2.如果可能,关闭数据库
SQL> shutdown immediate
如果可以关闭数据库,跳过如下的sql 继续操作
如果不能关闭,就执行如下的SQL并忽略第3步以后的步骤。
SQL> alter database disable block changetracking;
SQL> alter database enable block change tracking using file 'new_location';
注意:这里是禁用bct,在启动时更改bct位置,这种情况,会丢失所有的bct 文件的内容。在下次执行0级增量备份时会扫描整个数据文件。
3.在操作系统级别移动change tracking file文件到新的位置。这个是在关闭数据库的前提下进行。
mv /u01/app/oracle/oradata/hyyk/block_change_tracking.f /u01/ block_change_tracking.f
4. 启动数据库到mount状态,移动change tracking 文件位置。
SQL> startup mount
SQL> alter database rename file '/u01/app/oracle/oradata/hyyk/block_change_tracking.f' to '/u01/ block_change_tracking.f';.
5.打开数据库,验证
SQL> alter database open;
SQL> select status, filename from v$block_change_tracking;