記一次Oracle RAC for aix 儲存雙控鎖盤導致ASM控制檔案損壞恢復

清風艾艾發表於2019-04-30

   故障場景:AIX IBM儲存更換儲存控制器電源模組導致儲存雙控同時掉電,儲存雙控恢復供電後發生鎖盤,IBM解盤後

RAC資料庫無法正常啟動,啟動報錯:ORA-00600: internal error code, arguments: [2131], [33], [32], [], [], [], [], [], [], [], [], []

    恢復方案確定:由於損壞的資料庫資料量巨大,有30T之多,並且要求儘快開啟資料庫,可以接受丟失部分資料,

資料庫有備份。商議之下,使用備份控制檔案恢復資料庫,進行資料庫的不一致性恢復。

    恢復過程:

1、從磁帶庫拉取控制檔案備份集並恢復到Oracle RAC資料庫ASM儲存中

--此時嘗試啟動資料庫會遇到報錯資訊:

ORA-00600: internal error code, arguments: [3020], [718], [2828551], [3014338823], [], [], [], [], [], [], [], []

ORA-10567: Redo is inconsistent with data block (file# 718, block# 2828551, file offset is unknown bytes)

2、生成Oracle的pfile並加入如下三個引數

_allow_resetlogs_corruption=true #跳過redo崩潰,允許resetlogs開庫

undo_management=manual  #將undo管理修改為手工管理

event="10513 trace name context forever,level 2" #開10513事件跳過一致性驗證

*.cluster_database=false

--此時,嘗試啟動資料庫會遇到報錯資訊:

ORA-00600: internal error code, arguments: [2662], [3735], [1979553782], [3735], [1979584838], [20971664], [], [], [], [], [], []

3、Oracle資料庫使用備份控制檔案恢復資料庫後,需要推進控制檔案的SCN

資料庫當前的SCN= 3735.1979584838=(3735*4294967296)+1979584838=16043682435398

giga=16043682435398/1024/1024/1024=14941.843=14941

需要推進的新SCN=14942*1024*1024*1024=16043850334208

Oracle資料庫10g控制檔案推進可以在pfile中加入引數:_minimum_giga_scn;

ORACLE 11.2.0.4 SCN推進方法oradebug

本次資料庫控制檔案SCN推進步驟步驟

SQL> oradebug setmypid

Statement processed.

SQL> oradebug dumpvar sga kcsgscn_

kcslf kcsgscn_ [700000000019B70, 700000000019BA0) = 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 07000000 00019850 

SQL> oradebug poke 0x700000000019B70 8 16043850334208

BEFORE: [700000000019B70, 700000000019B78) = 00000000 00000000

AFTER:  [700000000019B70, 700000000019B78) = 00000E97 80000000

SQL> oradebug dumpvar sga kcsgscn_

kcslf kcsgscn_ [700000000019B70, 700000000019BA0) = 00000E97 80000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 07000000 00019850

SQL>

--此時嘗試啟動資料庫會遇到報錯資訊:

ORA-00600: internal error code, arguments: [4193], [], [], [], [], [], [], [], [], [], [], []

接下來ORA600[4193]的處理就是ORACLE rac的undo表空間的重建了,需要配合引數:undo_management 和_CORRUPTED_ROLLBACK_SEGMENTS。

 4、處理完ORA600[4193]後,資料庫能夠啟動並開啟到open狀態,此時最好進行全庫備份,如果條件允許,

就重建資料庫以邏輯的方式匯出故障資料庫導新環境。否則,後續的使用中會時不時遇到如下報錯資訊:

ORA600[6122]和ORA600[KDSGRP1],實質檔案是索引邏輯壞塊引起的,以drop和create重建相關的索引即可。


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

相關文章