浅谈Blocking Changing Tracking文件

 

Oracle备份还原(Backup & Recovery)是作为数据库管理DBA最重要的工作之一,也是基本功之一。Oracle作为一款目前最成功的商用数据库软件系统,为使用者提供了多种类型的数据备份还原解决方案,以适应不同的场景需求。

 

简单的说,Oracle备份还原方案主要包括两个大类型:用户管理(User-Managed)和系统管理(System-Managed)。我们配合不同的归档模式,可以实现完全备份还原和非完全备份还原。

 

在备份还原问题上,没有一个统一要做到什么的标准。我们在确定一个系统的备份策略时,主要是依据三个标准:

 

ü  最大容忍数据损失。系统用户能够最大容忍多长时间的数据丢失;

ü  最大数据保存时间。系统用户要求恢复最远的数据版本,也就是备份保存多长时间;

ü  备份时是否允许停机。在目前7×24广泛的情况下,是否允许冷备是一个重要的需求方面;

 

对数据进行备份的时候,我们通常会采用增量Incremental的备份策略。在Oracle中,增量备份是依据Level进行配置的。Level 0实际上就是表示进行全库备份,而Level 1就是表示增量备份,与上次的备份版本进行对比,将变化的数据块进行备份。

 

Level 1备份又分为cumulativedifferential两种类型。两者的差别在于寻找对比基线的不同策略。Cumulative方式是寻找距上次全库备份的block change差异,而Differential是寻找上次备份(可能是Incremental)的差异。

 

在本篇中,笔者主要介绍一下Oracle 进行差异备份时候的优化策略。

 

110g优化策略——Blocking Changing Tracking

 

我们从微观角度看问题,Incremental Backup是存在一些思考的问题的。当我们进行了一次全库备份(例如 Incremental Level 0),再次进行incremental level 1增量备份的时候,Oracle需要获取到距离上次备份的所有数据表变化块。

 

Blocking Changing Tracking特性之前,Oracle是通过检索所有数据文件数据块的方法来进行变化数据块的定位。具体来说,就是通过三个SCN来进行定位,分别为Checkpoint SCNIncremental start SCNBlock SCN

 

当我们的数据库容量很大的时候,检查数据文件变化数据块是一个任务很重的工作。出于性能优化的考虑,Oracle 10g引入了Blocking Changing Tracking机制。

 

Blocking Changing Tracking机制是Oracle为了Incremental Backup而引入的一种记录策略。当数据库启用了Blocking Changing Tracking启用之后,Oracle会在指定的目录上生成一个文件,以Bit Map位图方式记录数据块的变化。当进行Incremental Backup的时候,Oracle就直接访问这个文件,获取变化数据块的信息。这样,就可以直接访问到数据块进行收集。

 

默认情况下,Blocking Changing Tracking特性是不会启用的。下面,我们演示一下如何启用和配置Blocking Changing Tracking特性。

 

 

2Blocking Changing Tracking配置

 

我们选择Oracle 11g进行实验。

 

 

SQL> conn / as sysdba

Connected.

SQL> select * from v$version;

 

BANNER

--------------------------------------------------------------------------------

Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production

PL/SQL Release 11.2.0.1.0 - Production

CORE    11.2.0.1.0      Production

 

 

默认情况下,Blocking Changing Tracking会生成对应的Tracking File文件。在10g之后,Tracking File的保存是可以使用OMFOracle-Managed File)特性的,也就是说,我们可以不设置Tracking文件的目录名称信息。

 

当然,使用OMF的前提是进行db_create_file_dest的参数配置。

 

 

SQL> show parameter db_create;

 

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

db_create_file_dest                  string      /u01/app/oradata

db_create_online_log_dest_1          string

db_create_online_log_dest_2          string

