top
Loading...
幾種簡單的損壞控制文件的恢復方法

一、 損壞單個控制文件

損壞單個控制文件是比較容易恢復的,因為一般的數據庫系統,控制文件都不是一個,而且所有的控制文件都互為鏡相,只要拷貝一個好的控制文件替換壞的控制文件就可以了。

1、控制文件損壞,最典型的就是啟動數據庫出錯,不能mount數據庫

SQL>startup    ORA-00205: error in identifying controlfile, check alert log for more info

查看報警日志文件,有如下信息

alter database mount    Mon May 26 11:59:52 2003    ORA-00202: controlfile: 'D:Oracleoradatachencontrol01.ctl'    ORA-27041: unable to open file    OSD-04002: unable to open file    O/S-Error: (OS 2)

系統找不到指定的文件。

2、停止數據庫

SQL>shutdown immediate

3、拷貝一個好的控制文件替換壞的控制文件或修改init.ora中的控制文件參數,取消這個壞的控制文件。

4、重新啟動數據

SQL>startup

說明:

1、損失單個控制文件是比較簡單的,因為數據庫中所有的控制文件都是鏡相的,只需要簡單的拷貝一個好的就可以了

2、建議鏡相控制文件在不同的磁盤上

3、建議多做控制文件的備份,長期保留一份由alter database backup control file to trace產生的控制文件的文本備份

二、 損壞全部控制文件

損壞多個控制文件,或者人為的刪除了所有的控制文件,通過控制文件的復制已經不能解決問題,這個時候需要重新建立控制文件。同時注意,alter database backup control file to trace可以產生一個控制文件的文本備份。

以下是詳細重新創建控制文件的步驟

1、關閉數據庫

SQL>shutdown immediate;

2、刪除所有控制文件,模擬控制文件的丟失

3、啟動數據庫,出現錯誤,并不能啟動到mount下

SQL>startup    ORA-00205: error in identifying controlfile, check alert log for more info

查看報警日志文件,有如下信息

alter database mount    Mon May 26 11:53:15 2003    ORA-00202: controlfile: 'D:Oracleoradatachencontrol01.ctl'    ORA-27041: unable to open file    OSD-04002: unable to open file    O/S-Error: (OS 2)

系統找不到指定的文件。

4、關閉數據庫 SQL>shutdown immediate;

5、在internal或sys下運行如下創建控制文件的腳本,注意完整列出聯機日志或數據文件的路徑,或修改由alter database backup control file to trace備份控制文件時產生的腳本,去掉多余的注釋即可。

STARTUP NOMOUNT    CREATE CONTROLFILE REUSE DATABASE "TEST" NORESETLOGS NOARCHIVELOG    MAXLOGFILES 32    MAXLOGMEMBERS 2    MAXDATAFILES 254    MAXINSTANCES 1    MAXLOGHISTORY 226    LOGFILE    GROUP 1 'D:ORACLEORADATATESTREDO01.LOG' SIZE 1M,    GROUP 2 'D:ORACLEORADATATESTREDO02.LOG' SIZE 1M,    GROUP 3 'D:ORACLEORADATATESTREDO03.LOG' SIZE 1M    DATAFILE    'D:ORACLEORADATATESTSYSTEM01.DBF',    'D:ORACLEORADATATESTRBS01.DBF',    'D:ORACLEORADATATESTUSERS01.DBF',    'D:ORACLEORADATATESTTEMP01.DBF',    'D:ORACLEORADATATESTTOOLS01.DBF',    'D:ORACLEORADATATESTINDX01.DBF'    CHARACTER SET ZHS16GBK;    -- Recovery is required if any of the datafiles are restored backups,    -- or if the last shutdown was not normal or immediate.    RECOVER DATABASE    --if the last shutdown was not normal or immediate    --noarchive    -- RECOVER DATABASE UNTIL CANCEL USING BACKUP CONTROLFILE    --archive    -- RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL CANCEL    -- Database can now be opened normally.    ALTER DATABASE OPEN;    --if recover database until cancel    --ALTER DATABASE OPEN RESETLOGS;

6、如果沒有錯誤,數據庫將啟動到open狀態下。

說明:

1、重建控制文件用于恢復全部控制文件的損壞,需要注意其書寫的正確性,保證包含了所有的數據文件與聯機日志

2、經常有這樣一種情況,因為一個磁盤損壞,我們不能再恢復(store)數據文件到這個磁盤,因此在store到另外一個盤的時候,我們就必須重新創建控制文件,用于識別這個新的數據文件,這里也可以用這種方法用于恢復。

作者:http://www.zhujiangroad.com
來源:http://www.zhujiangroad.com
北斗有巢氏 有巢氏北斗