ITPub博客

首页 > Linux操作系统 > Linux操作系统 > block change tracking和rman通常增量备份方式的比较

block change tracking和rman通常增量备份方式的比较

原创 Linux操作系统 作者:warehouse 时间:2007-01-05 00:00:00 0 删除 编辑

此贴来之网友wa0362,感觉很不错!

下面都是用level 0和level 1做得比较

在10g之前的版本,使用rman做增量备份,rman在做1级备份的时候怎么来确定0级备份之后都有哪些数据块做了修改呢?看下面一段
Each data block in a datafile contains a system change number (SCN), which is the
SCN at which the most recent change was made to the block. During an incremental
backup, RMAN reads the SCN of each data block in the input file and compares it to
the checkpoint SCN of the parent incremental backup. If the SCN in the input data
block is greater than or equal to the checkpoint SCN of the parent, then RMAN copies
the block.
也就是说在做level 1级备份的时候,需要扫描所有的数据块并且用块中记录修改的SCN跟level 0备份时的SCN做比较,来确定什么是需要备份的。
所以扫描整个数据文件是不可避免的 !

Block change tracking是Oracle10g的一个新特性,Block change tracking进程记录自从上一次备份以来数据块的变化,并把这些信息记录在跟踪文件中。RMAN使用这个文件判断增量备份中需要备份的变更数据。这极大的促进了备份性能,RMAN可以不再扫描整个文件以查找变更数据。
RMAN's change tracking feature for incremental backups improves incremental
backup performance by recording changed blocks in each datafile in a change tracking
file. If change tracking is enabled, RMAN uses the change tracking file to identify
changed blocks for incremental backup, thus avoiding the need to scan every block in
the datafile.
估计又是使用的位图!没找到依据呢,看书不太仔细。

让我们来对它们的速度做一下测试,
不使用block change tracking,看看备份需要的时间


首先关闭block change tracking

SQL> select status from v$block_change_tracking;

STATUS
----------
DISABLED

然后让我们来做个0级增量备份,和一个1级备份,注意它们使用的时间
RMAN> backup incremental level 0 format='d:orabackup%d_%s.dbf'
2> database;

启动 backup 于 17-7月 -05
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 启动增量级别 0 数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
输入数据文件 fno=00001 name=D:ORACLEPRODUCT10.1.0ORADATAORCLSYSTEM01.DBF
输入数据文件 fno=00003 name=D:ORACLEPRODUCT10.1.0ORADATAORCLSYSAUX01.DBF
输入数据文件 fno=00005 name=D:ORACLEPRODUCT10.1.0ORADATAORCLEXAMPLE01.DBF
输入数据文件 fno=00002 name=D:ORACLEPRODUCT10.1.0ORADATAORCLUNDOTBS01.DBF
输入数据文件 fno=00004 name=D:ORACLEPRODUCT10.1.0ORADATAORCLUSERS01.DBF
通道 ORA_DISK_1: 正在启动段 1 于 17-7月 -05
通道 ORA_DISK_1: 已完成段 1 于 17-7月 -05
段 handle=D:ORABACKUPORCL_15.DBF comment=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:01:26
通道 ORA_DISK_1: 启动增量级别 0 数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
备份集中包括当前控制文件
在备份集中包含当前的 SPFILE
通道 ORA_DISK_1: 正在启动段 1 于 17-7月 -05
通道 ORA_DISK_1: 已完成段 1 于 17-7月 -05
段 handle=D:ORABACKUPORCL_16.DBF comment=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:05
完成 backup 于 17-7月 –05


RMAN> backup incremental level 1 format='d:orabackup%d_%s_1level.dbf'
2> database;

启动 backup 于 17-7月 -05
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 启动增量级别 1 数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
输入数据文件 fno=00001 name=D:ORACLEPRODUCT10.1.0ORADATAORCLSYSTEM01.DBF
输入数据文件 fno=00003 name=D:ORACLEPRODUCT10.1.0ORADATAORCLSYSAUX01.DBF
输入数据文件 fno=00005 name=D:ORACLEPRODUCT10.1.0ORADATAORCLEXAMPLE01.DBF
输入数据文件 fno=00002 name=D:ORACLEPRODUCT10.1.0ORADATAORCLUNDOTBS01.DBF
输入数据文件 fno=00004 name=D:ORACLEPRODUCT10.1.0ORADATAORCLUSERS01.DBF
通道 ORA_DISK_1: 正在启动段 1 于 17-7月 -05
通道 ORA_DISK_1: 已完成段 1 于 17-7月 -05
段 handle=D:ORABACKUPORCL_17_1LEVEL.DBF comment=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:35
通道 ORA_DISK_1: 启动增量级别 1 数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
备份集中包括当前控制文件
在备份集中包含当前的 SPFILE
通道 ORA_DISK_1: 正在启动段 1 于 17-7月 -05
通道 ORA_DISK_1: 已完成段 1 于 17-7月 -05
段 handle=D:ORABACKUPORCL_18_1LEVEL.DBF comment=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:06
完成 backup 于 17-7月 –05

