Oracle BCT(Block Change Tracking)与增量备份
墨墨导读:摘要:BCT(Block Change Tracking)是Oracle从10g开始有的特性。激活BCT,可以大大提高增量备份的性能。本文介绍了BCT的配置方法和影响。
作者介绍
姚远:鼎甲科技高级技术顾问,墨天轮MVP。Oracle ACE,华为云MVP,专注于 Oracle、MySQL 数据库多年,拥有 Oracle 10g、12c OCM, MySQL 5.6、5.7、8.0 OCP,并在:EMC、IBM p、RedHat、Cisco、SQL Server、DB2 等领域拥有 20 + 技术认证。两次获得国家部级科技进步奖,发明过两项计算机相关专利。现在广州鼎甲任高级技术顾问,向同事和客户提供Oracle 和 MySQL方面的培训和技术咨询。
内容列表
Oracle BCT的原理
Oracle BCT的配置方法
BCT跟踪文件的大小
BCT跟踪文件通常只记录8次增量备份块的变化
对增量备份性能的影响
对联机交易性能的影响
总结
Oracle BCT的原理
BCT(Block Change Tracking)是Oracle从10g开始有的特性。BCT的原理是记录数据文件里每个数据块的变化,并把这些变化信息保存在BCT的跟踪文件中。启动BCT后,RMAN或者XTTS进行增量备份时使用BCT跟踪文件里的信息,只读取改化的数据块,而不用再对全部数据文件进行扫描,从而提高了RMAN或者XTTS增量备份的性能。
Oracle BCT的配置方法
检查BCT的配置:
SQL> COL STATUS FORMAT A8COL FILENAME FORMAT A60 SQL> SELECT STATUS, FILENAME FROM V$BLOCK_CHANGE_TRACKING;
STATUS FILENAME-------- ------------------------------------------------------------DISABLED
BCT跟踪文件默认位于系统参数DB_CREATE_FILE_DEST指定的目录下,使用下面的命令可以激活BCT:
SQL> SHOW PARAMETER DB_CREATE_FILE_DEST
NAME TYPE VALUE------------------------------------ ---------------------- ------------------------------db_create_file_dest string +DATA3SQL> ALTER DATABASE ENABLE BLOCK CHANGE TRACKING;
Database altered.
SQL> col filename form a60SQL> select filename, status, bytes from v$block_change_tracking;
FILENAME STATUS BYTES------------------------------------------------------------ -------------------- ----------+DATA3/ORCL/CHANGETRACKING/ctf.287.1062173021 ENABLED 11599872
用户也可以指定跟踪文件的位置,但注意在RAC环境中,跟踪文件要能被所有的节点都访问到:
SQL> ALTER DATABASE ENABLE BLOCK CHANGE TRACKING USING FILE '/u01/app/oracle/oradata/orcl/rman_change_track.f' REUSE; 2
Database altered.
SQL> SELECT STATUS, FILENAME FROM V$BLOCK_CHANGE_TRACKING;
STATUS FILENAME-------- ------------------------------------------------------------ENABLED /u01/app/oracle/oradata/orcl/rman_change_track.f
注意:BCT的实施要在全量备份之前,否则增量备份时不会起作用,很多人误以为在增量备份之前即可。
取消BCT的命令如下:
ALTER DATABASE DISABLE BLOCK CHANGE TRACKING;
BCT跟踪文件的大小
BCT跟踪文件采用位图记录对应块的变化,一位(bit)对应32K的数据,BCT跟踪文件会保存8个备份集的块变化,再加上当前状态,因此BCT跟踪文件大小大约是数据库大小的3000分之一,一个1T的数据库对应的BCT跟踪文件的大小是30M,对应RAC环境,BCT跟踪文件大小还要乘以节点数,因此计算公式是:BCT跟踪文件大小=节点数*(数据库大小/30000)。
BCT跟踪文件通常只记录8次增量备份块的变化
在启用了块更改跟踪的数据库上,如果执行了8个以上的RMAN增量备份而没有将它们合并为完整备份,BCT跟踪文件可能无法使用。这个限制由隐含参数 “_bct_bitmaps_per_file"参数决定。这个参数设置每个数据文件要存储的位图数,其默认值为8。为了避免此问题,可以运行不超过8个增量备份就进行一次全量备份,也可以增加”_bct_bitmaps_per_file"参数。
下面这个例子在最后一步执行增量备份的时候将无法使用BCT跟踪文件,因为最初的0级备份的信息已经被覆盖了。
执行全量备份 rman> BACKUP INCREMENTAL LEVEL 0 DATABASE;
执行7次 differential增量备份 rman> BACKUP INCREMENTAL LEVEL 1 DATABASE;
执行cumulative增量备份 rman> BACKUP INCREMENTAL LEVEL 1 CUMULATIVE DATABASE;
对增量备份性能的影响
增量备份的过程由两部分组成,扫描在全量备份后变化的块和将变化的块写入备份集。激活BCT对增量备份的性能提高和变化的块成正比,最极端的情况是全量备份后没有任何数据块发生变化,激活BCT可以把增量备份的时间降低到几乎为零。一般推荐数据库的块变化小于20%时应该激活BCT。v$backup_datafile视图中包含一个名为used_change_tracking的列,对于增量备份级别>0,此列的值为YES表示RMAN使用了BCT跟踪文件以加速增量备份,这时读取的块和数据文件的总块数之比反应了激活BCT后效率的提升,可以使用下面的SQL查询增量备份中每个数据文件的效率的提升:
SQL> select file#, avg(datafile_blocks), avg(blocks_read), avg(blocks_read/datafile_blocks) * 100 as "% read for backup" from v$backup_datafile where incremental_level > 0 and used_change_tracking = 'YES' group by file# order by file#; 2 3 4 5 6 7 8 9 FILE# AVG(DATAFILE_BLOCKS) AVG(BLOCKS_READ) % read for backup---------- -------------------- ---------------- ----------------- 1 120320 109 .090591755 3 204800 191 .093261719 4 43520 209 .480238971 7 640 1 .15625 9 37120 17 .045797414 10 60160 1 .001662234 11 776320 13 .001674567 12 640 1 .15625 20 9650176 1 .000010363 21 9043968 1 .000011057
10 rows selected.
这里有一个激活bct之前和之后增量备份对比的例子:
对联机交易性能的影响
目前业界的情况是:激活BCT对绝大多数数据库的性能影响几乎为零,但对数据仓库类型的数据库在大量数据导入时会有影响,例如使用ETL工具向数据仓库中大量插入数据时。这要从BCT的原理说起,激活BCT后,Oracle会增加一个进程,进程名类似ora_ctwr_orcl。这个进程跟踪变化的块,并将变化的块记录到内存的一个称之为“CTWR buffer”的私有区域,这个区域的记录会刷新到BCT跟踪文件中。当在短期内有大量的变化数据块,造成CTWR buffer中的记录不能及时刷新到BCT跟踪文件中时,会产生一个等待事件“block change tracking buffer space”,如果监控到这个等待事件在DB time里的占比较高,则说明激活BCT对数据库的性能产生了影响,这时通常有以下3种解决方案:
将BCT跟踪文件放入更快的硬盘中;
增加CTWR buffer, Oracle通常是不允许用户调整CTWR buffer的大小,但Oracle内部有个隐含参数“_bct_public_dba_buffer_size”可以调整CTWR buffer的大小,和这个参数相关的另外一个隐含参数“_bct_public_dba_buffer_allocation_max”要一起调整才会起作用。注意调整隐含参数是有较大风险的变更,Oracle是不支持的。
disable BCT。
总结
对大型的生产数据库通常应激活BCT,对联机交易几乎没有影响,同时可以大大提高增量备份的性能。
墨天轮原文链接:https://www.modb.pro/db/44096(复制到浏览器中打开或者点击“阅读原文”立即查看)
推荐阅读:267页!2020年度数据库技术年刊
推荐下载:2020数据技术嘉年华近50个PPT下载、视频回放已上传墨天轮平台,可在“数据和云”公众号回复关键词“2020DTC”获得!
视频号,新的分享时代,关注我们,看看有什么新发现?
数据和云
ID:OraNews
如有收获,请划至底部,点击“在看”,谢谢!
点击下图查看更多 ↓
云和恩墨大讲堂 | 一个分享交流的地方
长按,识别二维码,加入万人交流社群
请备注:云和恩墨大讲堂
点个“在看”
你的喜欢会被看到❤
Oracle BCT(Block Change Tracking)与增量备份相关推荐
- Oracle 块修改跟踪 (Block Change Tracking) 说明
Block ChangeTracking 是Oracle 10g里推出的特性.官网对Block change tracking 的定义如下: Adatabase option that causes ...
- Oracle Database 12c RMAN全量+增量备份+归档日志恢复详解
Oracle可以非常方便的把数据库恢复到具体某个时间的状态,而且还支持全备和多级增备,备份无需停止应用服务.比起DB2需要手动逐级恢复增量备份和归档日志,RMAN是非常简单好用的数据库商业解决方案. ...
- bct对oracle影响,Oracle 优化篇+Rman增量备份优化之BCT(块变更追踪)
说明:本文为面向Oracle BCT(BLOCK CHANGE TRACKING)初学者的指导手册 标签:BCT.BLOCK CHANGE TRACKING.增量备份.备份优化.RMAN 注意:文中删 ...
- oracle增量和全量的区别,ORACLE全备份和0级增量备份的区别
比较官方的说法 Full A backup of a datafile that includes every allocated block in the file being backed up. ...
- oracle每天一次差异备份,Oracle的差异增量备份和累积增量备份(zt)
在rman增量备份中,有差异增量和累积增量的概念 1.概念 差异增量:是备份上级及同级备份以来所有变化的数据块,差异增量是默认增量备份方式 累积增量:是备份上级备份以来所有变化的块 因为累积增量是备份 ...
- oracle standby同步,ORACLE 利用rman增量备份同步standby库
standby库归档日志断档,故standby库不能利用恢复归档日志和生产库保持同步,因生产库有1T多,重拉数据将非常耗时,遂利用RMAN对生产库进行增量备份,将增量备份集合成到standby库,利用 ...
- oracle的scn增量备份,Oracle技术之利用scn增量备份实现数据库增量恢复
数据库版本 SQL> select * from v$version; BANNER ------------------------------------------------------ ...
- oracle的scn增量备份,【Oracle】基于SCN的增量备份修复DataGuard GAP
1. 首先来模拟 Gap 的产生 1.1. 备库关闭: SYS@dgtest_sshutdown immediate; 1.2. 主库切换日志 SYS@dgtestselect SEQUENCE#,A ...
- linux+oracle+自动增量备份脚本,linux自动运行rman增量备份脚本
一.增量备份脚本 0级备份脚本:红色部分为自定义的备份文件放置的目录 #script.:BackupFull.sh #creater:xyh #date:2014-03-08 #desc:backup ...
最新文章
- 文件列表出现分页按钮
- poj2017——Speed Limit
- 分布式并行计算MapReduce
- Android中程序向桌面和Launcher添加快捷方式
- 声音对比处理_厨房垃圾处理器 | 厨余垃圾分类的正确打开姿势
- notepad++的NppFTP插件远程连接linux操作系统
- 全国计算机等级考试题库二级C操作题100套(第40套)
- Python之Numpy入门实战教程(2):进阶篇之线性代数
- linux中GIT组件,linux – 使用git和符号链接的基于组件的Web项目目录布局
- 第三只眼使用局域网版本还是网络版好_iOS13.4测试版使用3天后,发现3个优化,建议升级!...
- 复旦大学提出《Meta-FDMixup》解决跨域小样本学习中的域偏移问题
- 【AI面试题】回归问题常用的性能度量指标(评价指标)
- mysql server出现_查询各阶段时,一旦mysql server出现各种故障下的表现形式
- 数论 + 公式 - HDU 4335 What is N?
- kubernetes--pod的生命周期管理(PostStart,PreStop)
- python 元编程有多强_马克的Python学习笔记#元编程 3
- vue 下载pdf文件
- 《分布式资本链周刊》第二期
- 【CPM同步】连续相位调制(CPM)通信调制方法的载波同步和定时同步研究和matlab仿真
- [16-8-1]每日总结