恢復之單個控制檔案損壞

zhengbao_jun發表於2009-02-11

一般Oracle在建立時,至少會設定兩個控制檔案。因此,如果僅僅損壞一個控制檔案是很容易恢復的。


控制檔案損壞,Oracle會自動關閉,這時用多個控制檔案中沒有受損的控制檔案來進行恢復就可以了。這裡控制檔案的損壞仍然是通過ULTRAEDIT的修改造成的。

SQL> ALTER SYSTEM CHECKPOINT;
ALTER SYSTEM CHECKPOINT
*
ERROR 位於第 1 行:
ORA-03113: 通訊通道的檔案結束


SQL> CONN YANGTK/YANGTK@TEST
ERROR:
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist


SQL> CONN /@TEST AS SYSDBA
已連線到空閒例程。
SQL> HOST COPY F:ORACLEORADATATESTCONTROL01.CTL F:ORACLEORADATATESTCONTROL03.CTL

SQL> STARTUP
ORACLE 例程已經啟動。

Total System Global Area 76619308 bytes
Fixed Size 454188 bytes
Variable Size 50331648 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
資料庫裝載完畢。
資料庫已經開啟。

如果受損控制檔案原來的存放位置已經不可用,則需要修改初始化引數檔案來指向新的位置。

SQL> ALTER SYSTEM CHECKPOINT;
ALTER SYSTEM CHECKPOINT
*
ERROR 位於第 1 行:
ORA-03113: 通訊通道的檔案結束


SQL> CONN /@TEST AS SYSDBA
已連線到空閒例程。
SQL> CREATE PFILE='F:ORACLEADMINTESTPFILEINITTEST.ORA' FROM SPFILE;

檔案已建立。

修改初始化引數中CONTROL_FILE的值為*.control_files='F:oracleoradatatestCONTROL01.CTL','F:oracleoradatatestCONTROL02.CTL','F:oracleoradatatestCONTROL04.CTL'

然後將未受損控制檔案拷貝到新的位置:

SQL> HOST EDIT F:ORACLEADMINTESTPFILEINITTEST.ORA

SQL> HOST EDIT F:ORACLEADMINTESTPFILEINITTEST.ORA

SQL> HOST COPY F:ORACLEORADATATESTCONTROL01.CTL F:ORACLEORADATATESTCONTROL04.CTL

SQL> STARTUP PFILE=F:ORACLEADMINTESTPFILEINITTEST.ORA
ORACLE 例程已經啟動。

Total System Global Area 76619308 bytes
Fixed Size 454188 bytes
Variable Size 50331648 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
資料庫裝載完畢。
資料庫已經開啟。
SQL> CREATE SPFILE FROM PFILE='F:ORACLEADMINTESTPFILEINITTEST.ORA';

檔案已建立。

SQL> SHUTDOWN IMMEDIATE
資料庫已經關閉。
已經解除安裝資料庫。
ORACLE 例程已經關閉。
SQL> STARTUP
ORACLE 例程已經啟動。

Total System Global Area 76619308 bytes
Fixed Size 454188 bytes
Variable Size 50331648 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
資料庫裝載完畢。
資料庫已經開啟。

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

相關文章