通过使用block change tracking功能,可以提高Oracle incremental备份进程的效率。

incremental backup的目的是只备份那些自上次备份以来发生过改变的block。然而,即使只有一小部分发生改变,incremental backup也要读取完整的数据文件。block change tracking功能解决了这个问题。它使用change tracking writer(CTWR)后台进程,在change tracking file文件中,记录所有数据库中变化的物理位置。启动block change tracking功能后,level 0级的incremental backup依然要扫描整个数据文件,因为change tracking file还没有映射到block的状态。对于后续级别的incremental backups,RMAN使用change tracking data决定哪些需要读取。通过消除对整个数据文件的read,提高了性能。

change tracking files初始化配置以后,通常不需要维护,在执行incremental backup时,命令和未配置时一样。block change tracking file的大小和下列成比例:

l Database size,in bytes。RAC环境下,the number of enabled threads。

l The number of old backups maintained by the block change tracking file.

开启block change tracking:

如果设置了DB_CREATE_FILE_DEST参数,也即创建了Oracle-managed file。可以使用下面的命令启用/关闭block change tracking:

SQL> ALTER DATABASE ENABLE BLOCK CHANGE TRACKING;

SQL> ALTER DATABASE DISABLE BLOCK CHANGE TRACKING;

如果未设置DB_CREATE_FILE_DEST参数,则要使用USING FILE语句为tracking file指定用户定义的目录路径和文件名:

SQL> ALTER DATABASE ENABLE BLOCK CHANGE TRACKING

2> USING FILE ‘...’

3> REUSE;

通过视图V$BLOCK_CHANGE_TRACKING可以查看当前block change tracking的配置情况。

默认情况下,change tracking是关闭的,因为它会引起很小一部分的性能开销。

05-07 15:11