【RMAN】Oracle中如何備份控制檔案?備份控制檔案的方式有哪幾種?

lhrbest發表於2018-03-22


【RMAN】Oracle中如何備份控制檔案?備份控制檔案的方式有哪幾種?





真題1、
 
如何備份控制檔案?備份控制檔案的方式有哪幾種?


答案:備份控制檔案的方式有多種。

備份控制檔案可以線上進行:

SQL> ALTER DATABASE BACKUP CONTROLFILE TO '/tmp/control.ctl';--熱備份控制檔案

SQL> ALTER DATABASE BACKUP CONTROLFILE TO TRACE  AS '/home/bk/a.ctl';--得到建立控制檔案的指令碼備份為文字檔案格式

SQL> ALTER DATABASE BACKUP CONTROLFILE TO TRACE [RESETLOGS|NORESETLOGS];

RMAN手動備份控制檔案:

BACKUP CURRENT CONTROLFILE;

BACKUP CURRENT CONTROLFILE FORMAT '/home/oracle/oracle_bk/orclasm/ctl_%d_%T_%s_%p.bak';

BACKUP AS COPY CURRENT CONTROLFILE FORMAT '/home/oracle/ctl.bak';

BACKUP DATABASE INCLUDE CURRENT CONTROLFILE;

設定RMAN自動備份控制檔案:

RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;

RMAN> CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/home/oracle/ctl_%f.bak';

然後再透過rman做任何備份操作的同時,都會自動對控制檔案做備份。

當資料庫處於歸檔模式且設定了CONFIGURE CONTROLFILE AUTOBACKUP ON;”時,若資料庫的結構發生了變化(例如新增或刪除表空間),則也會自動對控制檔案進行備份。需要注意的是,從Oracle 11g開始,rman對控制檔案自動備份做了延遲處理。在Oracle 10g中,引入了控制檔案的自動備份特性。如果資料庫的結構發生了變化,那麼Oracle會自動將控制檔案備份到指定目錄中,並且在告警日誌中記錄相關的資訊。前提是資料庫處於歸檔模式,並且CONTROLFILE AUTOBACKUP設定為ON。但是,從Oracle 11gR2開始,引入了控制檔案自動備份延遲建立的特性。即使設定了控制檔案的自動備份,在資料庫結構發現變化的時候也不會立即看到控制檔案的備份,而是在300秒(由隱含引數“_controlfile_autobackup_delay”來控制,預設是300秒)後才會看到控制檔案被自動做了備份(經過實驗測試,發現實際上是10分鐘之後)。而且,在告警日誌中也只能看到資料庫結構發生變化的資訊,而看不到控制檔案自動備份的資訊了,這是Oracle為了改變效能而引入的,防止使用者在一個指令碼中多次對資料庫結構的變化而建立多個控制檔案備份。例如CREATE TABLEPACEDROP LOGFILEADD LOGEILE等,那麼Oracle 11g只會備份一個控制檔案,而不是多個;對於Oracle 10g只要資料庫結構改變,就會自動備份一個。MOS文件[ID 1068182.1]對這個問題做了說明。在Oracle 11g中,備份控制檔案的後臺程式為MMON的奴隸程式,預設會生成一個trace檔案,名稱為SID__m000_<OS_PID>.trc,該trace檔案中記錄了控制檔案自動備份的位置和時間:

Starting control autobackup

 

*** 2018-03-22 13:46:39.836

Control autobackup written to DISK device

        handle '/u05/app/oracle/flash_recovery_area/ORA11G/autobackup/2018_03_22/o1_mf_s_971444798_fc6jszc5_.bkp'

只要是對編號為1的資料檔案,即SYSTEM表空間的資料檔案做備份時,RMAN也會自動對控制檔案做備份。

