【Oracle ASMデータリカバリ】recovering COD cache read a corrupted block

プロのOracle Databaseの復旧サービスを提供
携帯番号: +86 13764045638 メール:[email protected]

 

ユーザーがLUNをASM DISKGROUPに追加するときに、あるASM Disk header KFBTYP_DISKHEADが削除されたことに気づき、そのDiskgroupがmountできなくなった。そしてDBAはkfed mergeなどの方法でKFBTYP_DISKHEAD blockをリカバリしたが、まだdiskgroup をmount出来ない。ALERT.logに以下のようなログが現れた:

 

 

NOTE: F1X0 found on disk 0 fcn 0.0

NOTE: cache opening disk 1 of grp 1: VOL2 label:VOL2

NOTE: cache opening disk 2 of grp 1: VOL3 label:VOL3

NOTE: cache opening disk 3 of grp 1: VOL4 label:VOL4

NOTE: cache opening disk 4 of grp 1: VOL5 label:VOL5

NOTE: cache opening disk 5 of grp 1: VOL6 label:VOL6

NOTE: cache opening disk 6 of grp 1: VOL7 label:VOL7

NOTE: cache opening disk 7 of grp 1: VOL8 label:VOL8

NOTE: cache opening disk 8 of grp 1: VOL9 label:VOL9

NOTE: cache opening disk 9 of grp 1: VOL10 label:VOL10

NOTE: cache opening disk 10 of grp 1: VOL11 label:VOL11

NOTE: cache mounting (first) group 1/0x3A2C35D6 (DG)

* allocate domain 1, invalid = TRUE

kjbdomatt send to node 0

kjbdomatt send to node 2

Mon Jan 27 02:18:51 CST 2014

NOTE: attached to recovery domain 1

Mon Jan 27 02:18:51 CST 2014

NOTE: starting recovery of thread=1 ckpt=1712.152 group=1

NOTE: advancing ckpt for thread=1 ckpt=1712.153

NOTE: cache recovered group 1 to fcn 0.491275704

Mon Jan 27 02:18:51 CST 2014

NOTE: LGWR attempting to mount thread 1 for disk group 1

NOTE: LGWR mounted thread 1 for disk group 1

NOTE: opening chunk 1 at fcn 0.491275704 ABA

NOTE: seq=1713 blk=154

Mon Jan 27 02:18:51 CST 2014

NOTE: cache mounting group 1/0x3A2C35D6 (DG) succeeded

SUCCESS: diskgroup DG was mounted

Mon Jan 27 02:18:53 CST 2014

NOTE: recovering COD for group 1/0x3a2c35d6 (DG)

WARNING: cache read a corrupted block gn=1 dsk=0 blk=2817 from disk 0

NOTE: a corrupted block was dumped to the trace file

ERROR: cache failed to read dsk=0  blk=2817 from disk(s): 0

ORA-15196: invalid ASM block header [kfc.c:8281] [endian_kfbh] [2147483648] [2817] [173 != 1]

System State dumped to trace file /u01/app/oracle/admin/+ASM/bdump/+asm2_rbal_31204.trc

NOTE: cache initiating offline of disk 0  group 1

WARNING: process 31204 initiating offline of disk 0.3913073997 (VOL1) with mask 0x3 in group 1

WARNING: Disk 0 in group 1 in mode: 0x7,state: 0x2 will be taken offline

NOTE: PST update: grp = 1, dsk = 0, mode = 0x6

Mon Jan 27 02:18:54 CST 2014

ERROR: too many offline disks in PST (grp 1)

Mon Jan 27 02:18:54 CST 2014

WARNING: Disk 0 in group 1 in mode: 0x7,state: 0x2 was taken offline

Mon Jan 27 02:18:54 CST 2014

NOTE: halting all I/Os to diskgroup DG

NOTE: active pin found: 0x0x65faff60

NOTE: active pin found: 0x0x65fb0170

NOTE: active pin found: 0x0x65fb0010

NOTE: active pin found: 0x0x65fb0220

NOTE: active pin found: 0x0x65fb02d0

NOTE: active pin found: 0x0x65fb00c0

NOTE: active pin found: 0x0x65fb0380

Mon Jan 27 02:18:54 CST 2014

ERROR: ORA-15130 in COD recovery for diskgroup 1/0x3a2c35d6 (DG)

