ASM磁盘头信息备份与恢复

来源:这里教程网 时间:2026-03-03 20:22:58 作者:

一、 kfed 备份 / 恢复

1 、备份

kfed read /dev/data text=/tmp/data.head

 

2 、模拟破坏

[grid@rac1 ~]$ dd if=/dev/zero of=/dev/data bs=4096 count=1

1+0 records in

1+0 records out

4096 bytes (4.1 kB) copied, 0.0013819 s, 3.0 MB/s

 

[grid@rac1 ~]$ kfed read /dev/data

kfbh.endian:                          0 ; 0x000: 0x00

kfbh.hard:                            0 ; 0x001: 0x00

kfbh.type:                            0 ; 0x002: KFBTYP_INVALID

kfbh.datfmt:                          0 ; 0x003: 0x00

kfbh.block.blk:                       0 ; 0x004: blk=0

kfbh.block.obj:                       0 ; 0x008: file=0

kfbh.check:                           0 ; 0x00c: 0x00000000

kfbh.fcn.base:                        0 ; 0x010: 0x00000000

kfbh.fcn.wrap:                        0 ; 0x014: 0x00000000

kfbh.spare1:                          0 ; 0x018: 0x00000000

kfbh.spare2:                          0 ; 0x01c: 0x00000000

7F03F92F5400 00000000 00000000 00000000 00000000  [................]

  Repeat 255 times

KFED-00322: Invalid content encountered during block traversal: [kfbtTraverseBlock][Invalid OSM block type][][0]

 

SQL> alter diskgroup DATA mount;

alter diskgroup DATA mount

*

ERROR at line 1:

ORA-15032: not all alterations performed

ORA-15017: diskgroup "DATA" cannot be mounted

ORA-15040: diskgroup is incomplete

 

3 、修复

[grid@rac1 trace]$ kfed write /dev/data text=/tmp/data.head

 

[grid@rac1 trace]$ kfed read /dev/data

kfbh.endian:                          1 ; 0x000: 0x01

kfbh.hard:                          130 ; 0x001: 0x82

kfbh.type:                            1 ; 0x002: KFBTYP_DISKHEAD

......

kfdhdb.grptyp:                        1 ; 0x026: KFDGTP_EXTERNAL

kfdhdb.hdrsts:                        3 ; 0x027: KFDHDR_MEMBER

......

 

[grid@rac1 trace]$ sqlplus / as sysasm

SQL> alter diskgroup DATA mount;

Diskgroup altered.

 

二、使用 kfed 自动备份的恢复

10.2.0.5 11.1.0.7 11.2 之后 ASM 磁盘头会自动备份到 AU#1 的倒数第二个 block 。对于 AU size 1MB DISKGROUP ,每个 AU 包括 block 数量 =1024KB/4KB=256 个,因此备份信息位于 AU#1 的第 254 block(block 0 号开始 )

1 、模拟磁盘头损坏

dd if=/dev/zero of=/dev/data bs=4096 count=1

 

SQL> select group_Number,disk_number,mount_status ,header_status from v$asm_disk;

 

GROUP_NUMBER DISK_NUMBER MOUNT_S HEADER_STATU

------------ ----------- ------- ------------

           1           0 CACHED  CANDIDATE

           2           0 CACHED  MEMBER

           2           1 CACHED  MEMBER

           2           2 CACHED  MEMBER

  

SQL> alter diskgroup DATA dismount force;

 

Diskgroup altered.

 

SQL> alter diskgroup DATA mount;

alter diskgroup DATA mount

*

ERROR at line 1:

ORA-15032: not all alterations performed

ORA-15017: diskgroup "DATA" cannot be mounted

ORA-15040: diskgroup is incomplete

 

2 、使用自备份的修复磁盘头

[grid@rac1 trace]$ kfed repair /dev/data

 

[grid@rac1 trace]$ kfed read /dev/data

kfbh.endian:                          1 ; 0x000: 0x01

kfbh.hard:                          130 ; 0x001: 0x82

kfbh.type:                            1 ; 0x002: KFBTYP_DISKHEAD

......

kfdhdb.grptyp:                        1 ; 0x026: KFDGTP_EXTERNAL

kfdhdb.hdrsts:                        3 ; 0x027: KFDHDR_MEMBER