快照控制檔案。快照控制檔案是由RMAN在系統指定位置生成的當前控制檔案的一個副本。RMAN開始備份,Oracle檢查系統控制檔案與快照控制檔案是否一致(如果不存在,那麼會從控制檔案提取資訊建立),不一致則重新整理快照控制檔案。RMAN以下情況需要快照控制檔案:1.同步恢復目錄時2.對當前控制檔案進行備份時。在RAC環境下,僅僅在實施RMAN備份的節點上需要快照控制檔案。

檢視快照控制檔案的位置

RMAN> show snapshot controlfile name;

RMAN configuration parameters for database with db_unique_name USBO are:

CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/app/oracle/db_1/dbs/snapcf_lhrdb.f'; # default

Linux/Unix平臺為:$ORACLE_HOME/dbs/snapcf_$ORACLE_SID.f

Windows平臺為:%ORACLE_HOME%\database\snapcf_%$ORACLE_SID%.f

如果要檢視備份的控制檔案,那麼可以透過:

RMAN> LIST BACKUP OF CONTROLFILE;





 


一.1.1  備份控制檔案

 

 

控制檔案在ORACLE中的重要性是毋庸置疑的,你看,連RMAN都給予特殊的照顧,在RMAN中備份控制檔案的方式是最多的。

 

wps5393.tmp 

 

1.最簡單的方式,透過 CONFIGURE 命令將 CONTROLFILE AUTOBACKUP 置為 ON

RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;

RMAN> CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/home/oracle/ctl_%f.bak';

然後你再透過rman做任何備份操作的同時,都會自動對控制檔案做備份。當開啟控制檔案自動備份功能後,備份控制檔案的時候就會自動備份spfile引數檔案,備份引數檔案的時候也會備份控制檔案,這時spfile就會備份2次。

 

2.對編號為1的資料檔案,即SYSTEM表空間的資料檔案做備份時,RMAN也會自動對控制檔案做備份。

 

3.手動執行備份命令。

BACKUP CURRENT CONTROLFILE;

backup current controlfile format '/home/oracle/oracle_bk/orclasm/ctl_%d_%T_%s_%p.bak';

BACKUP AS COPY CURRENT CONTROLFILE FORMAT '/home/oracle/ctl.bak';

 

4.執行BACKUP時指定INCLUDE CURRENT CONTROLFILE引數,例如:

RMAN> BACKUP DATABASE INCLUDE CURRENT CONTROLFILE;

 

5.SQLPLUS下:

SQL> ALTER DATABASE BACKUP CONTROLFILE TO TRACE  as '/home/bk/a.ctl';--得到建立控制檔案的指令碼

SQL> alter database backup controlfile to '/tmp/control.ctl';--熱備份控制檔案

 

6.快照控制檔案

Linux/Unix平臺為: $ORACLE_HOME/dbs/snapcf_@.f

Windows平臺為: %ORACLE_HOME%\database\snapcf_@.f

 

如果要檢視備份的控制檔案,可以透過:

RMAN> LIST BACKUP OF CONTROLFILE;

 

 

-----------------------------------控制檔案

alter session set events 'immediate trace name CONTROLF level 12'; 

alter database  backup controlfile to trace as '/home/bk/a.ctl'; 

host strings /u01/app/oracle/oradata/orcl/control01.ctl > /u01/app/oracle/ctl.txt

 

熱備: 

alter database backup controlfile to '<dir>';  --熱備份控制檔案   alter database backup controlfile to '/home/oracle/ora_bk/control.bk';

alter database backup controlfile to trace as '<dir>' ;--得到建立控制檔案的指令碼

RMAN:

backup current controlfile format '/home/oracle/oracle_bk/orclasm/ctl_%d_%T_%s_%p.bak';

backup database include current controlfile;

 -- 或者設定RMAN 為自動備份

   RMAN > configure controlfile autobackup on;

 

 

 

控制檔案備份路徑參考之前的rman配置

 

 

【OCP真題1】 Which is not a valid way of backing up a control file?

A. Backing up the control file to trace

B. Copying the existing control file of the database to the backup location during a hot backup

C. Copying the existing control file of the database to the backup location during a cold backup

D. Creating a backup control file