ERROR: ORA-15130 thrown in RBAL for group number 1

Mon Jan 27 02:18:54 CST 2014

Errors in file /u01/app/oracle/admin/+ASM/bdump/+asm2_rbal_31204.trc:

ORA-15130: diskgroup “DG” is being dismounted

Mon Jan 27 02:18:54 CST 2014

ERROR: PST-initiated MANDATORY DISMOUNT of group DG

NOTE: cache dismounting group 1/0x3A2C35D6 (DG)

Mon Jan 27 02:18:57 CST 2014

kjbdomdet send to node 0

detach from dom 1, sending detach message to node 0

kjbdomdet send to node 2

detach from dom 1, sending detach message to node 2

Mon Jan 27 02:18:57 CST 2014

Dirty detach reconfiguration started (old inc 23, new inc 23)

List of nodes:

0 1 2

Global Resource Directory partially frozen for dirty detach

* dirty detach – domain 1 invalid = TRUE

138 GCS resources traversed, 0 cancelled

6104 GCS resources on freelist, 6124 on array, 6124 allocated

Dirty Detach Reconfiguration complete

Mon Jan 27 02:18:57 CST 2014

freeing rdom 1

Mon Jan 27 02:18:57 CST 2014

WARNING: dirty detached from domain 1

Mon Jan 27 02:18:57 CST 2014

SUCCESS: diskgroup DG was dismounted

Mon Jan 27 02:18:57 CST 2014

WARNING: PST-initiated MANDATORY DISMOUNT of group DG not performed – group not mounted

Mon Jan 27 02:18:57 CST 2014

Errors in file /u01/app/oracle/admin/+ASM/bdump/+asm2_b001_31755.trc:

ORA-15001: diskgroup “DG” does not exist or is not mounted

ORA-15001: diskgroup “DG” does not exist or is not mounted

ORA-15001: diskgroup “DG” does not exist or is not mounted

Mon Jan 27 02:31:00 CST 2014

ここで、Diskgroupを mountするときに、recovering COD for group 1/0x3a2c35d6 (DG)段階で、あるロジックベッドブロックを見つけた:WARNING: cache read a corrupted block gn=1 dsk=0 blk=2817 from disk 0 NOTE: a corrupted block was dumped to the trace file ERROR: cache failed to read dsk=0 blk=2817 from disk(s): 0それに、このベッドブロックによってORA-15196: invalid ASM block header [kfc.c:8281] [endian_kfbh] [2147483648] [2817] [173 != 1]になった。。

ここの2817はエラになったASM metadataのblock numberである。173はendian_kfbh位置から読み出した数値である。173!=1 ここの1はその位置にあるはずの理論値だが、ブロックに誤ったendian_kfbh情報を読み取ったから、ASM ORA-600エラになった。

ここのrecovering COD for group 1/0x3a2c35d6 (DG) のCOD はasm metadata file number 4 CODと意味している。  Continuing Operation Directory (COD) はそのmetadata file 4 に記録された一つのmetadata blockで完成出来ないオペレーションをCODに記録する。これで、ASM のインスタンスがCrashした場合にリカバリできる。例えばresizeファイルを作成/削除する。その中で、file number 4 blkn=1はKFBTYP_COD_RBつまりロールバックデータで、後のデータはFBTYP_COD_DATAである。

ロールバックできるオペレーションopcodesは以下のようなことを含んでいる:

1 – Create a file

2 – Delete a file

3 – Resize a file

4 – Drop alias entry

5 – Rename alias entry

6 – Rebalance space COD

7 – Drop disks force

8 – Attribute drop

9 – Disk Resync

10 – Disk Repair Time

11 – Volume create

12 – Volume delete

13 – Attribute directory creation

14 – Set zone attributes

15 – User drop

 

ASM diskgroup がmountしてみるときにFILE number 4 CODのデータを読み取って、オペレーションが完成できない場合にロールバックすることを確保する。

 

このようなASM file number 4 CODにメータデータベッドブロックが現れた場合に、人工的に内部的なトランザクションを設定して、ASM metadataをPatchしてください。

このようなトラブルが起こったら、まずはASM disk header 100Mのデータをバックアップして、現場を破壊されないようにしてください。

 


Posted

in

by

Tags:

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *