通过使用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是关闭的,因为它会引起很小一部分的性能开销。