E. Using the create controlfile command

Answer: B

 

一.1.1.1  線上映象備份

wps53A3.tmp 

 

一.1.1.2  自動備份

wps53A4.tmp 

一、 顯式自動備份

wps53B5.tmp 

wps53B6.tmp 

二、 隱式自動備份

wps53C6.tmp 

 

一.1.1.3  手動備份

wps53C7.tmp 

wps53D8.tmp 

 

一、 備份集備份

wps53D9.tmp 

 

wps53EA.tmp 

 

二、 映象複製備份

BACKUP AS COPY CURRENT CONTROLFILE FORMAT '/home/oracle/ctl.bak';

wps53EB.tmp 

 

三、 重建指令碼

wps53FB.tmp 

一.1.1.4  控制檔案快照

wps53FC.tmp 

 

wps540D.tmp 

或採用rman恢復: restore controlfile from '/$ORACLE_HOME/dbs/snapcf_br.f';

 

 

聽說過Oracle 控制檔案,還有快照控制檔案這個說法呢?沒錯,儘管快照控制檔案很少被提及,但確實是存在,只不過在使用RMAN時這個快照控制檔案被使用。回顧一下 Oracle 控制檔案,我們知道控制檔案是Oracle體系結構中的重要組成部分之一,記錄了當前資料庫的結構資訊,同時也包含資料檔案及日誌檔案的資訊以及相關的狀態,歸檔資訊,也記錄了系統當前SCN的值等等。那快照控制檔案也就是控制檔案的一個副本,本文介紹了什麼是快照控制檔案以及何時被使用。

1、快照控制檔案

快照控制檔案是由RMAN恢復管理器在系統指定位置生成的當前控制檔案的一個副本

我們知道控制檔案在整個資料庫生命期中在不斷的時時刻刻發生變化,RMAN備份需要依賴於控制檔案或恢復目錄,也就是說需要知道備份開始時的檢查點SCN以及所有檔案結構資訊並且在整個備份期間這些資訊需要保持一致,但又不能鎖定控制檔案(鎖定操作無法執行檢查點,切換日誌等)。因此既要保持一致性,又不影響資料庫的正常操作。快照控制檔案就應運而生了。RMAN只在備份或同步操作期間對實際控制檔案進行一個短暫的鎖定,並根據其內容來生成或重新整理快照控制檔案。一旦該動作完成之後,RMAN將切換到使用快照控制檔案進行備份及同步操作。從而保證備份期間控制檔案,資料檔案等等的一致性。

綜上所述,其主要作用是使用RMAN同步恢復目錄或備份時能得到一個一致性的控制檔案。

2、配置快照控制檔案

a、快照控制檔案位置

快照控制檔案的位置取決於不同的系統平臺,如果啟用了快速閃回區,預設情況下,生成的快照控制檔案並不位於閃回區

Linux/Unix平臺為: $ORACLE_HOME/dbs/snapcf_@.f

Windows平臺為: %ORACLE_HOME%\database\snapcf_@.f

b、檢視快照控制檔案位置

[oracle@linux1 dbs]$ export ORACLE_SID=usbo

[oracle@linux1 dbs]$ rman target /

--檢視快照控制檔案的位置

RMAN> show snapshot controlfile name;

RMAN configuration parameters for database with db_unique_name USBO are:

CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/app/oracle/db_1/dbs/snapcf_usbo.f'; # default

c、修改快照空檔案位置

sys@USBO> show parameter db_recov

NAME TYPE VALUE

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

db_recovery_file_dest string /u03/database/usbo/fr_area

db_recovery_file_dest_size big integer 3852M

sys@USBO> ho ls /u03/database/usbo/fr_area/USBO

archivelog

sys@USBO> ho mkdir -p /u03/database/usbo/fr_area/USBO/snap

--使用configure命令來配置快照控制檔案的位置,如下,我們修改到使用閃回區來存放

RMAN> configure snapshot controlfile name to '/u03/database/usbo/fr_area/USBO/snap/snapcf_usbo.f';

