Block Change Tracking (块改变跟踪)
理论背景:
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 (块改变跟踪)的更多相关文章
- Oracle 块修改跟踪 (Block Change Tracking) 说明
Block ChangeTracking 是Oracle 10g里推出的特性.官网对Block change tracking 的定义如下: Adatabase option that causes ...
- Oracle 10g Block Change Tracking特性
Using Block Change Tracking to Improve Incremental Backup Performance 使用块改变跟踪改善增量备份的性能 The block cha ...
- Oracle Block Change Tracking功能(转)
from:http://space.itpub.net/?uid-25744374-action-viewspace-itemid-732091 通过使用block change tracking功能 ...
- enable or disable Oracle block change tracking
Oracle的block change tracking用于记录上次备份以来改变过的block信息,因此打开block change tracking可以大大加快增量备份的速度. 1. Enable ...
- SQL Server审计功能入门:更改跟踪(Change Tracking)
原文:SQL Server审计功能入门:更改跟踪(Change Tracking) 介绍 更改跟踪是一种轻量型解决方案,它为应用程序提供了一种有效的更改跟踪机制.常规的,自定义变更跟踪和读取跟踪数据, ...
- Oracle块修改跟踪功能
块修改跟踪功能是指使用二进制文件记录数据库中数据库更改的过程. 其目的是提高增量备份操作的性能,因为RMAN可以使用快修改跟踪文件找到上次执行备份操作后被修改的数据块.这可以节省大量时间,因为如果不这 ...
- 如何使用块更改跟踪文件估算RMAN增量备份大小 (Doc ID 1938079.1)
How to estimate RMAN incremental backup size using block change tracking file (Doc ID 1938079.1) APP ...
- Dynamics 365 Customer Enagement中的更改跟踪(change tracking)
我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面 ...
- VMware 虚拟化编程(10) — VMware 数据块修改跟踪技术 CBT
目录 目录 前文列表 数据块修改跟踪技术 CBT 为虚拟机开启 CBT CBT 修改数据块偏移量获取函数 QueryChangedDiskAreas changeId 一个 QueryChangedD ...
随机推荐
- 输入两手牌,两手牌之间用“-”连接,每手牌的每张牌以空格分隔,“-”两边没有空格,如:4 4 4 4-joker JOKER 请比较两手牌大小,输出较大的牌,如果不存在比较关系则输出ERROR
// ConsoleApplication10.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream& ...
- 【解决】无法连接 MKS:套接字连接尝试次数太多正在放弃
https://blog.csdn.net/wjunsing/article/details/78496224 我的电脑 -> 右键 -> 管理 -> 服务和应用程序 -> 服 ...
- 离线安装Cloudera Manager5.3.4与CDH5.3.4(一)
这几天一直在安装CDH,头都搞大了,安装第三次,最终成功了. 第一次问题非常多.后面卸载了.由于没有卸载干净导致第二次安装失败. 后来索性重装系统了.直接使用了纯净系统进行安装.一个人跑到学院机房去装 ...
- NDK以及C语言基础语法(一)
一.什么是NDK? Native Development Kit (本地开发工具包): NDK中提供了一系列的工具,帮助我们快速开发C/C++的动态库,并能自动将so文件和java文件一起打包成apk ...
- Mysql代码建外键问题
用下面代码建外键 运行之后 没有提示错误 但是打开建好的表格 外键并没有建立上 打开外键栏 里面并没有外键 在从表设置了外键列里面输入东西没有任何限制 成功建立应该是下面这样 什么情况???????? ...
- 【BZOJ3091】城市旅行 LCT
[BZOJ3091]城市旅行 Description Input Output Sample Input 4 5 1 3 2 5 1 2 1 3 2 4 4 2 4 1 2 4 2 3 4 3 1 4 ...
- 九度OJ 1152:点菜问题 (01背包、DP)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:1046 解决:543 题目描述: 北大网络实验室经常有活动需要叫外买,但是每次叫外买的报销经费的总额最大为C元,有N种菜可以点,经过长时间的 ...
- POJ 2442 Sequence【堆】
题目链接:http://poj.org/problem?id=2442 题目大意:给出一个m*n的矩阵,从每一行中取出一个数相加.能得到n^m个不同的结果.要求输出当中前n项. 建立一个以n元数组为底 ...
- Swift 烧脑体操(三) - 高阶函数
前言 Swift 其实比 Objective-C 复杂很多,相对于出生于上世纪 80 年代的 Objective-C 来说,Swift 融入了大量新特性.这也使得我们学习掌握这门语言变得相对来说更加困 ...
- Matlab图像处理(03)-基本概念
概念定义 动态范围:灰度跨跃的值域称为动态范围.上限取决于饱和度,下限取决于噪声. 对比度:一幅图像中最高和最低灰度级间的灰度差. 空间分辨率:图像中可辨别的最小细节的度量.常用度量每单位距离线对数和 ...