磁盘头信息备份恢复
/
无备份修复
一、
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
|
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
|
三、使用
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;
|
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
|