new RMAN configuration parameters:

CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u03/database/usbo/fr_area/USBO/snap/snapcf_usbo.f';

new RMAN configuration parameters are successfully stored

--檢視修改之後快照控制檔案的位置

RMAN> show snapshot controlfile name;

RMAN configuration parameters for database with db_unique_name USBO are:

CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u03/database/usbo/fr_area/USBO/snap/snapcf_usbo.f';

 

3、演示生成快照控制檔案

--下面檢視新的快照控制檔案位置無任何檔案  

sys@USBO> ho ls -hltr /u03/database/usbo/fr_area/USBO/snap  

total 0  

  

--生成控制檔案快照  

--在備份控制檔案時會生成控制檔案快照,如下  

RMAN> backup current controlfile;  

  

Starting backup at 2013/10/15 13:46:03  

allocated channel: ORA_DISK_1  

channel ORA_DISK_1: SID=143 device type=DISK  

channel ORA_DISK_1: starting full datafile backup set  

channel ORA_DISK_1: specifying datafile(s) in backup set  

including current control file in backup set  

channel ORA_DISK_1: starting piece 1 at 2013/10/15 13:46:05  

channel ORA_DISK_1: finished piece 1 at 2013/10/15 13:46:07  

piece handle=/u03/database/usbo/fr_area/USBO/backupset/2013_10_15/o1_mf_ncnnf_TAG20131015T134604_95sonxsx_.bkp   

tag=TAG20131015T134604 comment=NONE  

channel ORA_DISK_1: backup set complete, elapsed time: 00:00:02  

Finished backup at 2013/10/15 13:46:07  

  

--我們看以看到已經生成了一個控制檔案快照時間為13:46  

sys@USBO> ho ls -hltr /u03/database/usbo/fr_area/USBO/snap  

total 9.4M  

-rw-r----- 1 oracle asmadmin 9.4M Oct 15 13:46 snapcf_usbo.f  

  

--下面我們來備份系統表空間,注意,備份系統表空間時,或者資料庫發生結構性變化且開啟了控制檔案自動備份  

--則在備份時即使不指定備份控制檔案,控制檔案仍然會被自動備份,如下  

RMAN> backup tablespace system tag=system_tbs_bak;  

  

Starting backup at 2013/10/15 13:51:30  

using channel ORA_DISK_1  

channel ORA_DISK_1: starting full datafile backup set  

channel ORA_DISK_1: specifying datafile(s) in backup set  

input datafile file number=00001 name=/u03/database/usbo/oradata/system01.dbf  

channel ORA_DISK_1: starting piece 1 at 2013/10/15 13:51:30  

channel ORA_DISK_1: finished piece 1 at 2013/10/15 13:52:25  

piece handle=/u03/database/usbo/fr_area/USBO/backupset/2013_10_15/o1_mf_nnndf_SYSTEM_TBS_BAK_95soz2l6_.bkp   

tag=SYSTEM_TBS_BAK comment=NONE  

channel ORA_DISK_1: backup set complete, elapsed time: 00:00:55  

channel ORA_DISK_1: starting full datafile backup set  

channel ORA_DISK_1: specifying datafile(s) in backup set  

including current control file in backup set  

including current SPFILE in backup set  

channel ORA_DISK_1: starting piece 1 at 2013/10/15 13:52:29  

channel ORA_DISK_1: finished piece 1 at 2013/10/15 13:52:30  

piece handle=/u03/database/usbo/fr_area/USBO/backupset/2013_10_15/o1_mf_ncsnf_SYSTEM_TBS_BAK_95sp0x7s_.bkp   

tag=SYSTEM_TBS_BAK comment=NONE   --這個備份集就包含了控制檔案與spfile檔案的自動備份  

channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01  

Finished backup at 2013/10/15 13:52:30  

  

--檢查快照控制檔案是否被更新,此時檔案的時間發生了變化為13:52,如下  

