From:http://blog.chinaunix.net/uid-22948773-id-3347991.html
在10G中,ORACLE引入了控制文件的自动备份,如果数据库的结构发生了变化,那么ORACLE
会自动将控制文件备份到指定目录中。
前提是数据库处于归档模式,并且CONTROLFILE AUTOBACKUP设置为ON。
首先看一下10G的情况:
- SQL>
select *
from v$version;
- BANNER
- --------------------------------------------------------------------------------
- Oracle Database 10g Enterprise Edition
Release 10.2.0.5.0 - 64bi
- PL/SQL Release 10.2.0.5.0 - Production
- CORE 10.2.0.5.0 Production
- TNS for Linux: Version 10.2.0.5.0 - Production
- NLSRTL Version 10.2.0.5.0 -
Production
- SQL> conn / as
sysdba
- Connected.
- SQL> archive log list
- Database log mode
Archive Mode
- Automatic archival Enabled
- Archive destination USE_DB_RECOVERY_FILE_DEST
- Oldest online log sequence
121
- Next log sequence to
archive 124
- Current log sequence
124
- [oracle@dbserver ~]$ rman target /
- Recovery Manager: Release 10.2.0.5.0 - Production on Fri Sep 14 11:00:13
2012
- Copyright (c) 1982,
2007, Oracle. All rights
reserved.
- connected to target database:
REPORTDB (DBID=3119636991)
- RMAN> show controlfile autobackup;
- using target database control file instead
of recovery catalog
- RMAN configuration parameters are:
- CONFIGURE CONTROLFILE AUTOBACKUP ON;
- RMAN>
这是一个10.2.0.5的数据库,数据库处于归档模式,并且controlfile autobackup设置为ON。
- SQL>
create tablespace test datafile '/u01/app/oracle/oradata/reportdb/test01.dbf'
size 2m;
- Tablespace created.
- SQL> alter database
drop logfile group 5;
- Database altered.
日志文件中将会看到控制文件的自动备份情况。
- Fri Sep 14 10:32:12 CST
2012
- create tablespace test datafile '/u01/app/oracle/oradata/reportdb/test01.dbf'
size 2m
- Fri Sep 14 10:32:13 CST 2012
- Starting control autobackup
- Control autobackup written to DISK
device
- handle '/u01/app/oracle/flash_recovery_area/REPORTDB/autobackup/2012_09_14/o1_mf_s_793967533_8555sgkh_.bkp'
- Completed: create tablespace test datafile '/u01/app/oracle/oradata/reportdb/test01.dbf'
size 2m
- Fri Sep 14 10:32:33 CST 2012
- alter database drop
logfile group 5
- Fri Sep 14 10:32:33 CST 2012
- Starting control autobackup
- Control autobackup written to DISK
device
- handle '/u01/app/oracle/flash_recovery_area/REPORTDB/autobackup/2012_09_14/o1_mf_s_793967553_8555t1q6_.bkp'
- Completed: alter database
drop logfile group 5
ls -ltr 也可以看出文件的创建时间可以看出备份文件被立马创建。
[oracle@dbserver REPORTDB]$ ls -ltr
/u01/app/oracle/flash_recovery_area/REPORTDB/autobackup/2012_09_14/
total
36380
-rw-r----- 1 oracle oinstall 7438336 Sep 14 10:32
o1_mf_s_793967533_8555sgkh_.bkp
-rw-r----- 1 oracle oinstall 7438336 Sep 14
10:32 o1_mf_s_793967553_8555t1q6_.bkp
从ORACLE DATABASE
11GR2开始,引入了控制文件自动备份延迟创建的特性。
即使你设置了控制文件的自动备份,在数据库结构发现变化的时候不会立即看到控制文件的备份,而是过一段时间才会看到。
这是ORACLE为了改变性能而引入的,防止你在一个脚本中多次对数据库结构的变化而创建多个控制文件备份。
譬如CREATE
TABLEPACE,DROP LOGFILE,ADD
LOGEILE等,11G只会备份一个控制文件,而不是多个。
对于10G只要对数据库结构改变,就会自动备份一个。
上面的例子我创建了一个表空间,删除了一个日志文件组,后台自动生成了2个控制文件备份。
下面看一下11G的情况:
- [oracle@db2server ~]$ rman target /
- Recovery Manager: Release 11.2.0.1.0 - Production on Tue Sep 11 22:35:09
2012
- Copyright (c) 1982,
2009, Oracle and/or its affiliates. All rights
reserved.
- connected to target database:
HUATENG (DBID=2134565240)
- RMAN> CONFIGURE CONTROLFILE
AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO
'/archivelog/autobackup/%F';
- new RMAN configuration parameters:
- CONFIGURE CONTROLFILE AUTOBACKUP FORMAT
FOR DEVICE TYPE DISK TO
'/archivelog/autobackup/%F';
- new RMAN configuration parameters are successfully stored
- RMAN> SHOW CONTROLFILE AUTOBACKUP ;
- RMAN configuration parameters for database with
db_unique_name HUATENG are:
- CONFIGURE CONTROLFILE AUTOBACKUP ON;
- RMAN>
- SQL> archive log list
- Database log mode
Archive Mode
- Automatic archival Enabled
- Archive destination /archivelog
- Oldest online log sequence
7
- Next log sequence to
archive 9
- Current log sequence
9
- SQL> create tablespace test datafile '/u01/app/oracle/oradata/huateng/test01.dbf' size 2m;
- Tablespace created.
- Incremental checkpoint up to RBA [0x9.346f.0], current
log tail at RBA [0x9.346f.0]
- Tue Sep 11 22:38:02 2012
- create tablespace test datafile '/u01/app/oracle/oradata/huateng/test01.dbf' size 2m
- Completed: create tablespace test datafile '/u01/app/oracle/oradata/huateng/test01.dbf' size 2m
- Tue Sep 11 22:38:20 2012
- Incremental checkpoint up to RBA [0x9.346f.0], current
log tail at RBA [0x9.3501.0]
日志文件中仅仅显示了表空间创建成功的信息,并没有控制文件的自动备份信息。
而且备份目录下也没有发现任何的控制文件备份文件。
[oracle@db2server autobackup]$
pwd
/archivelog/autobackup
[oracle@db2server autobackup]$ ls -ltr
total
0
[oracle@db2server autobackup]$
MOS [ID 1068182.1]对这个问题进行了如下阐述:
In this release, the controlfile autobackups are created by MMON slaves
after few minutes of the structural changes,
which increases
performance.
So, It's the expected behaviour to get the controlfile autobackup several
minutes after the structural change on the database
and it's also expected
that no message about controlfile autobackup creation will appear in the
alert.log.
There will be generated one MMON slave trace file with the
controlfile creation information, that will be a file named:
SID__m000_.trc
在经过6分钟后,终于看到备份文件了:
[oracle@db2server autobackup]$ ls -ltr
total 9616
-rw-r----- 1 oracle
oinstall 9830400 Sep 11 22:44 c-2134565240-20120911-00
oracle后台进程m000的TRACE文件中记录此次备份信息,ALERT文件中不再记录了。
- [oracle@db2server trace]$ more
huateng_m000_8971.trc
- Trace file /u01/app/oracle/diag/rdbms/huateng/huateng/trace/huateng_m000_8971.trc
- Oracle Database 11g Enterprise Edition
Release 11.2.0.1.0 - Production
- With the Partitioning, OLAP, Data Mining and Real
Application Testing options
- ORACLE_HOME = /u01/app/oracle/product/db11gr2
- System name: Linux
- Node name: db2server
- Release: 2.6.18-92.el5
- Version: #1 SMP Tue Jun 10 18:49:47 EDT
2008
- Machine: i686
- Instance name: huateng
- Redo thread mounted by this
instance: 1
- Oracle process number: 30
- Unix process pid: 8971, image:
oracle@db2server (M000)
- *** 2012-09-11 22:44:03.648
- *** SESSION ID:(50.5) 2012-09-11 22:44:03.648
- *** CLIENT
ID:() 2012-09-11 22:44:03.648
- *** SERVICE
NAME:(SYS$BACKGROUND) 2012-09-11 22:44:03.648
- *** MODULE
NAME:(MMON_SLAVE)
2012-09-11 22:44:03.648
- *** ACTION
NAME:(Autobackup Control File)
2012-09-11 22:44:03.648
- Starting control autobackup
- *** 2012-09-11 22:44:06.515
- Control autobackup written to DISK
device
- handle '/archivelog/autobackup/c-2134565240-20120911-00'
ORACLE通过隐含参数controlfile_autobackup_delay来控制这种行为,默认是300秒。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/27042095/viewspace-768145/
,如需转载,请注明出处,否则将追究法律责任。