Block Change Tracking 是在oracle 10G就推出的新特性,主要作用是用来提高RMAN备份的性能,Block Change Tracking会记录datafile里每个block的update信息,这些信息保存在tracking文件里,启动这个特性之后,RMAN就会使用trackfile里的信息,读取改变的block信息,从而提高性能。
oracle默认是禁用这个特性的,而且这个特性只在增量备份的时候才有用,如果生产系统中使用了增量备份的话,这个特性建议开启,并且BCT不需要其他维护成本。
在RMAN备份的时候,如果是第一个0级备份,oracle会扫描整个数据库,随后的增量备份使用BCT file里的信息,只扫描改变过的数据块。BCT file可以在DB_CREATE_FILE_DEST目录下找到,如果是rac环境的话,这个文件必须放在共享设备上,至于为什么就不用说明了吧。
上面说过开启BCT这个特性,不需要其他维护,如果BCT file无效时,就会reset BCT file。如果对数据库进行还原的话,那也会reset BCT file,然后重新开始tracking。当然要使用这个特性,还需要注意一点就是BCT file 的大小:
1. 为了减少BCT file所占用的空间,初始值默认是10M,每次增长10M,如果数据库在500G左右,文件不能小于20M。
2. 每个datafile在tracking file里最少需要分配320K的空间,所以如果数据库有大量的datafile,那么BCT file也会随之增大。
下面我们来看下BCT的应用,首先检查DB_CREATE_FILE_DEST参数的配置,默认数据库是没有配置这个参数的,为该参数设置一个值:
PgSQL
SQL> alter system set db_create_file_dest = '/opt/oracle/oradata/bctfile/' scope=both sid='*';
System altered.
1
2
SQL>altersystemsetdb_create_file_dest='/opt/oracle/oradata/bctfile/'scope=bothsid='*';
Systemaltered.
启动Block Change Tracking
PgSQL
SQL> alter database enable block change tracking;
1
SQL>alterdatabaseenableblockchangetracking;
同时可以使用v$block_change_tracking视图查看BCT的启动情况。当然也可以用另一种方式启动BCT,即在启动的时候配置参数目录:
PgSQL
SQL>alter database enable block change tracking using file '/opt/oracle/oradata/jerry/block_change_tracking.f' reuse;
1
SQL>alterdatabaseenableblockchangetrackingusingfile'/opt/oracle/oradata/jerry/block_change_tracking.f'reuse;
这里带了一个reuse参数,这个选项是可选的,设置这个参数后,如果BCT file已经存在,那么oracle也会覆盖已经存在的文件。
禁用BCT:
PgSQL
SQL> alter database disable block change tracking;
Database altered.
1
2
SQL>alterdatabasedisableblockchangetracking;
Databasealtered.
当然还可以改变BCT file文件的位置,使用alter database rename 命令来修改,需要在数据库mount状态下,如果数据库不能重启,那么可以先disable这个特性,然后指定新的位置启动,这样会丢失以前在tracking file里的数据,但这样也是最快的,而且不用重启数据库。
改变BCT file 的位置:
1. 首先查看当前BCT文件的位置和状态
PgSQL
SQL> select status, filename from v$block_change_tracking;
STATUS FILENAME
-------- ------------------------------------------------------------
ENABLED /opt/oracle/oradata/jerry/block_change_tracking.f
1
2
3
4
5
SQL>selectstatus,filenamefromv$block_change_tracking;
STATUSFILENAME
-------- ------------------------------------------------------------
ENABLED/opt/oracle/oradata/jerry/block_change_tracking.f
2. 如果可以关闭数据库,则关闭数据库
PgSQL
SQL> shutdown immediate
1
SQL>shutdownimmediate
如果不能关闭数据库,先disable掉,然后用新路径启动:启动之后做第三步操作,然后忽略后面的操作
PgSQL
SQL> alter database disable block changetracking;
SQL> alter database enable block changetracking using file '/opt/oracle/oradata/bctfile/block_change_tracking.f';
1
2
SQL>alterdatabasedisableblockchangetracking;
SQL>alterdatabaseenableblockchangetrackingusingfile'/opt/oracle/oradata/bctfile/block_change_tracking.f';
3. 在操作系统上把文件move到新的位置
PgSQL
[[email protected] ~]$ mv /opt/oracle/oradata/jerry/block_change_tracking.f /opt/oracle/oradata/bctfile/block_change_tracking.f
1
[[email protected]~]$mv/opt/oracle/oradata/jerry/block_change_tracking.f/opt/oracle/oradata/bctfile/block_change_tracking.f
4. 启动数据库到mount状态,移动change tracking file的位置,如果用新路径启动的方式,忽略这一步极其以后的步骤
PgSQL
SQL> startup mount
ORACLE instance started.
Total System Global Area 818401280 bytes
Fixed Size 2232800 bytes
Variable Size 629149216 bytes
Database Buffers 184549376 bytes
Redo Buffers 2469888 bytes
Database mounted.
SQL> alter database rename file '/opt/oracle/oradata/jerry/block_change_tracking.f' to '/opt/oracle/oradata/bctfile/block_change_tracking.f';
Database altered.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
SQL>startupmount
ORACLEinstancestarted.
TotalSystemGlobalArea818401280bytes
FixedSize2232800bytes
VariableSize629149216bytes
DatabaseBuffers184549376bytes
RedoBuffers2469888bytes
Databasemounted.
SQL>alterdatabaserenamefile'/opt/oracle/oradata/jerry/block_change_tracking.f'to'/opt/oracle/oradata/bctfile/block_change_tracking.f';
Databasealtered.
5. 打开数据库就可以了
PgSQL
SQL> alter database open;
SQL> select status, filename from v$block_change_tracking;
STATUS
--------------------
FILENAME
--------------------------------------------------------------------------------
ENABLED
/opt/oracle/oradata/bctfile/block_change_tracking.f
1
2
3
4
5
6
7
8
9
10
SQL>alterdatabaseopen;
SQL>selectstatus,filenamefromv$block_change_tracking;
STATUS
--------------------
FILENAME
--------------------------------------------------------------------------------
ENABLED
/opt/oracle/oradata/bctfile/block_change_tracking.f
这样BCT file的路径就修改过来了。是不是so easy。妈妈再也不用担心数据库备份慢了。
转载请注明: 版权所有,文章允许转载,但必须以链接方式注明源地址,否则追究法律责任!
最后编辑:2013-11-27作者:Jerry
一个积极向上的小青年,热衷于分享--Focus on DB,BI,ETL