简介
Block ChangeTracking 是Oracle 10g里推出的特性,简称BCT。
BCT 的状态有两种:enable 表示已经启用BCT ,disable 表示没有启用。该特性默认是关闭的,即disabled。
BCT启用以后将会在后台创建一个名称为CTWR 的进程。
块变化跟踪文件是位图文件。
如果是RAC 环境,change tracking file 必须放在共享设备上。
查询BCT状态:
select status from V$block_change_tracking;
BCT的作用
Block change tracking 会记录datafile(数据文件)里每个block的update 信息,这些tracking信息保存在tracking 文件里。 当启动block change tracking 后,RMAN 使用trackingfile里的信息,只读取改变的block信息(扫描自上次备份以来被标记为change 的block),而不用在对整个data file进行扫描,从而提高了RMAN 备份的性能。
当启用了incrementalbackup时,建议开启block change tracking。 启用BCT后,不需要其他的维护操作。
数据库在每次备份之前执行位图切换。OracleDatabase自动管理更改跟踪文件中的空间,以保留包含八个最新备份的块更改数据。当到达8个位图的最大值后,最老的位图将被跟踪当前变化的位图覆盖。
在开发增量备份策略时,请考虑8位图的限制。例如,如果执行0级数据库备份,然后执行7个不同的增量备份,那么块更改跟踪文件现在包括8位图。如果随后进行了累积级1增量备份,则rman无法优化备份,因为与parentlevel 0备份对应的位图会被跟踪当前更改的位图覆盖。
关于不同级别增量备份的概念可查看文章“RMAN教程—备份”
BCT文件位置
BCT是针对整个数据库的。默认情况下,changetracking文件是作为一个Oracle托管文件创建的。由DB_CREATE_FILE_DEST 初始化参数设定默认位置。也可以将更改跟踪文件放置在您选择的任何位置,方法是在启用块更改跟踪时指定它的名称。Oracle不建议使用原始设备(即没有文件系统的磁盘)作为更改跟踪文件。
如果是RAC 环境,change tracking file 必须放在共享设备上。
RMAN不支持BCT文件的备份和恢复。当数据库确定BCT文件无效时,它将重置BCT踪文件。如果您恢复整个数据库或一个子集,那么数据库将重置BCT文件并再次开始跟踪更改。进行0级增量备份后,下一个增量备份可以使用更改跟踪数据。
查询BCT文件名称及位置:
select filename from V$block_change_tracking;
BCT文件的大小
BCT文件的大小与数据库的大小和启用重做线程的数量成比例。BCT文件的大小可以随着数据库的更改而增加或减少。大小与数据库更新的频率无关。
通常,单个实例的BCT文件所需的空间大约是要跟踪的数据块大小的1/30,000。对于Oracle RA,它是数据库大小的1/30,000,乘以启用的线程数。
为了避免在数据库增长时分配空间的开销,BCT文件大小从10兆字节开始。新空间以10 MB的增量分配。因此,对于任何高达300GB的数据库,文件大小不小于10mb,对于高达600GB的数据库,文件大小不小于20mb,依此类推。
对于每个数据文件,无论数据文件的大小如何,BCT文件中至少分配320 kb的空间。因此,如果您有大量相对较小的数据文件,那么对于包含相同数据的较大数据文件的数据库来说,BCT文件要大一些。
启用或关闭BCT
数据库在open 或者 mounted 状态都可以启用blockchange tracking。
如果该参数没有设置,并且数据库是open 状态,可可以修改该参数。
修改默认位置:
alter system set db_create_file_dest = '/u01/bct/' scope=both sid='*';
开启BCT并指定BCT文件路径:
alter database enable block change tracking using file 'E:\oracle\zeng\oradata\BCT\bct.txt' reuse;
reuse 关键字表示如果指定的文件存在覆盖掉已经存在的文件。
关闭BCT特性:
alter database disable block change tracking;
当disable BCT 的时候跟踪文件将会被删除。
移动BCT文件
要移动BCT文件,请使用ALTER DATABASE RENAME file语句。数据库必须是mounted状态。该语句更新控制文件以引用新的位置并保存更改跟踪文件的内容。如果无法关闭数据库,则可以禁用和启用块更改跟踪。在这种情况下,您将丢失现有块更改跟踪文件的内容。
如果可以,先关闭数据库:
shutdown immediate
使用主机操作系统命令,将BCT文件移动到它的新位置。
mount数据库并将BCT文件移动到有更多空间的位置。例如:
alter database rename file '/disk1/bct/RDBMS/changetracking/o1_mf_2f71np5j_.chg' to '/disk2/bct/RDBMS/changetracking/o1_mf_2f71np5j_.chg';
打开数据库:
alter database open;