控制檔案備份增加、破壞恢復系列實驗(上)
看了secooler的《Oracle個別控制檔案丟失故障場景模擬及處理方法》(http://space.itpub.net/519536/viewspace-701185),覺得受啟發。擴充下進行試驗,權當仿作吧。
控制檔案control file是Oracle啟動和執行過程中的重要檔案型別,其中記錄了Oracle執行的動態資訊和核心變數。同引數檔案parameter file不同的是,引數檔案中記錄瞭如SCN、狀態資訊等核心動態引數。控制檔案的丟失、損壞可能會引起很大的資料庫故障。
一般進行控制檔案管理常常使用多路備份的方法,將檔案分別複製在不同的物理位置上互為備份。如果有一個檔案丟失、損壞或者故障,可以使用其他online control file進行恢復。
本文實驗模擬三個場景,包括新備份control_file新增、破損丟失control_file故障處理和control_files列表清理。
1、 環境準備
我們選擇11g作為實驗環境。與控制檔案有關的重要引數是Control_files,表示系統認可的控制檔案資訊。可以用逗號分隔表示多重control_file資訊。
SQL> select * from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
PL/SQL Release 11.2.0.1.0 - Production
CORE 11.2.0.1.0 Production
TNS for Linux: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 – Production
SQL> show parameter control;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
control_file_record_keep_time integer 7
control_files string /u01/oradata/WILSON/controlfile/o1_mf_6bcsqm50_.ctl, /u01/flash_recovery_area/WILSON/controlfile/o1_mf_6bcsqmd8_.ctl
control_management_pack_access string DIAGNOSTIC+TUNING
SQL> select * from v$controlfile;
STATUS NAME IS_RECOVERY_DEST_FILE BLOCK_SIZE FILE_SIZE_BLKS
------- -------------------------------------------------------------------------------- --------------------- ---------- --------------
/u01/oradata/WILSON/controlfile/o1_mf_6bcsqm50_.ctl NO 16384 594
/u01/flash_recovery_area/WILSON/controlfile/o1_mf_6bcsqmd8_.ctl YES 16384 594
此時,系統中已經使用控制檔案多路備份的方法。除了OFA結構中定義的控制檔案位置,作為備份在flash_recovery_area中保留一個備份。
2、新增加一個控制檔案
現在我們要增加一個控制檔案備份,control_files列表中的控制檔案是100%相同的檔案內容。增加檔案可以按照下面步驟完成。
ü 在spfile可見性範圍內修改control_files初始化引數;
Control_files引數是定義在parameter file中的基本引數內容。在系統啟動的時候,不支援memory可見性範圍內修改引數,可以在spfile內進行online修改,讓其重啟後生效。
//建立副本
SQL> alter system set control_files='/u01/oradata/WILSON/controlfile/o1_mf_6bcsqm50_.ctl','/u01/flash_recovery_area/WILSON/controlfile/o1_mf_6bcsqmd8_.ctl','/u01/oradata/WILSON/controlfile/o2.ctl' scope=spfile;
System altered
標註紅色的o2.ctl控制檔案是新增加的控制檔案備份。之後嘗試關閉資料庫(正常關閉)。
[oracle@oracle11g ~]$ sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on Thu Jun 30 15:16:07 2011
Copyright (c) 1982, 2009, Oracle. All rights reserved.
SQL> conn / as sysdba
Connected.
SQL> shutdown normal;
Database closed.
Database dismounted.
ORACLE instance shut down.
正常關閉,保證日誌、資料檔案、控制檔案等全庫一致。下面到OS檔案系統中進行備份複製。
[oracle@oracle11g controlfile]$ pwd
/u01/oradata/WILSON/controlfile
[oracle@oracle11g controlfile]$ ls -l
total 9536
-rw-r----- 1 oracle oinstall 9748480 Jun 30 15:16 o1_mf_6bcsqm50_.ctl
//複製一個備份控制檔案;
[oracle@oracle11g controlfile]$ cp o1_mf_6bcsqm50_.ctl o2.ctl
[oracle@oracle11g controlfile]$ ls -l
total 19072
-rw-r----- 1 oracle oinstall 9748480 Jun 30 15:16 o1_mf_6bcsqm50_.ctl
-rw-r----- 1 oracle oinstall 9748480 Jun 30 15:17 o2.ctl
此時,我們重新啟動資料庫。
//重新啟動
[oracle@oracle11g controlfile]$ sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on Thu Jun 30 15:17:36 2011
Copyright (c) 1982, 2009, Oracle. All rights reserved.
SQL> conn / as sysdba
Connected to an idle instance.
SQL> startup
ORACLE instance started.
Total System Global Area 414298112 bytes
Fixed Size 1336904 bytes
Variable Size 318769592 bytes
Database Buffers 88080384 bytes
Redo Buffers 6111232 bytes
Database mounted.
Database opened.
資料庫正常啟動,此時引數control_files也恢復正常。
SQL> show parameter control_files;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
control_files string /u01/oradata/WILSON/controlfile/o1_mf_6bcsqm50_.ctl, /u01/flash_recovery_area/WILSON/controlfile/o1_mf_6bcsqmd8_.ctl, /u01/oradata/WILSON/controlfile/o2.ctl
控制檔案相關檢視也連帶更新。
SQL> select * from v$controlfile;
STATUS NAME IS_RECOVERY_DEST_FILE BLOCK_SIZE FILE_SIZE_BLKS
------- -------------------- --------------------- ---------- --------------
/u01/oradata/WILSON/ NO 16384 594
controlfile/o1_mf_6b
csqm50_.ctl
/u01/flash_recovery_ YES 16384 594
area/WILSON/controlf
ile/o1_mf_6bcsqmd8_.
ctl
/u01/oradata/WILSON/ NO 16384 594
controlfile/o2.ctl
3、資料庫control_file單備份破壞實驗
下面,我們模擬控制檔案中的一個部分被破壞。
//破壞檔案
[oracle@oracle11g controlfile]$ pwd
/u01/oradata/WILSON/controlfile
[oracle@oracle11g controlfile]$ mv o2.ctl o2bak.ctl
[oracle@oracle11g controlfile]$ ls -l
total 19072
-rw-r----- 1 oracle oinstall 9748480 Jun 30 15:25 o1_mf_6bcsqm50_.ctl
-rw-r----- 1 oracle oinstall 9748480 Jun 30 15:25 o2bak.ctl
此時,控制檔案的o2.ctl已經不能夠定位。此時,我們在資料庫層面上進行一些操作。
SQL> alter system switch logfile;
System altered
切換日誌成功,注意此處沒有報錯。這時候,我們嘗試進行關閉資料庫。
[oracle@oracle11g controlfile]$ sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on Thu Jun 30 15:26:42 2011
Copyright (c) 1982, 2009, Oracle. All rights reserved.
SQL> conn / as sysdba
Connected.
SQL> shutdown normal;
ORA-00210: cannot open the specified control file
ORA-00202: control file: '/u01/oradata/WILSON/controlfile/o2.ctl'
ORA-27041: unable to open file
Linux Error: 2: No such file or directory
Additional information: 3
SQL> shutdown immediate
ORA-00210: cannot open the specified control file
ORA-00202: control file: '/u01/oradata/WILSON/controlfile/o2.ctl'
ORA-27041: unable to open file
Linux Error: 2: No such file or directory
Additional information: 3
SQL> shutdown abort
ORACLE instance shut down.
這時候,進行normal和immediate方式關閉資料庫都是以失敗資訊報錯。只能使用abort模式進行強制關閉。在alert_log.log中,也有相應的提示。
Thu Jun 30 15:26:54 2011
Errors in file /u01/diag/rdbms/wilson/wilson/trace/wilson_m000_6282.trc:
ORA-00210: cannot open the specified control file
ORA-00202: control file: '/u01/oradata/WILSON/controlfile/o2.ctl'
ORA-27041: unable to open file
Linux Error: 2: No such file or directory
Additional information: 3
Thu Jun 30 15:27:24 2011
Shutting down instance (abort)
當再次進行啟動資料庫時,啟動失敗。
oracle@oracle11g controlfile]$ sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on Thu Jun 30 15:27:44 2011
Copyright (c) 1982, 2009, Oracle. All rights reserved.
SQL> conn / as sysdba
Connected to an idle instance.
SQL> startup nomount
ORACLE instance started.
Total System Global Area 414298112 bytes
Fixed Size 1336904 bytes
Variable Size 318769592 bytes
Database Buffers 88080384 bytes
Redo Buffers 6111232 bytes
SQL> alter database mount
2 ;
alter database mount
*
ERROR at line 1:
ORA-00205: error in identifying control file, check alert log for more info
在啟動例項(nomount階段),Oracle啟動成功。在進行mount檔案時,系統報錯。在進行mount過程中,Oracle會根據引數檔案中定義的control_files引數,定位到引數檔案,嘗試開啟引數檔案以獲取到資料庫檔案等更高層面的資訊引數。此時,我們一個控制檔案不存在,必然影響到mount階段的實現。此時,alert_log中資訊。
Thu Jun 30 15:27:55 2011
MMNL started with pid=16, OS id=6371
starting up 2 shared server(s) ...
ORACLE_BASE from environment = /u01
Thu Jun 30 15:28:01 2011
alter database mount
ORA-00210: cannot open the specified control file
ORA-00202: control file: '/u01/oradata/WILSON/controlfile/o2.ctl'
ORA-27037: unable to obtain file status
Linux Error: 2: No such file or directory
Additional information: 3
Thu Jun 30 15:28:01 2011
Checker run found 1 new persistent data failures
ORA-205 signalled during: alter database mount
...
[oracle@oracle11g trace]$
當控制檔案不完全時,資料庫是無法經過mount階段啟動的。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/17203031/viewspace-701209/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 控制檔案備份增加、破壞恢復系列實驗(下)
- 備份與恢復系列 十一 控制檔案的備份與恢復
- 備份&恢復之十三:損壞全部控制檔案
- 備份恢復實驗(1)丟失部分控制檔案
- 備份與恢復--重建控制檔案後資料檔案損壞的恢復
- 備份&恢復之十二:損壞單個控制檔案
- 備份與恢復--利用備份的控制檔案恢復
- 【備份恢復】利用 備份控制檔案到指定目錄下的控制檔案 恢復控制檔案
- oracle實驗記錄 (恢復,備份-含壞塊資料檔案)Oracle
- 【實驗】從RMAN備份中恢復controlfile控制檔案
- 【備份恢復】 控制檔案多路徑
- 利用備份的控制檔案恢復
- 備份與恢復--重建控制檔案
- 控制檔案的備份和恢復
- 控制檔案被破壞的資料庫恢復方法資料庫
- RMAN備份恢復之控制檔案的恢復(三)
- RMAN備份恢復之控制檔案的恢復(二)
- RMAN備份恢復之控制檔案的恢復(一)
- 使用舊的控制檔案備份來恢復控制檔案
- 【備份恢復】所有控制檔案丟失後 利用trace中的控制檔案備份執行恢復
- 【實驗】從RMAN備份中恢復spfile檔案
- rman備份丟失控制檔案恢復
- 【備份與恢復】控制檔案的恢復(不完全恢復)
- Oracle備份與恢復【丟失控制檔案的恢復】Oracle
- 備份與恢復系列 十 引數檔案spfile的備份與恢復
- 控制檔案損壞重建實驗(上)
- trace檔案備份控制檔案並執行恢復
- oracle實驗記錄 (恢復-恢復未備份的資料檔案)Oracle
- oralce備份與恢復1 控制檔案(轉)
- rman備份-(1) 利用備份級恢復資料檔案和控制檔案
- 【備份恢復】 丟失一個控制檔案 之恢復操作
- 【rman 備份與恢復】恢復丟失所有的控制檔案
- 【備份與恢復】恢復受損的複用控制檔案
- 【管理篇備份恢復】rman恢復測試(二) 控制檔案恢復(三)
- 【管理篇備份恢復】rman恢復測試(二) 控制檔案恢復(二)
- 【管理篇備份恢復】rman恢復測試(二) 控制檔案恢復(一)
- 磁碟損壞造成RMAN備份檔案有壞塊的恢復案例
- 【恢復】使用控制檔案的trace備份恢復因異常斷電導致所有控制檔案損壞的資料庫故障資料庫