1、编译
cd $ORACLE_HOME/rdbms/lib
make -f ins_rdbms.mk ikfed
which kfed
kfed -help
kfed read /dev/raw/raw1 aunum=0 blknum=0 --asm头块的主要信息
kfed read /dev/raw/raw1 blknum=510 --asm头块的主要信息的一个备份
kfed repair /dev/raw/raw1 --磁盘头损坏后,只需此命令完成恢复
kfed read /dev/raw/raw1 aunum=2 blknum=1|more --读取文件目录元数据:aunum取自磁盘头的kfdhdb.f1b1locn
2、修复被覆盖的ASM元数据信息
①保存磁盘头元数据
kfed read /dev/raw/raw1 aunum=0 blknum=0 text=raw1.txt
--kfed read /dev/raw/raw1 aunum=0 blknum=0 >raw2.txt
②模似磁盘元数据被覆盖
dd if=/dev/zero of=/dev/raw/raw1 bs=4096 count=1
③验证磁盘头元数据是否被损坏
kfed read /dev/raw/raw1 aunum=0 blknum=0
④用备份的文件恢复磁盘头元数据
kfed write /dev/raw/raw1 aunum=0 blknum=0 text=raw1.txt
⑤读取恢复后的磁盘头元数据
kfed read /dev/raw/raw1 aunum=0 blknum=0 text=newraw1.txt
⑥验证磁盘头元数据和用于恢复的备份文件是否一致
diff raw1.txt newraw1.txt
3、修复部分字段被损坏的asm元数据信息
首先创建文件asm1.txt,插入需要修复的磁盘头元数据的部分字段,比如:
kfbh.hard: 130; 0x001: 0x82
以下命令使用编辑的文件修复磁盘元数据的部分字段
kfed merge /dev/raw/raw1 aunum=0 blknum=0 text=asm1.txt