(篇幅原因,省略部分内容……

 

 

如果我们不指定文件名(也是Oracle推荐的方式),就会在db_create_file_dest目录下进行数据文件自动创建。

 

 

SQL> alter database enable block change tracking;

Database altered.

 

 

此时,我们在文件系统上可以看到对应的内容。

 

 

[oracle@bsplinux ~]$ cd /u01/app/oradata/

[oracle@bsplinux oradata]$ ls -l

total 8

drwxr-x--- 6 oracle oinstall 4096 Jul 17 23:36 ORA11G

[oracle@bsplinux oradata]$ cd ORA11G/

[oracle@bsplinux ORA11G]$ ls -l

total 28

drwxr-x--- 2 oracle oinstall 4096 Jul 17 23:36 changetracking

drwxr-x--- 2 oracle oinstall 4096 May 22 19:41 controlfile

drwxr-x--- 2 oracle oinstall 4096 Jul  3 03:34 datafile

drwxr-x--- 2 oracle oinstall 4096 May 22 19:42 onlinelog

 

[oracle@bsplinux ORA11G]$ cd changetracking/

[oracle@bsplinux changetracking]$ ls -l

total 11348

-rw-r----- 1 oracle oinstall 11600384 Jul 17 23:38 o1_mf_80c1nvn8_.chg

 

 

在数据库层面上,我们可以通过视图v$block_change_tracking来检查。

 

 

SQL> select status, filename from v$block_change_tracking;

 

STATUS     FILENAME

---------- --------------------------------------------------------------------------------

ENABLED    /u01/app/oradata/ORA11G/changetracking/o1_mf_80c1nvn8_.chg

 

 

此时,我们就开启了block changing tracking组件方法。关闭该特性,也有相应的方法。

 

 

SQL> alter database disable block change tracking;

Database altered.

 

 

SQL> select status, filename from v$block_change_tracking;

STATUS     FILENAME

---------- --------------------------------------------------------------------------------

DISABLED   

 

 

 

3、命名block changing tracking文件

 

除了使用OMF,我们也是可以命名使用Tracking文件的。下面我们开启该功能。

 

 

SQL> alter database enable block change tracking using file '/u01/app/oradata/ORA11G/test.chg' reuse;

Database altered.

 

SQL> select status, filename from v$block_change_tracking;

STATUS     FILENAME

---------- --------------------------------------------------------------------------------

ENABLED    /u01/app/oradata/ORA11G/test.chg

 

 

我们也可以进行重命名文件,不过这个操作是要进行重启数据库进入mount状态。

 

 

SQL> shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> startup mount;

ORACLE instance started.

 

Total System Global Area  422670336 bytes

Fixed Size                  1336960 bytes

Variable Size             356518272 bytes

Database Buffers           58720256 bytes

Redo Buffers                6094848 bytes

Database mounted.

SQL> alter database rename file '/u01/app/oradata/ORA11G/test.chg' to '/u01/app/oradata/ORA11G/changetracking/o1_mf_80c1nvn8_.chg';

 

Database altered.

 

 

此时,我们可以启动系统。

 

 

SQL> alter database open;

Database altered.

 

SQL> select status, filename from v$block_change_tracking;

STATUS     FILENAME

---------- --------------------------------------------------------------------------------

ENABLED    /u01/app/oradata/ORA11G/changetracking/o1_mf_80c1nvn8_.chg

 

 

 

4block changing tracking文件大小

 

最后我们一起讨论一下Tracking文件的大小问题。我们在开启Tracking功能的时候,是不能够指定Tracking文件的大小的。该文件的大小是由数据库体积大小来决定的。随着Oracle数据库体积的增加、减少,该文件也会自动的进行变化。

 

Oracle中,我们可以从v$block_change_tracking中查看到该文件的大小信息。在MOS上,我们查到了对应的计算公式:

 

 

= * (# of old backups + 2) * (size of db/250000)

 

 

一般情况下,我们有一个经验对应比例1/30000。也就是1TB的数据,对应Tracking File30MB左右。

 

5、结论

 

Oracle备份还原是我们研究的一个重要方面。正式生产环境下,备份还原策略都是一个综合性多种策略共同使用的过程。Incremental Backup在应对海量数据备份场景,有着很强的优势。Block Changing TrackingOracle 10g的一个重要优化策略,值得我们研究学习。

 

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

转载于:http://blog.itpub.net/17203031/viewspace-735880/

你可能感兴趣的:(浅谈Blocking Changing Tracking文件)