sys@USBO> ho ls -hltr /u03/database/usbo/fr_area/USBO/snap  

total 9.4M  

-rw-r----- 1 oracle asmadmin 9.4M Oct 15 13:52 snapcf_usbo.f  

  

--下面我們來做一個全備,且在全備期間新增一個新的表空間以觀察快照控制檔案  

RMAN> backup database tag=full_bak;  

  

Starting backup at 2013/10/15 14:02:01   --->全備啟動時間為14:02:01  

using channel ORA_DISK_1  

channel ORA_DISK_1: starting full datafile backup set  

channel ORA_DISK_1: specifying datafile(s) in backup set  

input datafile file number=00001 name=/u03/database/usbo/oradata/system01.dbf  

input datafile file number=00002 name=/u03/database/usbo/oradata/sysaux01.dbf  

input datafile file number=00003 name=/u03/database/usbo/oradata/undotbs01.dbf  

input datafile file number=00004 name=/u03/database/usbo/oradata/users01.dbf  

channel ORA_DISK_1: starting piece 1 at 2013/10/15 14:02:01  

channel ORA_DISK_1: finished piece 1 at 2013/10/15 14:03:56  

piece handle=/u03/database/usbo/fr_area/USBO/backupset/2013_10_15/o1_mf_nnndf_FULL_BAK_95splt2p_.bkp tag=FULL_BAK comment=NONE  

channel ORA_DISK_1: backup set complete, elapsed time: 00:01:55  

channel ORA_DISK_1: starting full datafile backup set  

channel ORA_DISK_1: specifying datafile(s) in backup set  

including current control file in backup set  

including current SPFILE in backup set  

channel ORA_DISK_1: starting piece 1 at 2013/10/15 14:04:00  

channel ORA_DISK_1: finished piece 1 at 2013/10/15 14:04:02  

piece handle=/u03/database/usbo/fr_area/USBO/backupset/2013_10_15/o1_mf_ncsnf_FULL_BAK_95sppjj9_.bkp tag=FULL_BAK comment=NONE  

channel ORA_DISK_1: backup set complete, elapsed time: 00:00:02  

Finished backup at 2013/10/15 14:04:02  

  

--我們開啟另外一個session,此時時間為14:02:08,我們來新增一個表空間  

14:02:08 sys@USBO> create tablespace tbs_test datafile '/u03/database/usbo/oradata/tbs_test.dbf' size 5m;  

  

Tablespace created.  

  

14:02:54 sys@USBO>   

  

--Author : Leshami  

--Blog   : http://blog.csdn.net/leshami  

  

--檢視控制檔案中,新新增的表空間資訊已經被追加到控制檔案  

14:06:05 sys@USBO> ho strings /u03/database/usbo/oradata/control01.ctl | grep tbs_test  

/u03/database/usbo/oradata/tbs_test.dbf  

  

--同時新新增的表空間資訊同樣被追到了快照控制檔案  

14:07:19 sys@USBO> ho ls -hltr /u03/database/usbo/fr_area/USBO/snap/snapcf_usbo.f  

-rw-r----- 1 oracle asmadmin 9.4M Oct 15 14:04 /u03/database/usbo/fr_area/USBO/snap/snapcf_usbo.f  

  

14:07:05 sys@USBO> ho strings /u03/database/usbo/fr_area/USBO/snap/snapcf_usbo.f | grep tbs_test  

/u03/database/usbo/oradata/tbs_test.dbf  

  

--對於備份期間控制檔案的自動備份呢?  

--下面的檢查結果表明,自動備份的控制檔案中也存在新表空間的資訊  

14:10:49 sys@USBO> ho strings /u03/database/usbo/fr_area/USBO/backupset/2013_10_15/o1_mf_ncsnf_FULL_BAK_95sppjj9_.bkp | grep tbs_test  

/u03/database/usbo/oradata/tbs_test.dbf  

  

--檢視資料字典資訊,表空間已經被新增  

