天天看点

oracle开启bct,使用Block Change Tracking 缩短RMAN备份的时间!

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

oracle开启bct,使用Block Change Tracking 缩短RMAN备份的时间!

一个积极向上的小青年,热衷于分享--Focus on DB,BI,ETL