......

kfdhdb.grpstmp.hi:             33123181 ; 0x0e4: HOUR=0xd DAYS=0x1b MNTH=0xa YEAR=0x7e5

kfdhdb.grpstmp.lo:           1764439040 ; 0x0e8: USEC=0x0 MSEC=0x2cd SECS=0x12 MINS=0x1a

 

SQL> alter diskgroup DATA mount;

 

Diskgroup altered.

 

SQL> select group_Number,disk_number,mount_status ,header_status from v$asm_disk;

 

GROUP_NUMBER DISK_NUMBER MOUNT_S HEADER_STATU

------------ ----------- ------- ------------

           1           0 CACHED  MEMBER

           2           0 CACHED  MEMBER

           2           1 CACHED  MEMBER

           2           2 CACHED  MEMBER

 

SQL> select name,path,STATE,MODE_STATUS from v$asm_disk;

 

NAME                           PATH                                     STATE    MODE_ST

------------------------------ ---------------------------------------- -------- -------

DATA_0000                      /dev/data                                NORMAL   ONLINE

OCR_0000                       /dev/ocrvote1                            NORMAL   ONLINE

OCR_0001                       /dev/ocrvote2                            NORMAL   ONLINE

OCR_0002                       /dev/ocrvote3                            NORMAL   ONLINE

 

三、使用 dd 备份恢复

1 dd 备份磁盘头信息

[grid@rac1 trace]$ dd if=/dev/data of=/tmp/data2.bak bs=4096 count=1

1+0 records in

1+0 records out

4096 bytes (4.1 kB) copied, 0.000103484 s, 39.6 MB/s

 

2 、模拟破坏

[grid@rac1 trace]$ dd if=/dev/zero of=/dev/data bs=4096 count=1

1+0 records in

1+0 records out

4096 bytes (4.1 kB) copied, 0.00127311 s, 3.2 MB/s

 

3 、检查磁盘和磁盘组状态

SQL> select name,path,STATE,MODE_STATUS from v$asm_disk;

 

NAME                           PATH                                     STATE    MODE_ST

------------------------------ ---------------------------------------- -------- -------

DATA_0000                      /dev/data                                NORMAL   ONLINE

OCR_0000                       /dev/ocrvote1                            NORMAL   ONLINE

OCR_0001                       /dev/ocrvote2                            NORMAL   ONLINE

OCR_0002                       /dev/ocrvote3                            NORMAL   ONLINE

 

SQL> select group_Number,disk_number,mount_status ,header_status from v$asm_disk;

 

GROUP_NUMBER DISK_NUMBER MOUNT_S HEADER_STATU

------------ ----------- ------- ------------

           1           0 CACHED  CANDIDATE

           2           0 CACHED  MEMBER

           2           1 CACHED  MEMBER

           2           2 CACHED  MEMBER

 

SQL> alter diskgroup DATA dismount force;

 

Diskgroup altered.

 

SQL> select group_Number,disk_number,mount_status ,header_status from v$asm_disk;

 

GROUP_NUMBER DISK_NUMBER MOUNT_S HEADER_STATU

------------ ----------- ------- ------------

           0           0 CLOSED  CANDIDATE

           2           0 CACHED  MEMBER

           2           1 CACHED  MEMBER

           2           2 CACHED  MEMBER

 

SQL> alter diskgroup DATA mount;

alter diskgroup DATA mount

*

ERROR at line 1:

ORA-15032: not all alterations performed

ORA-15017: diskgroup "DATA" cannot be mounted

ORA-15040: diskgroup is incomplete

 

4 、使用 dd 备份恢复

[grid@rac1 trace]$ dd if=/tmp/data2.bak of=/dev/data

8+0 records in

8+0 records out

4096 bytes (4.1 kB) copied, 0.00125491 s, 3.3 MB/s

 

SQL> select group_Number,disk_number,mount_status ,header_status from v$asm_disk;

 

GROUP_NUMBER DISK_NUMBER MOUNT_S HEADER_STATU

------------ ----------- ------- ------------

           1           0 CACHED  MEMBER

           2           0 CACHED  MEMBER

           2           1 CACHED  MEMBER

           2           2 CACHED  MEMBER

相关推荐