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



【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 '

'

;  --熱備份控制文件   alter database backup controlfile to '/home/oracle/ora_bk/control.bk';


alter database backup controlfile to trace as '

'

 ;--得到建立控制文件的腳本


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寶典今日頭條號地址:http://www.toutiao.com/c/user/6401772890/#mid=1564638659405826

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

● QQ群號:230161599(滿)、618766405

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

● 聯系我請加QQ好友646634621,注明添加緣由

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

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

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

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

小麥苗的微店https://weidian.com/s/793741433?wfr=c&ifr=shopdetail

小麥苗出版的數據庫類叢書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筆試面試寶典》讀者群       小麥苗的微店

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


DBA筆試面試講解群
《DBA寶典》讀者群 歡迎與我聯系




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM