理论背景:
Block ChangeTracking 是Oracle 10g里推出的特性。 Block change tracking 会记录data file里每个block的update 信息,这些tracking信息保存在tracking 文件里。 当启动block change tracking 后,RMAN 使用trackingfile里的信息,只读取改变的block信息,而不用在对整个data file进行扫描,从而提高了RMAN 备份的性能。

几点说明:
1. block change tracking file 是bitmap file。 
2. Block change tracking 默认是禁用的,如果启用了incrementalbackup,那么建议开启block change tracking。启用BCT后,不需要其他的维护操作。
3. 在备份期间,change tracking会维护已经标记为change 的block 的bitmap 信息。Oracle 会自动管理change tracking file的大小,只保留最近最近8次blockchange 的信息。 超过8次, 那么最前面的block bitmap 信息会被current change 覆盖。
4. 第一个0级的增量备份扫描整个datafile。 随后的增量备份使用block changetracking file的信息,只扫描自上次备份以来被标记为change 的block。
5. 要考虑change tracking file 的8次限制与备份策略的关系。 如果我们在0级备份之后又进行了7次不同的增量备份,那么这时block change tracking 就包含了8个bitmaps信息。 如果我们在进行1级的增量备份,那么此时的增量就不是最优的, 还会扫描整个data file。 因为我们之前0级的bitmap信息被我们当前的bitmap 信息覆盖掉了,这样就没有了参考的依据。所以RMAN的备份策略要考虑到这个8次bitmap 的影响。
6. block change tracking 文件是针对整个数据库,默认情况下,changetracking file 会作为Oracle managed file,在DB_CREATE_FILE_DEST指定的目录下创建。 可以放到放到其他的目录。 Oracle  不建议使用rawdevice 来存放change tracking file.
7. 如果是RAC 环境,change tracking file 必须放在共享设备上。
8. RMAN 不支持对change tracking file 的备份与恢复。当数据检测到change tracking file 无效时,就会reset changetracking file。 如果我们还原了数据库,那么数据库也会reset block change tracking,并从新进行tracking。
9. block change tracking file的大小和数据库的大小及 enabledthreads of redo 的数量有关系,tracking file 的大小会根据数据库大小的变化和变化。 和更新频率没有关系。
10. 典型的,单实例下大约DB的1/30000的block 会把track。 如果是RAC 环境,在乘以threads。
11. 以下因素会导致file 超过估计值:为了避免tracking file 占用太多的空间, 初始值是10M,然后每次增加10M,如果数据库接近300G,那么trackingfile 不能小于10M,如果接近600G,不能小于20M。 每个datafile,在tracking file里最少需要分配320k的空间,所以如果有大量的小data file, change tracking file 也会相对较大。

DB_CREATE_FILE_DEST 参数的作用:
DB_CREATE_FILE_DEST 参数用来指定默认的Oracle Managed datafiles 的位置。 在没有指定DB_CREATE_ONLINE_LOG_DEST_n参数的情况下,这个参数也可以用来作为Oracle-managed control files和online redo logs的默认位置。
如果使用文件系统目录作为默认的位置,那么这个目录必须是已经存在的,Oracle 不会创建这个目录。 并且Oracle对这个目录有足有的操作的权限。 使用OMF管理时,在这个目录下生成文件每个名称都是唯一的,这个文件也称为Oracle-Manager file。

启用和禁用Block Change Tracking:( 数据库在open 或者 mounted 状态都可以启用block change tracking )
1. 检查DB_CREATE_FILE_DEST参数配置
SQL> show parameter db_create_file_dest
[oracle@11g ~]$ mkdir bct
[oracle@11g ~]$ cd bct/
[oracle@11g bct]$ pwd
/home/oracle/bct
SQL> alter system set db_create_file_dest = '/home/oracle/bct/' scope=both sid='*';
SQL> show parameter db_create_file_dest
2. 启用Block change tracking
SQL> alter database enable block change tracking;
--可以使用v$block_change_tracking 视图查看tracking 启动情况。
SQL> 
col status format a8
col filename format a60
select status, filename from v$block_change_tracking;
STATUS   FILENAME
-------- ------------------------------------------------------------
ENABLED  /home/oracle/bct/ORCL/changetracking/o1_mf_bjlj999v_.chg
3 禁用Block Change Tracking
SQL> alter database disable block change tracking;
4 改变Block Change Tracking File位置
可以使用alter database rename 语句来修改change tracking file 文件的位置,该命令会更新控制文件里的信息,命令必须在mount 下执行,如果DB 不能shutdown,那么可以先disable,然后指定新的位置在启动,但是这样会丢失以前在tracking file里的数据。
更改change tracking 文件步骤如下:
1. 查看当前文件的位置
SQL> select status, filename from v$block_change_tracking;
2.如果可能,关闭数据库
SQL> shutdown immediate
如果可以关闭数据库,跳过如下的sql 继续操作,如果不能关闭,就执行如下的SQL并忽略第3步以后的步骤。
SQL> alter database disable block changetracking;
SQL> alter database enable block changetracking using file 'new_location';
这里是禁用bct,在启动时更改bct位置,这种情况,会丢失所有的bct 文件的内容。 在下次执行0级增量备份时会扫描整个数据文件。 
3.在操作系统级别移动change tracking file文件到新的位置。 这个是在关闭数据库的前提下进行。
[oracle@dave ~]$ mv /u01/app/oracle/oradata/dave/block_change_tracking.f /u01/backup/block_change_tracking.f
4. 启动数据库到mount状态,移动change tracking 文件位置。
SQL> startup mount
SQL> alter database rename file '/u01/app/oracle/oradata/dave/block_change_tracking.f' to  '/u01/backup/block_change_tracking.f';
5.打开数据库
SQL> alter database open;
SQL> select status, filename from v$block_change_tracking;

