张伟垚 数据和云
墨墨导读:本文来自墨天轮读者投稿,如需投稿可在本篇文章下方留言即可。最近使用 XTTS,里面涉及到增量备份的步骤需要开启BCT,并且RMAN的增量备份也会涉及到BCT,本文列出工作中 BCT 需要知道的相关内容,希望对大家有帮助。
BCT的意义
Block Change Tracking 是在Oracle 10g里推出的新特性。BCT的原理是记录数据文件里每个数据块修改之后信息,这些修改之后的tracking信息保存在设置的tracking文件里。启动BCT后,RMAN或者XTTS使用tracking file里的信息,只需要读取改变的数据块信息,而不用再对全部数据文件进行扫描,从而提高了RMAN或者XTTS增量备份的性能。
BCT的使用
数据库默认情况下的BCT是禁用的,可以通过v$block_change_tracking视图进行查询。
在启动BCT时,如果有设置oracle的OMF(oracle manage file),那么不指定路径的情况下,会自动设置在这里。
那么如果想指定路径的话只需要加一个using file 后面接一个路径名即可
首先先禁用,再重新开启。
这里发现禁用后,bct file会随着禁用而自动被删除清理。
如果在RAC的场景下,bct file是必须放在ASM共享存储里面。
BCT的相关问题
预估开启后BCT所占空间
理解为:
以500GB大小的数据库为例,并且这个数据库只有一个线程,RMAN存有8个备份集,经过计算得知:
1*(8+2)(500GB/250000)=20.48MB左右。
以200GB大小的两节点RAC为例,并且这个数据库RMAN存有8个备份集,经过计算得知:
2(8+2)*(200GB/250000)=16.384MB左右。
BCT FILE大小因素是由以下因素决定:
1、 数据库数据量大小
2、 启用线程的数量
3、 数据库备份集的数量
理解隐含参数的意义
bct_bitmaps_per_file默认为8,我理解为保留最近8次block change的信息。
在备份期间,change tracking会维护已经被标记为change的block的bitmap信息。Oracle 会自动管理change tracking file的大小,只保留最近8次block change 的信息。如果超过8次,那么最前面的block bitmap信息会被最近一次的change所覆盖。
基于这个覆盖,官方文档也给出一个情景的考虑,在进行0级增量备份以及7次差异增量备份之后,8次block bitmap已经填满bct file(默认_bct_bitmaps_per_file=8的情况下),那么这时候再进行一次1级的累积增量备份,就会进行全datafile扫描,因为累积增量备份是比较0级备份以后的变化情况,而0级备份会被覆盖,所以这个隐含参数的设定值也会影响不同增量备份的方式的效果。
PS: 以上均为个人学习之后的理解,如有错误,恳请指正。
学习来源:官方文档、RMAN 10g : How To Size the Block Change Tracking File (Doc ID 306112.1)等。
墨天轮原文链接:https://www.modb.pro/db/27453(复制到浏览器中打开或者点击“阅读原文”)