level 0备份后其实我根本就没有对数据库做什么更改,level 1备份居然也使用了35秒

--==================================

然后让我们把block change tracking启用后测试一下level 1需要的时间。

SQL>alter database enable block change tracking using
2 file 'D:oracleproduct10.1.0flash_recovery_areaORCLFLASHBACK BLOCK_CHANGE_TRACE.LOG';
我使用的是安装的时候默认的数据库,这个记录文件大概为十几M.除了用位图,别的方式应该没办法这么多快好省的记录数据块的变化了

SQL> alter database enable block change tracking;

数据库已更改


先删除原来的备份
RMAN> delete backupset 14;
RMAN> delete backupset 12;


让我们做备份测试一下,注意看它们完成所用的时间
RMAN> backup incremental level 0 format='d:orabackup%d_%s_test_level0.dbf'
2> database;

启动 backup 于 17-7月 -05
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 启动增量级别 0 数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
输入数据文件 fno=00001 name=D:ORACLEPRODUCT10.1.0ORADATAORCLSYSTEM01.DBF
输入数据文件 fno=00003 name=D:ORACLEPRODUCT10.1.0ORADATAORCLSYSAUX01.DBF
输入数据文件 fno=00005 name=D:ORACLEPRODUCT10.1.0ORADATAORCLEXAMPLE01.DBF
输入数据文件 fno=00002 name=D:ORACLEPRODUCT10.1.0ORADATAORCLUNDOTBS01.DBF
输入数据文件 fno=00004 name=D:ORACLEPRODUCT10.1.0ORADATAORCLUSERS01.DBF
通道 ORA_DISK_1: 正在启动段 1 于 17-7月 -05
通道 ORA_DISK_1: 已完成段 1 于 17-7月 -05
段 handle=D:ORABACKUPORCL_19_TEST_LEVEL0.DBF comment=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:01:26
通道 ORA_DISK_1: 启动增量级别 0 数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
备份集中包括当前控制文件
在备份集中包含当前的 SPFILE
通道 ORA_DISK_1: 正在启动段 1 于 17-7月 -05
通道 ORA_DISK_1: 已完成段 1 于 17-7月 -05
段 handle=D:ORABACKUPORCL_20_TEST_LEVEL0.DBF comment=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:05
完成 backup 于 17-7月 –05

再做level 1
RMAN> backup incremental level 1 format='d:orabackup%d_%s_test_level1.dbf'
2> database;

启动 backup 于 17-7月 -05
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 启动增量级别 1 数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
输入数据文件 fno=00001 name=D:ORACLEPRODUCT10.1.0ORADATAORCLSYSTEM01.DBF
输入数据文件 fno=00003 name=D:ORACLEPRODUCT10.1.0ORADATAORCLSYSAUX01.DBF
输入数据文件 fno=00005 name=D:ORACLEPRODUCT10.1.0ORADATAORCLEXAMPLE01.DBF
输入数据文件 fno=00002 name=D:ORACLEPRODUCT10.1.0ORADATAORCLUNDOTBS01.DBF
输入数据文件 fno=00004 name=D:ORACLEPRODUCT10.1.0ORADATAORCLUSERS01.DBF
通道 ORA_DISK_1: 正在启动段 1 于 17-7月 -05
通道 ORA_DISK_1: 已完成段 1 于 17-7月 -05
段 handle=D:ORABACKUPORCL_21_TEST_LEVEL1.DBF comment=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:07
通道 ORA_DISK_1: 启动增量级别 1 数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
备份集中包括当前控制文件
在备份集中包含当前的 SPFILE
通道 ORA_DISK_1: 正在启动段 1 于 17-7月 -05
通道 ORA_DISK_1: 已完成段 1 于 17-7月 -05
段 handle=D:ORABACKUPORCL_22_TEST_LEVEL1.DBF comment=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:05
完成 backup 于 17-7月 –05

显然level 1备份用了7秒就完成了,比起没有启用block change tracking快了几倍


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/19602/viewspace-61718/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2007-12-07

  • 博文量
    717
  • 访问量
    5115126