联系:手机(13429648788) QQ(107644445)
作者:惜分飞©版权所有[文章允许转载,但必须以链接方式注明源地址,否则追究法律责任.]
前段时间有多个朋友问我,在amdu中,如果数据文件命名不是omf的方式,该如何找出来数据文件的asm file_number,从而实现通过amdu对不能mount的磁盘组中的数据文件进行恢复,这里通过测试给出来处理方法.根据我们对asm的理解,asm file_number 6为asm file的别名文件记录所在地,我们通过分析kfed这些au中的记录即可获得相关数据文件的别名对应的asm文件号
模拟各种别名
D:\app\product\10.2.0\db_1\bin>sqlplus / as sysdba SQL*Plus: Release 10.2.0.3.0 - Production on 星期三 7月 27 22:48:48 2016 Copyright (c) 1982, 2006, Oracle. All Rights Reserved. 连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production With the Partitioning, OLAP and Data Mining options SQL> select name from v$datafile; NAME -------------------------------------------------------------------------------- +DATA/ora10g/datafile/system.256.914797317 +DATA/ora10g/datafile/undotbs1.258.914797317 +DATA/ora10g/datafile/sysaux.257.914797317 +DATA/ora10g/datafile/users.259.914797317 SQL> create tablespace xifenfei 2 datafile '+data/xifenfei01.dbf' size 10M; 表空间已创建。 SQL> alter tablespace xifenfei add 2 datafile '+data/ora10g/datafile/xifenfei02.dbf' size 10m; 表空间已更改。 SQL> alter tablespace xifenfei add 2 datafile '+data/ora10g/xifenfei03.dbf' size 10m; 表空间已更改。 SQL> select name from v$datafile; NAME -------------------------------------------------------------------------------- +DATA/ora10g/datafile/system.256.914797317 +DATA/ora10g/datafile/undotbs1.258.914797317 +DATA/ora10g/datafile/sysaux.257.914797317 +DATA/ora10g/datafile/users.259.914797317 +DATA/xifenfei01.dbf +DATA/ora10g/datafile/xifenfei02.dbf +DATA/ora10g/xifenfei03.dbf 已选择7行。
分析磁盘组和别名信息
SQL> select name from v$asm_disk; NAME ------------------------------ DATA_0000 DATA_0001 SQL> select path from v$asm_disk; PATH ----------------------------------------- H:\ASMDISK\ASMDISK1.DD H:\ASMDISK\ASMDISK2.DD SQL> SELECT NAME,FILE_NUMBER FROM V$ASM_ALIAS where file_number<>4294967295; NAME FILE_NUMBER ------------------------------ ----------- SYSTEM.256.914797317 256 SYSAUX.257.914797317 257 UNDOTBS1.258.914797317 258 USERS.259.914797317 259 XIFENFEI.266.918341361 266 XIFENFEI.267.918341389 267 xifenfei02.dbf 267 XIFENFEI.268.918341409 268 Current.260.914797381 260 group_1.261.914797385 261 group_2.262.914797385 262 group_3.263.914797387 263 TEMP.264.914797393 264 spfile.265.914797421 265 spfileora10g.ora 265 xifenfei03.dbf 268 xifenfei01.dbf 266 已选择17行。 SQL> SELECT NAME,FILE_NUMBER FROM V$ASM_ALIAS; NAME FILE_NUMBER ------------------------------ ----------- ORA10G 4294967295 DATAFILE 4294967295 SYSTEM.256.914797317 256 SYSAUX.257.914797317 257 UNDOTBS1.258.914797317 258 USERS.259.914797317 259 XIFENFEI.266.918341361 266 XIFENFEI.267.918341389 267 xifenfei02.dbf 267 XIFENFEI.268.918341409 268 CONTROLFILE 4294967295 Current.260.914797381 260 ONLINELOG 4294967295 group_1.261.914797385 261 group_2.262.914797385 262 group_3.263.914797387 263 TEMPFILE 4294967295 TEMP.264.914797393 264 PARAMETERFILE 4294967295 spfile.265.914797421 265 spfileora10g.ora 265 xifenfei03.dbf 268 xifenfei01.dbf 266 已选择23行。
从sql查询,我们可以确定xifenfei0n.dbf对应的文件号分别为:xifenfei01.dbf==>266,xifenfei02.dbf==>267,xifenfei03.dbf==>268
通过kfed file 6所在位置
www.xifenfei.com>kfed read H:\ASMDISK\ASMDISK1.DD |grep f1b1 kfdhdb.f1b1locn: 2 ; 0x0d4: 0x00000002 kfdhdb.f1b1fcn.base: 0 ; 0x100: 0x00000000 kfdhdb.f1b1fcn.wrap: 0 ; 0x104: 0x00000000 www.xifenfei.com>kfed read H:\ASMDISK\ASMDISK1.DD aun=2 blkn=6|grep kfffde|more kfffde[0].xptr.au: 26 ; 0x4a0: 0x0000001a kfffde[0].xptr.disk: 0 ; 0x4a4: 0x0000 kfffde[0].xptr.flags: 0 ; 0x4a6: L=0 E=0 D=0 S=0 kfffde[0].xptr.chk: 48 ; 0x4a7: 0x30 kfffde[1].xptr.au: 4294967295 ; 0x4a8: 0xffffffff kfffde[1].xptr.disk: 65535 ; 0x4ac: 0xffff
从这里我们可以确定别名的au只有一个位于disk 0, au 26(0x1a)的位置
通过kfed分析别名
www.xifenfei.com>kfed read H:\ASMDISK\ASMDISK1.DD aun=26 |more
kfbh.endian: 1 ; 0x000: 0x01
kfbh.hard: 130 ; 0x001: 0x82
kfbh.type: 11 ; 0x002: KFBTYP_ALIASDIR
kfbh.datfmt: 1 ; 0x003: 0x01
kfbh.block.blk: 0 ; 0x004: blk=0
kfbh.block.obj: 6 ; 0x008: file=6
kfbh.check: 1563703526 ; 0x00c: 0x5d3438e6
kfbh.fcn.base: 3461 ; 0x010: 0x00000d85
kfbh.fcn.wrap: 0 ; 0x014: 0x00000000
kfbh.spare1: 0 ; 0x018: 0x00000000
kfbh.spare2: 0 ; 0x01c: 0x00000000
kffdnd.bnode.incarn: 1 ; 0x000: A=1 NUMM=0x0
kffdnd.bnode.frlist.number: 4294967295 ; 0x004: 0xffffffff
kffdnd.bnode.frlist.incarn: 0 ; 0x008: A=0 NUMM=0x0
kffdnd.overfl.number: 4294967295 ; 0x00c: 0xffffffff
kffdnd.overfl.incarn: 0 ; 0x010: A=0 NUMM=0x0
kffdnd.parent.number: 0 ; 0x014: 0x00000000
kffdnd.parent.incarn: 1 ; 0x018: A=1 NUMM=0x0
kffdnd.fstblk.number: 0 ; 0x01c: 0x00000000
kffdnd.fstblk.incarn: 1 ; 0x020: A=1 NUMM=0x0
kfade[0].entry.incarn: 1 ; 0x024: A=1 NUMM=0x0
kfade[0].entry.hash: 2080305534 ; 0x028: 0x7bfef17e
kfade[0].entry.refer.number: 1 ; 0x02c: 0x00000001
kfade[0].entry.refer.incarn: 1 ; 0x030: A=1 NUMM=0x0
kfade[0].name: ORA10G ; 0x034: length=6
kfade[0].fnum: 4294967295 ; 0x