損壞控制檔案的恢復方法

zyb200發表於2007-05-21
一、 損壞單個控制檔案[@more@]

損壞單個控制檔案是比較容易恢復的,因為一般的資料庫系統,控制檔案都不是一個,而且所有的控制檔案都互為鏡相,只要複製一個好的控制檔案替換壞的控制檔案就可以了。 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到另外一個盤的時候,我們就必須重新建立控制檔案,用於識別這個新的資料檔案,這裡也可以用這種方法用於恢復。

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

相關文章