【Control File】Oracle個別控制檔案丟失故障場景模擬及處理方法
控制檔案是資料庫的重要組成部分,我們需要掌握有關控制檔案在不同故障場景下的恢復方法。本文討論當部分控制檔案丟失場景下的恢復方法。
1.查詢系統控制檔案資訊
sys@ora10g> col name for a50
sys@ora10g> select name from v$controlfile;
NAME
--------------------------------------------------
/oracle/ora10gR2/oradata/ora10g/control01.ctl
/oracle/ora10gR2/oradata/ora10g/control02.ctl
/oracle/ora10gR2/oradata/ora10g/control03.ctl
本系統中存在三個控制檔案。他們內容是完全一樣。目的何在?沒錯,就是為了防止個別控制檔案丟失或出現故障時後可以使用其他有效的控制檔案進行恢復。
2.模擬個別控制檔案丟失故障場景
1)人為刪除一個控制檔案
這裡,我們刪除控制檔案control03.ctl。
ora10g@secdb /home/oracle$ rm -f /oracle/ora10gR2/oradata/ora10g/control03.ctl
在刪除的這段時間裡,alert中並沒有記錄任何與之相關的資訊。
2)嘗試使用IMMEDIATE選項關閉資料庫
sys@ora10g> shutdown immediate;
ORA-00210: cannot open the specified control file
ORA-00202: control file: '/oracle/ora10gR2/oradata/ora10g/control03.ctl'
ORA-27041: unable to open file
Linux Error: 2: No such file or directory
Additional information: 3
可見,在正常關閉資料庫的過程中,Oracle需要讀取控制檔案內容,當發現個別控制檔案丟失後會丟擲異常。
3)此時alert中也記錄相關的報錯資訊。
Fri Jul 1 21:21:35 2011
Errors in file /oracle/ora10gR2/admin/ora10g/udump/ora10g_ora_9062.trc:
ORA-00210: cannot open the specified control file
ORA-00202: control file: '/oracle/ora10gR2/oradata/ora10g/control03.ctl'
ORA-27041: unable to open file
Linux Error: 2: No such file or directory
Additional information: 3
Fri Jul 1 21:21:35 2011
Errors in file /oracle/ora10gR2/admin/ora10g/udump/ora10g_ora_9062.trc:
ORA-00210: cannot open the specified control file
ORA-00202: control file: '/oracle/ora10gR2/oradata/ora10g/control03.ctl'
ORA-27041: unable to open file
Linux Error: 2: No such file or directory
Additional information: 3
Fri Jul 1 21:21:35 2011
Errors in file /oracle/ora10gR2/admin/ora10g/udump/ora10g_ora_9062.trc:
ORA-00210: cannot open the specified control file
ORA-00202: control file: '/oracle/ora10gR2/oradata/ora10g/control03.ctl'
ORA-27041: unable to open file
Linux Error: 2: No such file or directory
Additional information: 3
3.恢復個別控制檔案丟失故障場景
方法很簡單,停止資料庫,使用完好的資料庫控制檔案生成丟失或損壞的控制檔案。
1)使用ABORT選項關閉資料庫例項
按照上面的方法,使用IMMEDIATE選項是不能關閉資料庫的。
資料庫後臺程式依然活躍著。
ora10g@secdb /home/oracle$ ps -ef | grep _ora10g | grep -v grep
oracle 31646 1 0 Jun27 ? 00:00:00 ora_pmon_ora10g
oracle 31648 1 0 Jun27 ? 00:00:00 ora_psp0_ora10g
oracle 31650 1 0 Jun27 ? 00:00:00 ora_mman_ora10g
oracle 31652 1 0 Jun27 ? 00:00:03 ora_dbw0_ora10g
oracle 31654 1 0 Jun27 ? 00:00:02 ora_lgwr_ora10g
oracle 31656 1 0 Jun27 ? 00:00:32 ora_ckpt_ora10g
oracle 31658 1 0 Jun27 ? 00:00:14 ora_smon_ora10g
oracle 31660 1 0 Jun27 ? 00:00:00 ora_reco_ora10g
oracle 31662 1 0 Jun27 ? 00:00:02 ora_cjq0_ora10g
oracle 31664 1 0 Jun27 ? 00:00:14 ora_mmon_ora10g
oracle 31666 1 0 Jun27 ? 00:00:05 ora_mmnl_ora10g
oracle 31676 1 0 Jun27 ? 00:00:00 ora_arc0_ora10g
oracle 31678 1 0 Jun27 ? 00:00:00 ora_arc1_ora10g
oracle 31682 1 0 Jun27 ? 00:00:00 ora_qmnc_ora10g
oracle 31688 1 0 Jun27 ? 00:00:00 ora_q000_ora10g
oracle 31690 1 0 Jun27 ? 00:00:01 ora_q001_ora10g
我們只好使用“粗暴”的ABORT方式停止例項。
ora10g@secdb /home/oracle$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on Fri Jul 1 21:51:27 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
sys@ora10g> shutdown abort;
ORACLE instance shut down.
2)使用完好的控制檔案生成丟失的控制檔案control03.ctl
ora10g@secdb /home/oracle$ cp /oracle/ora10gR2/oradata/ora10g/control01.ctl /oracle/ora10gR2/oradata/ora10g/control03.ctl
3)啟動資料庫
ora10g@secdb /home/oracle$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on Fri Jul 1 21:56:10 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to an idle instance.
NotConnected@> startup;
ORACLE instance started.
Total System Global Area 419430400 bytes
Fixed Size 1219784 bytes
Variable Size 318767928 bytes
Database Buffers 92274688 bytes
Redo Buffers 7168000 bytes
Database mounted.
Database opened.
到此,個別控制檔案丟失或損壞的故障處理完畢。
4.小結
對於僅僅丟失或損壞部分控制檔案的場景,恢復相對簡單。
恢復代價是需要重新啟動資料庫。
Good luck.
secooler
11.07.01
-- The End --
1.查詢系統控制檔案資訊
sys@ora10g> col name for a50
sys@ora10g> select name from v$controlfile;
NAME
--------------------------------------------------
/oracle/ora10gR2/oradata/ora10g/control01.ctl
/oracle/ora10gR2/oradata/ora10g/control02.ctl
/oracle/ora10gR2/oradata/ora10g/control03.ctl
本系統中存在三個控制檔案。他們內容是完全一樣。目的何在?沒錯,就是為了防止個別控制檔案丟失或出現故障時後可以使用其他有效的控制檔案進行恢復。
2.模擬個別控制檔案丟失故障場景
1)人為刪除一個控制檔案
這裡,我們刪除控制檔案control03.ctl。
ora10g@secdb /home/oracle$ rm -f /oracle/ora10gR2/oradata/ora10g/control03.ctl
在刪除的這段時間裡,alert中並沒有記錄任何與之相關的資訊。
2)嘗試使用IMMEDIATE選項關閉資料庫
sys@ora10g> shutdown immediate;
ORA-00210: cannot open the specified control file
ORA-00202: control file: '/oracle/ora10gR2/oradata/ora10g/control03.ctl'
ORA-27041: unable to open file
Linux Error: 2: No such file or directory
Additional information: 3
可見,在正常關閉資料庫的過程中,Oracle需要讀取控制檔案內容,當發現個別控制檔案丟失後會丟擲異常。
3)此時alert中也記錄相關的報錯資訊。
Fri Jul 1 21:21:35 2011
Errors in file /oracle/ora10gR2/admin/ora10g/udump/ora10g_ora_9062.trc:
ORA-00210: cannot open the specified control file
ORA-00202: control file: '/oracle/ora10gR2/oradata/ora10g/control03.ctl'
ORA-27041: unable to open file
Linux Error: 2: No such file or directory
Additional information: 3
Fri Jul 1 21:21:35 2011
Errors in file /oracle/ora10gR2/admin/ora10g/udump/ora10g_ora_9062.trc:
ORA-00210: cannot open the specified control file
ORA-00202: control file: '/oracle/ora10gR2/oradata/ora10g/control03.ctl'
ORA-27041: unable to open file
Linux Error: 2: No such file or directory
Additional information: 3
Fri Jul 1 21:21:35 2011
Errors in file /oracle/ora10gR2/admin/ora10g/udump/ora10g_ora_9062.trc:
ORA-00210: cannot open the specified control file
ORA-00202: control file: '/oracle/ora10gR2/oradata/ora10g/control03.ctl'
ORA-27041: unable to open file
Linux Error: 2: No such file or directory
Additional information: 3
3.恢復個別控制檔案丟失故障場景
方法很簡單,停止資料庫,使用完好的資料庫控制檔案生成丟失或損壞的控制檔案。
1)使用ABORT選項關閉資料庫例項
按照上面的方法,使用IMMEDIATE選項是不能關閉資料庫的。
資料庫後臺程式依然活躍著。
ora10g@secdb /home/oracle$ ps -ef | grep _ora10g | grep -v grep
oracle 31646 1 0 Jun27 ? 00:00:00 ora_pmon_ora10g
oracle 31648 1 0 Jun27 ? 00:00:00 ora_psp0_ora10g
oracle 31650 1 0 Jun27 ? 00:00:00 ora_mman_ora10g
oracle 31652 1 0 Jun27 ? 00:00:03 ora_dbw0_ora10g
oracle 31654 1 0 Jun27 ? 00:00:02 ora_lgwr_ora10g
oracle 31656 1 0 Jun27 ? 00:00:32 ora_ckpt_ora10g
oracle 31658 1 0 Jun27 ? 00:00:14 ora_smon_ora10g
oracle 31660 1 0 Jun27 ? 00:00:00 ora_reco_ora10g
oracle 31662 1 0 Jun27 ? 00:00:02 ora_cjq0_ora10g
oracle 31664 1 0 Jun27 ? 00:00:14 ora_mmon_ora10g
oracle 31666 1 0 Jun27 ? 00:00:05 ora_mmnl_ora10g
oracle 31676 1 0 Jun27 ? 00:00:00 ora_arc0_ora10g
oracle 31678 1 0 Jun27 ? 00:00:00 ora_arc1_ora10g
oracle 31682 1 0 Jun27 ? 00:00:00 ora_qmnc_ora10g
oracle 31688 1 0 Jun27 ? 00:00:00 ora_q000_ora10g
oracle 31690 1 0 Jun27 ? 00:00:01 ora_q001_ora10g
我們只好使用“粗暴”的ABORT方式停止例項。
ora10g@secdb /home/oracle$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on Fri Jul 1 21:51:27 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
sys@ora10g> shutdown abort;
ORACLE instance shut down.
2)使用完好的控制檔案生成丟失的控制檔案control03.ctl
ora10g@secdb /home/oracle$ cp /oracle/ora10gR2/oradata/ora10g/control01.ctl /oracle/ora10gR2/oradata/ora10g/control03.ctl
3)啟動資料庫
ora10g@secdb /home/oracle$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on Fri Jul 1 21:56:10 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to an idle instance.
NotConnected@> startup;
ORACLE instance started.
Total System Global Area 419430400 bytes
Fixed Size 1219784 bytes
Variable Size 318767928 bytes
Database Buffers 92274688 bytes
Redo Buffers 7168000 bytes
Database mounted.
Database opened.
到此,個別控制檔案丟失或損壞的故障處理完畢。
4.小結
對於僅僅丟失或損壞部分控制檔案的場景,恢復相對簡單。
恢復代價是需要重新啟動資料庫。
Good luck.
secooler
11.07.01
-- The End --
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/519536/viewspace-701185/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle 案例-控制檔案丟失故障處理過程Oracle
- 控制檔案丟失處理方法
- 模擬控制檔案丟失進行恢復。
- 模擬資料檔案丟失
- Oracle DataGuard歸檔日誌丟失處理方法Oracle
- 【原創】模擬控制檔案丟失的資料庫恢復資料庫
- 控制檔案-control file
- control file(控制檔案)
- Oracle資料庫聯機日誌檔案丟失處理方法(1)Oracle資料庫
- Oracle資料庫聯機日誌檔案丟失處理方法(3)Oracle資料庫
- Oracle資料庫聯機日誌檔案丟失處理方法(2)Oracle資料庫
- Oracle資料庫聯機日誌檔案丟失處理方法(4)Oracle資料庫
- Oracle資料庫聯機日誌檔案丟失處理方法(5)Oracle資料庫
- Oracle聯機日誌檔案丟失或損壞的處理方法Oracle
- redo log檔案丟失處理措施
- Oracle Control File(控制檔案)的內容Oracle
- Oracle 快照控制檔案(snapshot control file)Oracle
- Oracle快照控制檔案(snapshot control file)Oracle
- Oracle OS認證、口令檔案、密碼丟失處理Oracle密碼
- Oracle資料庫聯機日誌檔案丟失處理方法(總結)!Oracle資料庫
- ORACLE聯機日誌檔案丟失或損壞的處理方法(轉)Oracle
- Oracle聯機日誌檔案丟失或損壞的處理方法 (轉)Oracle
- Oracle資料庫聯機日誌檔案丟失處理方法(總結)(轉)Oracle資料庫
- Oracle_dg歸檔丟失問題處理Oracle
- 重建控制檔案 recreate control file
- 控制檔案丟失恢復
- 【控制檔案丟失恢復】
- oracle中undo表空間丟失處理方法Oracle
- Oracle impdp遷移資料後主鍵丟失故障處理Oracle
- [原創] Oracle資料庫聯機日誌檔案丟失處理方法(總結)!Oracle資料庫
- Redo丟失的4種情況及處理方法
- 控制檔案損壞,丟失其中一個
- ORACLE透明加密場景模擬Oracle加密
- 控制檔案丟失恢復(二)
- 恢復丟失的控制檔案
- 控制檔案全部丟失恢復
- Oracle 11g重建控制檔案——控制檔案全部丟失,從零開始Oracle
- oracle檔案管理之 control fileOracle