ORACLE非歸檔下的恢復

sunwgneuqsoft發表於2007-12-01
非歸檔模式

1, 引數檔案丟失

1) 資料庫是用spfile啟動的情況下,init.ora丟失,不會對資料庫的啟動產生任何影響,不過為了安全考慮,應該重新建立init.ora,作為spfile的備份。

create pfile = 'D:oracleadminmyoracle

[@more@]

2) 資料庫用spfile啟動的情況下,spfile檔案丟失

a, 存在init.ora引數檔案的備份,可以用pfile直接啟動,也可以用pfile建立spfile,然後用spfile啟動

直接用pfile啟動

startup pfile=’ D:oracleadminmyoraclepfileinit.ora’

重新建立spfile,用spfile啟動

create spfile from pfile=’ D:oracleadminmyoraclepfileinit.ora’

startup

b, 沒有init備份的情況下,可以從其他資料庫複製一個init.ora的備份,修改相關引數即可。修改的恢復方法就和存在init.ora引數檔案的備份的spfile丟失的恢復方法一致了。

3) 資料庫是用pfile啟動的情況下,init.ora丟失

SQL> startup pfile='d:oracleadminmyoraclepfileinit.ora'

LRM-00109: 無法開啟引數檔案 'd:oracleadminmyoraclepfileinit.ora'

ORA-01078: 處理系統引數失敗

a, 如果存在init.ora的備份,拷備到相關目錄下即可(例項的啟動引數目錄)

b, 如果不存在init.ora的備份可以從其他資料庫複製一個init.ora的備份,修改相關引數即可。

2, 引數檔案設定出錯

如果資料庫的spfile(用spfile啟動)或pfile(用pfile啟動),裡面的引數設定出錯。主要是pfile的引數,因為如果使用spfile的話,設定引數的時候都會有存在一個有效性的檢查,一般不會出現引數設定出錯的問題。資料庫會給出相關的錯誤提示,告訴你是哪個引數設定的有問題,只要修改相關引數後重新啟動資料庫即可。

3, 控制檔案損壞或丟失

a, 單一控制檔案損壞或丟失。一般來說控制檔案都會存在映象的,如果單一控制檔案損壞資料庫會報以下錯誤:

SQL> startup nomount force

ORACLE instance started.

Total System Global Area 135338868 bytes

Fixed Size 453492 bytes

Variable Size 109051904 bytes

Database Buffers 25165824 bytes

Redo Buffers 667648 bytes

SQL> alter database mount ;

alter database mount

*

ERROR at line 1:

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

這個時候我們檢查alert log檔案,會發現以下錯誤

ORA-00202: controlfile: 'D:oracleoradatamyoracleCONTROL01.CTL'

ORA-27047: unable to read the header block of file

OSD-04006: ReadFile() 失敗, 無法讀取檔案

O/S-Error: (OS 38) 到達檔案結尾。

由此可以知道control01檔案已經損壞。由於一般來說控制檔案存在映象,只要我們將其他完好的控制檔案拷備一份覆蓋損壞或丟失的控制檔案即可。也可以在初始化引數control_files中的相應的損壞的控制檔案刪除即可。

b,全部控制檔案損壞或者丟失

1,存在控制檔案的備份,將備份的控制檔案按照初始化引數的配置來設定。然後進行控制檔案的恢復。

Startup nomount;

Revocer database using backup controlfile;

然後選擇相應的日誌檔案進行恢復

最後必須要以resetlogs的方式開啟資料庫

alter database open resetlogs;

2,不存在控制檔案的備份。這種情況下只能重建控制檔案。

STARTUP NOMOUNT

CREATE CONTROLFILE REUSE DATABASE "MYORACLE" NORESETLOGS NOARCHIVELOG

-- SET STANDBY TO MAXIMIZE PERFORMANCE

MAXLOGFILES 50

MAXLOGMEMBERS 5

MAXDATAFILES 100

MAXINSTANCES 1

MAXLOGHISTORY 226

LOGFILE

GROUP 1 'D:ORACLEORADATAMYORACLEREDO01.LOG' SIZE 100M,

GROUP 2 'D:ORACLEORADATAMYORACLEREDO02.LOG' SIZE 100M,

GROUP 3 'D:ORACLEORADATAMYORACLEREDO03.LOG' SIZE 100M

-- STANDBY LOGFILE

DATAFILE

'D:ORACLEORADATAMYORACLESYSTEM01.DBF',

'D:ORACLEORADATAMYORACLEUNDOTBS01.DBF',

'D:ORACLEORADATAMYORACLECWMLITE01.DBF',

'D:ORACLEORADATAMYORACLEDRSYS01.DBF',

'D:ORACLEORADATAMYORACLEEXAMPLE01.DBF',

'D:ORACLEORADATAMYORACLEINDX01.DBF',

'D:ORACLEORADATAMYORACLEODM01.DBF',

'D:ORACLEORADATAMYORACLETOOLS01.DBF',

'D:ORACLEORADATAMYORACLEUSERS01.DBF',

'D:ORACLEORADATAMYORACLEXDB01.DBF',

'D:ORACLEORADATAMYORACLESUNWG.DBF',

'D:ORACLEORADATAMYORACLEXT_YJYY.DBF',

'D:ORACLEORADATAMYORACLEXT_DD.DBF'

CHARACTER SET ZHS16GBK

;

ALTER DATABASE OPEN;

4, 日誌檔案

a, 非當前日誌

alter database clear logfile group 1;

b, 當前日誌

recover database until cancel;

alter database open resetlogs;

c, 回滾段有未提交的事務

_allow_resetlogs_corruption = true

5, 資料檔案

a, 如果存在備份的話,可以將所有的備份檔案複製回來,開啟即可

b, 如果沒有備份檔案,只能將該資料檔案刪掉

alter database datafile ‘e:ttt.dbf’ offline drop;

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

相關文章