Block Change Tracking (块改变跟踪)的更多相关文章

  1. Oracle 块修改跟踪 (Block Change Tracking) 说明

    Block ChangeTracking 是Oracle 10g里推出的特性.官网对Block change tracking 的定义如下: Adatabase option that causes ...

  2. Oracle 10g Block Change Tracking特性

    Using Block Change Tracking to Improve Incremental Backup Performance 使用块改变跟踪改善增量备份的性能 The block cha ...

  3. Oracle Block Change Tracking功能(转)

    from:http://space.itpub.net/?uid-25744374-action-viewspace-itemid-732091 通过使用block change tracking功能 ...

  4. enable or disable Oracle block change tracking

    Oracle的block change tracking用于记录上次备份以来改变过的block信息,因此打开block change tracking可以大大加快增量备份的速度. 1. Enable ...

  5. SQL Server审计功能入门:更改跟踪(Change Tracking)

    原文:SQL Server审计功能入门:更改跟踪(Change Tracking) 介绍 更改跟踪是一种轻量型解决方案,它为应用程序提供了一种有效的更改跟踪机制.常规的,自定义变更跟踪和读取跟踪数据, ...

  6. Oracle块修改跟踪功能

    块修改跟踪功能是指使用二进制文件记录数据库中数据库更改的过程. 其目的是提高增量备份操作的性能,因为RMAN可以使用快修改跟踪文件找到上次执行备份操作后被修改的数据块.这可以节省大量时间,因为如果不这 ...

  7. 如何使用块更改跟踪文件估算RMAN增量备份大小 (Doc ID 1938079.1)

    How to estimate RMAN incremental backup size using block change tracking file (Doc ID 1938079.1) APP ...

  8. Dynamics 365 Customer Enagement中的更改跟踪(change tracking)

    我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面 ...

  9. VMware 虚拟化编程(10) — VMware 数据块修改跟踪技术 CBT

    目录 目录 前文列表 数据块修改跟踪技术 CBT 为虚拟机开启 CBT CBT 修改数据块偏移量获取函数 QueryChangedDiskAreas changeId 一个 QueryChangedD ...

随机推荐

  1. 1verilog 位拼接

    位拼接还可以用重复法来简化表达式.见下例: {4{w}}             //这等同于{w,w,w,w} 位拼接还可以用嵌套的方式来表达.见下例: {b,{3{a,b}}}     //这等同 ...

  2. HTML5 2D平台游戏开发#2跳跃与二段跳

    在上一篇<Canvas制作时间与行为可控的sprite动画>中已经实现了角色的左右移动,本篇继续实现角色的一系列动作之一:跳跃.先来看看最终效果: 要实现跳跃,必须模拟垂直方向的速度和重力 ...

  3. window下Opengl与vs2012环境配置

    一.opengl与C++环境配置 1. 下载opengl包. 2. 将压缩包解压后, (1)将.dll文件(GLU.DLL, GLUT.DLL, GLUT32.DLL)放到C:\Windows\Sys ...

  4. Python解释器是单线程应用 IO 密集型 计算密集型 GIL global interpreter lock

    [Python解释器是单线程应用] [任意时刻,仅执行一个线程] 尽管Python解释器中可以运行多个线程,但是在任意给定的时刻只有一个线程会被解释器执行. [GIL锁 保证同时只有一个线程运行] 对 ...

  5. cocos2d-js v3.1的坑

    前几天因为要用到cc.pool,所以就换了v3.1版本,结果连生成apk的出错(cocos code ide), log显示为:error: relocation overflow in R_ARM_ ...

  6. 我的Android进阶之旅------>解决Your project contains error(s),please fix them

    在使用eclipse写好Android的代码,代码没有报错.然后想在AVD中运行测试时,弹出错误框,提示信息为:  "Your project contains error(s),pleas ...

  7. [TroubleShooting]Neither the partner nor the witness server instance for database is availble

    Problem: You are trying to setup a mirroring on a Database called xxxDB(SQL server 2012). You are ge ...

  8. 阿里云ecs docker使用(2)

    1. 退出docker容器 命令 exit 2.sudo docker ps -l 3. sudo docker images 4. sudo docker commit ba300f05c1a3 c ...

  9. 蓝牙 CTS 测试

    安装蓝牙测试安装包 之后  . 安卓包名字 android-cts-6.0_r19-linux_x86-x86.zip 解压之后 /cts/android-cts/tools/  目录下 运行  ./ ...

  10. HDU - 2102 A计划 【BFS】

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=2102 思路 题目有两个坑点 0.Output 说 能在T时刻 找到公主 就输出 YES 但实际上 只要 ...