14:10:52 sys@USBO> select file#,name from v$datafile;  

  

     FILE# NAME  

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

         1 /u03/database/usbo/oradata/system01.dbf  

         2 /u03/database/usbo/oradata/sysaux01.dbf  

         3 /u03/database/usbo/oradata/undotbs01.dbf  

         4 /u03/database/usbo/oradata/users01.dbf  

         5 /u03/database/usbo/oradata/tbs_test.dbf  

     

--從上面的測試可知,  

--a、RMAN 開始備份,Oracle檢查控制檔案與快照控制檔案是否一致(如果不存在,從控制檔案提取資訊建立),不一致則重新整理快照控制檔案。  

--b、RMAN從快照控制檔案讀取資訊進行備份,此時快照控制檔案並不包含新的表空間,因此備份集中沒有tbs_test.dbf  

--c、備份完成後進行了控制檔案與spfile檔案自動備份  

--d、重新整理了快照控制檔案  

--e、所以上面的檢測中控制檔案,快照控制檔案,備份的控制檔案中都包含新表空間的資訊。但卻沒有備份,因為表空間在備份開始後被新增。  

  

--刪除演示的表空間     

14:16:07 sys@USBO> drop tablespace tbs_test including contents and datafiles;  

  

Tablespace dropped.  

  

--將快照控制檔案位置調整到預設路徑  

RMAN> configure snapshot controlfile name clear;  

  

old RMAN configuration parameters:  

CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u03/database/usbo/fr_area/USBO/snap/snapcf_usbo.f';  

RMAN configuration parameters are successfully reset to default value  

  

RMAN> show snapshot controlfile name;  

  

RMAN configuration parameters for database with db_unique_name USBO are:  

CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/app/oracle/db_1/dbs/snapcf_usbo.f'; # default 

 

 

The snapshot control file is a temporary snapshot control file that RMAN creates to re-synchronize from a read-consistent version of the control file. RMAN only needs a snapshot control file when re-synchronizing with the recovery catalog or when making a backup of the current control file. In Oracle RAC, the snapshot control file is only needed on the nodes on which RMAN performs backups; the snapshot control file does not need to be globally available to all instances in an Oracle RAC environment.

 

RMAN僅當以下情況下需要快照控制檔案:1.同步恢復目錄時2.對當前控制檔案進行備份時。在RAC環境下,僅僅在實施RMAN備份的節點上需要快照控制檔案;因此快照控制檔案是不需要在所有例項上全域性可用的。

 

 

You can specify a cluster file system file or a raw device destination for the location of your snapshot control file.

 

你同樣可以使用共享檔案系統或裸裝置指定快照控制檔案的位置。

 

Run the following RMAN command to determine the configured location of the snapshot control file:

 

SHOW SNAPSHOT CONTROLFILE NAME;

 

You can change the configured location of the snapshot control file. For example, on UNIX-based systems you can specify the snapshot control file location as $ORACLE_HOME/dbs/scf/snap_prod.cf by entering the following at the RMAN prompt:

 

CONFIGURE SNAPSHOT CONTROLFILE NAME TO '$ORACLE_HOME/dbs/scf/snap_prod.cf';

 

This command globally sets the configuration for the location of the snapshot control file throughout your cluster database. Therefore, ensure that the directory $ORACLE_HOME/dbs/scf exists on all nodes that perform backups.

 

 

如果快照控制檔案配置在共享儲存上時:

If one RMAN job is already backing up the control file while another needs to create a new snapshot control file, you may see the following message:

 

waiting for snapshot control file enqueue

 

Under normal circumstances, a job that must wait for the control file enqueue waits for a brief interval and then successfully retrieves the enqueue. Recovery Manager makes up to five attempts to get the enqueue and then fails the job. The conflict is usually caused when two jobs are both backing up the control file, and the job that first starts backing up the control file waits for service from the media manager.

 

這樣看來,每個例項使用自己的快照控制檔案可以避免以上問題。

 

 

配置例項:

--顯示快照控制檔案位置  

RMAN> show snapshot controlfile name; 

 

