oracle 11g新特性-控制文件延迟备份
同学分享了一篇关于11gR2控制文件延迟备份的文章,看了之后感觉很有意思,就测试了下。在10g版本,开启归档模式并且在RMAN中配置控制文件自动备份后,当数据库结构发生变化,就会触发控制文件的备份,并且记录在告警日志中,如下测试:
10g版本测试:
[oracle@source flash_recovery_area]$ rman target / Recovery Manager: Release 10.2.0.4.0 - Production on Sun Nov 10 18:35:34 2013 Copyright (c) 1982, 2007, Oracle. All rights reserved. connected to target database: SOURCE (DBID=2948128830) RMAN> show CONTROLFILE AUTOBACKUP; using target database control file instead of recovery catalog RMAN configuration parameters are: CONFIGURE CONTROLFILE AUTOBACKUP ON; SQL> archive log list Database log mode Archive Mode Automatic archival Enabled Archive destination USE_DB_RECOVERY_FILE_DEST Oldest online log sequence 23 Next log sequence to archive 25 Current log sequence 25
下面创建表空间,看看控制文件自动备份情况。
SQL> create tablespace ts_test datafile '/u01/app/oracle/oradata/source/ts_test01.dbf' size 10M; Tablespace created.
告警日志已经记录控制文件自动备份的信息。
Sun Nov 10 18:37:36 2013 create tablespace ts_test datafile '/u01/app/oracle/oradata/source/ts_test01.dbf' size 10M Sun Nov 10 18:37:37 2013 Starting control autobackup db_recovery_file_dest_size of 10240 MB is 0.07% used. This is a user-specified limit on the amount of space that will be used by this database for recovery-related files, and does not reflect the amount of space available in the underlying filesystem or ASM diskgroup. Control autobackup written to DISK device handle '/u01/app/oracle/flash_recovery_area/SOURCE/autobackup/2013_11_10/o1_mf_s_831148657_97yrhl82_.bkp' Completed: create tablespace ts_test datafile '/u01/app/oracle/oradata/source/ts_test01.dbf' size 10M
删除这个新建的表空间,看看控制文件备份情况。
SQL> drop tablespace ts_test; Tablespace dropped.
告警日志中会立即出现控制文件自动备份的信息。
Sun Nov 10 18:38:16 2013 drop tablespace ts_test Sun Nov 10 18:38:16 2013 Starting control autobackup Control autobackup written to DISK device handle '/u01/app/oracle/flash_recovery_area/SOURCE/autobackup/2013_11_10/o1_mf_s_831148696_97yrjrty_.bkp' Completed: drop tablespace ts_test
到控制文件自动备份的路径下也可以看到这些备份文件。
[oracle@source 2013_11_10]$ pwd /u01/app/oracle/flash_recovery_area/SOURCE/autobackup/2013_11_10 [oracle@source 2013_11_10]$ ls o1_mf_s_831148657_97yrhl82_.bkp o1_mf_s_831148696_97yrjrty_.bkp
可见,在10g版本中,当数据库运行在归档模式,并且在RMAN中设置了控制文件自动备份,每当数据库结构发生变化的时候,都会立即触发控制文件的自动备份,那么在短时间内如果频繁修改数据库结构,就会多次备份控制文件,这样不但占用磁盘空间而且影响性能。
在11g版本,引入了控制文件延迟备份的特性,在数据库结构变化后,不会立马备份控制文件,而是在最后一次数据库结构发生变化6分钟后,再备份控制文件。
C:\Windows\system32>rman target / 恢复管理器: Release 11.2.0.1.0 - Production on 星期日 11月 10 17:18:34 2013 Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved. 连接到目标数据库: DBDREAM (DBID=2326242578) RMAN> show CONTROLFILE AUTOBACKUP; 使用目标数据库控制文件替代恢复目录 db_unique_name 为 DBDREAM 的数据库的 RMAN 配置参数为: CONFIGURE CONTROLFILE AUTOBACKUP ON; 17:17:21 SQL> archive log list 数据库日志模式 存档模式 自动存档 启用 存档终点 D:\ARCH 最早的联机日志序列 1020 下一个存档日志序列 1022 当前日志序列 1022
删除一个表空间。
17:23:10 SQL> drop tablespace TBS16K INCLUDING CONTENTS; 表空间已删除。
看看告警日志信息。
Sun Nov 10 17:23:12 2013 drop tablespace TBS16K INCLUDING CONTENTS Completed: drop tablespace TBS16K INCLUDING CONTENTS
告警日志只记录表空间被删掉,并没有关于控制文件自动备份的信息,而且也没有生成备份文件。几分钟后,生成了备份文件,告警日至依然没有这部分信息,但是在m000进程的trace文件里记录了这一过程。
Starting control autobackup *** 2013-11-10 17:31:27.333 Control autobackup written to DISK device handle 'D:\APP\STREAM\FLASH_RECOVERY_AREA\DBDREAM\AUTOBACKUP\2013_11_10\O1_MF_S_831144685_97YNMGJS_.BKP'
在闪回恢复区也可以看到控制文件的备份。
D:\app\stream\flash_recovery_area\dbdream\AUTOBACKUP\2013_11_10>dir/b O1_MF_S_831144685_97YNMGJS_.BKP
既然11g在数据库结构发生变化后,延迟6分钟再备份控制文件,为的就是在频繁修改数据库结构时,不要每一次都备份控制文件,下面验证下。
17:34:56 SQL> drop tablespace TBS8K INCLUDING CONTENTS; 表空间已删除。
过几分钟,在修改下数据库结构。
17:39:56 SQL> alter tablespace users add datafile 'D:\APP\STREAM\ORADATA\DBDREAM\USERS02.dbf' size 10M; 表空间已更改。
果然,在17:46:30只备份了一次控制文件。
*** 2013-11-10 17:46:30.424 Control autobackup written to DISK device handle 'D:\APP\STREAM\FLASH_RECOVERY_AREA\DBDREAM\AUTOBACKUP\2013_11_10\O1_MF_S_831145588_97YOHOO3_.BKP'
可见,在11gR2版本,控制文件自动备份是在最后一次数据库结果发生变化后的6分钟之后。12C版本是否也是这样呢?下面看下12C的测试。
[oracle@dbdream ~]$ rman target / Recovery Manager: Release 12.1.0.1.0 - Production on Fri Aug 16 12:25:31 2013 Copyright (c) 1982, 2013, Oracle and/or its affiliates. All rights reserved. connected to target database: DBDREAM (DBID=2364849259) RMAN> show CONTROLFILE AUTOBACKUP; using target database control file instead of recovery catalog RMAN configuration parameters for database with db_unique_name DBDREAM are: CONFIGURE CONTROLFILE AUTOBACKUP ON; # default
在12C版本,控制文件自动备份默认情况下就已经是开启状态了。
[oracle@dbdream ~]$ sqlplus / as sysdba SQL*Plus: Release 12.1.0.1.0 Production on Fri Aug 16 12:27:51 2013 Copyright (c) 1982, 2013, Oracle. All rights reserved. Connected to: Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options SQL> archive log list Database log mode Archive Mode Automatic archival Enabled Archive destination USE_DB_RECOVERY_FILE_DEST Oldest online log sequence 23 Next log sequence to archive 25 Current log sequence 25
下面看下12C是否也延续了11gR2的这个特性。
12:30:12 SQL> create tablespace ts_test12c datafile '/u01/app/oracle/oradata/DBDREAM/datafile/ts_test12c01.dbf' size 10m; 表空间已创建。
看下告警日志信息。
Fri Aug 16 12:30:15 2013 create tablespace ts_test12c datafile '/u01/app/oracle/oradata/DBDREAM/datafile/ts_test12c01.dbf' size 10m Completed: create tablespace ts_test12c datafile '/u01/app/oracle/oradata/DBDREAM/datafile/ts_test12c01.dbf' size 10m
12C的告警日志和11gR2是一样的,只记录更改信息不记录控制文件的自动备份信息。在9分钟后,生成了备份信息,并且也在m000进程的trace文件里记录这一过程。
*** 2013-08-16 12:39:34.895 Control autobackup written to DISK device handle '/u01/app/oracle/fast_recovery_area/DBDREAM/autobackup/2013_08_16/o1_mf_s_823610372_90vc85w1_.bkp'
看来12cR1版本这一点和11gR2是一样的,也采用控制文件延迟自动备份的功能。