ITPub博客

首页 > 数据库 > Oracle > Block Change Tracking

Block Change Tracking

原创 Oracle 作者:gholay 时间:2014-05-18 15:52:54 0 删除 编辑

10G中ORACLE提供了一个新的特性:块修改跟踪(Block Change Tracking),该特性主要服务于RMAN的增量备份。

  众所周知在之前的版本中,RMAN中创建增量备份并不能显明缩短备份时间,这主要就是因为RMAN没有简便的方式判断哪些块是被修改过的,因此仍然是只能读取所有数据文件中的所有数据块,分别检查数据块中SCN并与父增量备份集中块的SCN做比较,如果发现较新则表示修改过。如果启用了块修改跟踪的特性,RMAN就可以通过块修改跟踪文件确定哪些块被修改过,从而避免扫描所有的数据文件中所有块。

  启用块修改跟踪特性,0级的增量备份肯定还得扫描所有数据文件,不过其后依赖这一0级备份集创建的增量备份就可以通过块修改跟踪文件来获取修改过的块了。

  默认情况下数据库是禁用块修改跟踪的(如果使用了OMF特性,ORACLE会自动创建块修改跟踪文件),因为这可能会带来一些额外的开销。不过该性特性对于增量备份毕竟相当有用,因此要看你的取舍,如果你的数据库极少有修改操作,同时你希望增量备份尽可能快,并且创建的增量备份集尽可能小,那启用块修改跟踪还是有意义的,并且这也不会太影响到数据库的性能。

  块修改跟踪文件是基于整个数据库的,如果使用了OMF,该文件创建于DB_CREATE_FILE_DEST参数指定的目录下,当然你也可以手动修改该文件到其它路径,不过如果是RAC环境,块修改跟踪文件必须创建在共享存储上,确保所有节点都能访问到它。块修改跟踪文件中最多只能保存基于相同0级的,最近8天的增量备份所需信息,因此如果超出,则块修改跟踪文件就起不到作用了。

  注意,备份恢复并不会备份或者恢复块修改跟踪文件。

1、 启用块修改跟踪

  启用块修改跟踪可通过下列语句:



    SQL> alter database enable block change tracking using file 'rman_inc.trk';Database altered.


  禁用块修改跟踪可通过下列语句:



    SQL> alter database disable block change tracking;Database altered.


  查询是否启用块修改跟踪可以通过下列语句:



    SQL> select status from v$block_change_tracking;

    STATUS

    ----------DISABLED


  上述操作在数据库mount或open状态都可以进行,不过如果你要修改块修改跟踪文件的路径,则只能在数据库启动到mount状态时修改。

2、 修改块修改跟踪文件路径

  修改块修改跟踪文件可以通过alter database rename file命令,但是只能在mount状态下操作。

  查看当前块修改跟踪文件路径:



    SQL> select filename from v$block_change_tracking;

    FILENAME

    --------------------------------------------------------------------------------------E:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\RMAN_INC.TRK


  Shutdown 数据库并启动到mount状态:



    SQL> shutdown immediate

    Database closed.

    Database dismounted.

    ORACLE instance shut down.

    SQL> startup mount

    ORACLE instance started.

    Total System Global Area  167772160 bytes

    Fixed Size                  1295608 bytes

    Variable Size              88083208 bytes

    Database Buffers           71303168 bytes

    Redo Buffers                7090176 bytesDatabase mounted.


  手工复制块修改文件到新路径下,然后执行alter database命令:



    SQL> alter database rename file 'E:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\RMAN_INC.TRK'

      2  to 'E:\oracle\oradata\jssweb\rman_inc.trk';

    Database altered.

    SQL> alter database open;Database altered.


  查看当前块修改跟踪文件路径:



    SQL> select filename from v$block_change_tracking;

    FILENAME

    -----------------------------------------------------E:\ORACLE\ORADATA\JSSWEB\RMAN_INC.TRK


  如果你的数 据库无法shutdown , 其实也无所谓,先disable,然后执行enable时指定一个新路径也可以的:),只不过,原来文件中记录的块修改的跟踪信息也就没有了。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29196873/viewspace-1163696/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2013-12-28

  • 博文量
    82
  • 访问量
    653285