RMAN configuration parameters are: 

CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/app/oracle/product/10.2.0/db_1/dbs/snapcf_RACDB1.f'; # default 

 

--配置快照控制檔案位置(使用ASM或共享檔案系統或裸裝置)  

RMAN> configure snapshot controlfile name to  

'+FRA/SNAP/snap_prod.cf';  

RMAN> configure snapshot controlfile name to  

'/ocfs/oradata/dbs/scf/snap_prod.cf';  

RMAN> configure snapshot controlfile name to '/dev/sdj2'; 

 

--配置快照控制檔案為預設預設值  

RMAN> configure snapshot controlfile name clear; 

 

RMAN configuration parameters are successfully reset to default value 





 


 11G新特性-控制檔案延遲自動備份

 

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_<OS_PID>.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秒。

set line 9999

col NAME format a30

col KSPPDESC format a50

col KSPPSTVL format a20

SELECT a.INDX,

       a.KSPPINM NAME,

       a.KSPPDESC,

       b.KSPPSTVL

FROM   x$ksppi  a,

       x$ksppcv b

WHERE  a.INDX = b.INDX

  8  and lower(a.KSPPINM) like  lower('%?meter%');

Enter value for parameter: controlfile_autobackup

old   8: and lower(a.KSPPINM) like  lower('%?meter%')

new   8: and lower(a.KSPPINM) like  lower('%controlfile_autobackup%')

 

      INDX NAME   KSPPDESC     KSPPSTVL

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

      1226 _controlfile_autobackup_delay  time delay (in seconds) for performing controlfile 300

   autobackups

 

 





About Me

.............................................................................................................................................

● 本文作者:小麥苗,部分內容整理自網路,若有侵權請聯絡小麥苗刪除

● 本文在itpub(http://blog.itpub.net/26736162/abstract/1/)、部落格園(http://www.cnblogs.com/lhrbest)和個人微信公眾號(xiaomaimiaolhr)上有同步更新

● 本文itpub地址:http://blog.itpub.net/26736162/abstract/1/

● 本文部落格園地址:http://www.cnblogs.com/lhrbest

● 本文pdf版、個人簡介及小麥苗雲盤地址:http://blog.itpub.net/26736162/viewspace-1624453/

● 資料庫筆試面試題庫及解答:http://blog.itpub.net/26736162/viewspace-2134706/

● DBA寶典今日頭條號地址:

.............................................................................................................................................

● QQ群號:230161599(滿)、618766405

● 微信群:可加我微信,我拉大家進群,非誠勿擾

● 聯絡我請加QQ好友646634621,註明新增緣由

● 於 2018-03-01 06:00 ~ 2018-03-31 24:00 在魔都完成

● 文章內容來源於小麥苗的學習筆記,部分整理自網路,若有侵權或不當之處還請諒解

● 版權所有,歡迎分享本文,轉載請保留出處

.............................................................................................................................................

小麥苗的微店

小麥苗出版的資料庫類叢書http://blog.itpub.net/26736162/viewspace-2142121/

好訊息:小麥苗OCP、OCM開班啦,詳情請點選http://blog.itpub.net/26736162/viewspace-2148098/

.............................................................................................................................................

使用微信客戶端掃描下面的二維碼來關注小麥苗的微信公眾號(xiaomaimiaolhr)及QQ群(DBA寶典),學習最實用的資料庫技術。

小麥苗的微信公眾號小麥苗的DBA寶典QQ群2《DBA筆試面寶典》讀者群小麥苗的微店

   小麥苗的微信公眾號      小麥苗的DBA寶典QQ群2     《DBA筆試面試寶典》讀者群       小麥苗的微店

.............................................................................................................................................

【RMAN】Oracle中如何備份控制檔案?備份控制檔案的方式有哪幾種?
DBA筆試面試講解群
《DBA寶典》讀者群 歡迎與我聯絡



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26736162/viewspace-2152115/,如需轉載,請註明出處,否則將追究法律責任。

相關文章