ASM磁盘头损坏如何修复

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

磁盘头信息备份恢复  /  无备份修复

一、  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

、修复

[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

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

[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

、模拟破坏

[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

、检查磁盘和磁盘组状态

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

、使用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

相关推荐