備份控制文件
備份控制文件的方式有多種。
備份控制文件可以在線進行
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 TABLEPACE、DROP LOGFILE、ADD 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'
SYSTEM表空間的數據文件做備份時,RMAN也會自動對控制文件做備份
只要是對編號為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;