首先是客戶在rac其中一個節點add disk時,發現在另外節點未添加成功,後面又反覆折騰add,甚至dd 盤頭進行了add。
最為致命的一個動作是強制add disk,其實在該步驟之前這幾個disk已經add過一次,且完成了reblance,但是drop disk
卻並未成功,最後客戶嘗試強制添加,如下:
SQL> ALTER DISKGROUP xxxx ADD DISK 'ORCL:VOL1_xxx' SIZE 2097152M FORCE ,
'ORCL:VOL2_xxx' SIZE 2097152M FORCE ,
'ORCL:VOL3_xxx' SIZE 2097152M FORCE
........
ORA-15186: ASMLIB error function = [asm_open], error = [1], mesg = [Operation not permitted]
Tue Feb 18 06:09:32 2014
SQL> alter diskgroup xxx MOUNT
NOTE: cache registered group xxx number=1 incarn=0x6c42d680
.......
Tue Feb 18 06:09:32 2014
NOTE: Hbeat: instance not first (grp 1)
Tue Feb 18 06:09:32 2014
NOTE: cache dismounting group 1/0x6C42D680 (xxx)
NOTE: dbwr not being msg'd to dismount
Tue Feb 18 06:09:32 2014
NOTE: PST enabling heartbeating (grp 1)
Tue Feb 18 06:09:32 2014
ERROR: diskgroup xxx was not mounted
Tue Feb 18 06:10:22 2014
ORA-15186: ASMLIB error function = [asm_open], error = [1], mesg = [Operation not permitted]
Tue Feb 18 06:10:22 2014
.........
最後導致磁碟組都無法mount,當然資料庫肯定也無法成功open,會報如下類似的錯誤;
Tue Feb 18 05:53:57 2014
Errors in file /opt/oracle/admin/xxx/bdump/xxx_lmon_17095.trc:
ORA-00202: control file: '+xxx/xxx/controlfile/current.256.743166671'
ORA-15078: ASM diskgroup was forcibly dismounted
Tue Feb 18 05:53:58 2014
Errors in file /opt/oracle/admin/xxx/bdump/hxxx_lmon_17095.trc:
ORA-00204: error in reading (block 35, # blocks 1) of control file
ORA-00202: control file: '+xxx/xxx/controlfile/current.256.743166671'
ORA-15078: ASM diskgroup was forcibly dismounted
Tue Feb 18 05:53:58 2014
LMON: terminating instance due to error 204
Tue Feb 18 05:53:58 2014
首先利用kfed 讀取相關的disk,發現asm的相關中繼資料基本上都不存在了,因為前面的add disk force其實相當於是吧
diskgroup 重建了一次,其中最為關鍵的file directory中繼資料沒了。這是非常麻煩的一件事。
在恢複的過程中,我們甚至嘗試了Oracle DUL,發現file directory完全丟失的情況下,dul根本無法正常工作。當然,
我們利用老熊的ODU成功的恢複了該庫。ODU目前有這樣的一個強悍功能,可以進行scan asm disk,然後將所有資料檔案
的AU分配資訊掃描出並記錄到一個檔案asm_fileext_meta.odu 中,然後可以自動的將AU進行拼接,也就形成了一個完整
的資料檔案,大致的文法如下:
extract asm file 1 to /xxxxx/system01.dbf
extract asm file 2 to /xxxxx/undotbs1_01.dbf
extract asm file 3 to /xxxxx/sysaux01.dbf
備忘:
1. 第一次使用抽取檔案的方式進行了恢複,由於資料字典損壞嚴重,導致資料庫open後問題不斷(其中還修複了
大量的block,因為部分block是空的,空塊是因為部分disk完成了reblance,部分沒有,導致抽取的資料字典不完整),
因此我們又重新抽取了一次資料,並重建庫匯入,前後花費了大量的人力,當然這也是我第一次利用ODU
恢複ERP庫,並完美的解決問題。 這裡必須贊一個!