备份asm disk header
kfed 或者 dd
kfed read /dev/asm_data1 > asm_data1.txt &&
kfed read /dev/asm_data2 > asm_data2.txt &&
kfed read /dev/asm_data3 > asm_data3.txt
dd if=/dev/asm_data1 of=/home/grid/asm_data1.dump bs=4096 count=1 &&
dd if=/dev/asm_data2 of=/home/grid/asm_data2.dump bs=4096 count=1 &&
dd if=/dev/asm_data3 of=/home/grid/asm_data3.dump bs=4096 count=1
模拟asm disk header头损坏
dd if=/dev/zero of=/dev/asm_data1 bs=4096 count=1
重新挂载报错
SQL> alter diskgroup data dismount;
Diskgroup altered.
SQL> alter diskgroup data mount;
alter diskgroup data mount
*
ERROR at line 1:
ORA-15032: not all alterations performed
ORA-15040: diskgroup is incomplete
ORA-15042: ASM disk "0" is missing from group number "2"
[+ASM1]@ht01[/home/grid]$dd if=/dev/zero of=/dev/asm_data1 bs=4096 count=1
1+0 records in
1+0 records out
4096 bytes (4.1 kB) copied, 0.000907187 s, 4.5 MB/s
kfed 读报错
[+ASM1]@ht01[/home/grid]$kfed read /dev/asm_data1
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
7F06DD408400 00000000 00000000 00000000 00000000 [................]
Repeat 255 times
KFED-00322: Invalid content encountered during block traversal: [kfbtTraverseBlock][Invalid OSM block type][][0]
amdu 抽取报错
[+ASM1]@ht01[/home/grid]$amdu -diskstring ' /dev/asm_data*' -extract data.259
amdu_2019_11_10_19_27_12/
AMDU-00204: Disk N0002 is in currently mounted diskgroup DATA
AMDU-00201: Disk N0002: '/dev/asm_data2'
AMDU-00204: Disk N0003 is in currently mounted diskgroup DATA
AMDU-00201: Disk N0003: '/dev/asm_data3'
asm disk header 3种修复方式
kfed repair /dev/asm_data1
kfed write /dev/asm_data1 te=asm_data1.txt
dd if=/home/grid/asm_data1.dump of=/dev/asm_data1 bs=4096 count=1
抽取数据时候可以先抽取control,control信息记录在alert日志里
amdu -diskstring '/dev/asm_data*' -extract data.259
data.259 有磁盘组名称和file_number组成.
select name from v$datafile;
可以以此抽出