天天看點

oracle資料庫offline,system01.dbf檔案被offline,導緻資料庫報ORA-01245 ORA-01110故障恢複...

對于這樣的情況,可以使用自研的Oracle Recovery Tools工具快速修改scn,然後online資料檔案即可

有朋友找到我,說資料庫做recover報ORA-01245和ORA-01110錯誤,無法繼續恢複,請求支援

SQL> recover database using backup controlfile until cancel;

…………

第 1 行出現錯誤:

ORA-01245: RESETLOGS 完成時脫機檔案 1 将丢失

ORA-01110: 資料檔案 1: 'E:\APP\ADMINISTRATOR\ORADATA\HXV10\SYSTEM01.DBF'

通過Oracle Database Recovery Check檢查資料庫情況,發現datafile 1處于offline狀态

oracle資料庫offline,system01.dbf檔案被offline,導緻資料庫報ORA-01245 ORA-01110故障恢複...

Wed Aug 26 23:11:00 2015

alter database datafile 1 offline drop

Completed: alter database datafile 1 offline drop

從這裡基本上可以知道為什麼出現ORA-01245錯誤了,由于system表空間中檔案被offline導緻.

redo資訊

oracle資料庫offline,system01.dbf檔案被offline,導緻資料庫報ORA-01245 ORA-01110故障恢複...

Mon Aug 24 22:38:35 2015

alter database clear unarchived logfile group 2

Clearing online log 2 of thread 1 sequence number 5705

Completed: alter database clear unarchived logfile group 2

Wed Aug 26 23:13:23 2015

alter database clear logfile group 3

Clearing online log 3 of thread 1 sequence number 5706

Completed: alter database clear logfile group 3

除目前redo之外,其他redo被clear

嘗試恢複

SQL> alter database datafile 1 online;

資料庫已更改。

SQL> recover database;

ORA-00283: 恢複會話因錯誤而取消

ORA-01610: 使用 BACKUP CONTROLFILE 選項的恢複必須已完成

SQL> recover database using backup controlfile;

ORA-00279: 更改 63960710 (在 08/23/2015 17:01:25 生成) 對于線程 1 是必需的

ORA-00289: 建議:

E:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\HXV10\ARCHIVELOG\2015_08_27\O1_MF_1_570

5_%U_.ARC

ORA-00280: 更改 63960710 (用于線程 1) 在序列 #5705 中

指定日志: {=suggested | filename | AUTO | CANCEL}

E:\APP\ADMINISTRATOR\ORADATA\HXV10\REDO03.LOG

ORA-00310: 歸檔日志包含序列 5706; 要求序列 5705

ORA-00334: 歸檔日志: 'E:\APP\ADMINISTRATOR\ORADATA\HXV10\REDO03.LOG'

SQL> recover database using backup controlfile;

ORA-00279: 更改 63960710 (在 08/23/2015 17:01:25 生成) 對于線程 1 是必需的

ORA-00289: 建議:

E:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\HXV10\ARCHIVELOG\2015_08_27\O1_MF_1_570

5_%U_.ARC

ORA-00280: 更改 63960710 (用于線程 1) 在序列 #5705 中

指定日志: {=suggested | filename | AUTO | CANCEL}

E:\APP\ADMINISTRATOR\ORADATA\HXV10\REDO02.LOG

ORA-00339: 歸檔日志未包含任何重做

ORA-00334: 歸檔日志: 'E:\APP\ADMINISTRATOR\ORADATA\HXV10\REDO02.LOG'

SQL> recover database using backup controlfile;

ORA-00279: 更改 63960710 (在 08/23/2015 17:01:25 生成) 對于線程 1 是必需的

ORA-00289: 建議:

E:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\HXV10\ARCHIVELOG\2015_08_27\O1_MF_1_570

5_%U_.ARC

ORA-00280: 更改 63960710 (用于線程 1) 在序列 #5705 中

指定日志: {=suggested | filename | AUTO | CANCEL}

E:\APP\ADMINISTRATOR\ORADATA\HXV10\REDO01.LOG

ORA-00310: 歸檔日志包含序列 5707; 要求序列 5705

ORA-00334: 歸檔日志: 'E:\APP\ADMINISTRATOR\ORADATA\HXV10\REDO01.LOG'

資料庫做恢複需要seq 5705的redo,但是redo已經被clear,導緻現在資料庫正常手段無法恢複,隻用使用隐含參數屏蔽資料庫前滾(一緻性檢查)

再次嘗試打開資料庫

ORACLE 例程已經啟動。

Total System Global Area 778387456 bytes

Fixed Size 1374808 bytes

Variable Size 486540712 bytes

Database Buffers 285212672 bytes

Redo Buffers 5259264 bytes

資料庫裝載完畢。

SQL> recover database using backup controlfile;

ORA-00279: 更改 63960710 (在 08/23/2015 17:01:25 生成) 對于線程 1 是必需的

ORA-00289: 建議:

E:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\HXV10\ARCHIVELOG\2015_08_27\O1_MF_1_570

5_%U_.ARC

ORA-00280: 更改 63960710 (用于線程 1) 在序列 #5705 中

指定日志: {=suggested | filename | AUTO | CANCEL}

cancel

媒體恢複已取消。

SQL> alter database open resetlogs;

資料庫已更改。

在資料庫恢複中,請不要對system表空間資料檔案進行offline操作,如果對此類檔案進行offline操作,講在資料庫恢複過程中出現ORA-01245和ORA-01110錯誤,而且檔案還會出現SYSOFF狀态