[Oracle工程师手记]增量备份的BCT文件限制
Oracle 的 RMAN 进行增量备份的时候,如果用户设置了 block_change_tracking 有效,完成了全备份之后,所有的变更的块,都会被记录到 BCT 文件中,RMAN 不必全扫描所有的数据文件,它只是去读取 BCT 文件,可以大大提高备份速度。
不过,它有一个很大的限制,就是BCT文件只有8个槽位,或者说8 个 BitMap 表。一旦增量备份次数超过 8 次, 再次进行增量备份时,就需要扫描所有的数据文件。如果此时执行了全备份,那么8个槽位清空,又可以再次在增量备份中使用 BCT 文件。
如果每一次都想通过读取BCT文件进行增量备份,那么可以设置隐含参数 _bct_bitmaps_per_file 为 0, 这样就可以无限回使用 BCT 文件了。
使用BCT文件,还有一个好处,可以读取BCT文件中的数据块数,估算增量备份的大小。
select file#, blocks_changed, block_size, blocks_changed * block_size bytes_changed, round(blocks_changed / blocks * 100, 2) percent_changed from v$datafile join (select fno file#, sum(bct) blocks_changed from (select distinct fno, bno, bct from x$krcbit where vertime >= (select curr_vertime from x$krcfde where csno=x$krcbit.csno and fno=x$krcbit.fno)) group by fno order by 1) using(file#);