全部博文(389)
分类: Oracle
2014-07-17 22:28:37
查找ASM 1号文件位置
asm文件1包含了存放在asm系统中的文件信息,直到255号文件以前存放的都是asm元数据信息,256号开始存放的数据文件
1号文件中包括每个存放在ASM中的文件相关信息,比如au信息,磁盘信息,flag等.通过这个信息oracle可以知道某数据文件存放在
哪些au上,数据块和磁盘上(x$kffxp)
1号文件根据asm的版本不同,可能位置存放的不一样,通过一个小脚本可以查找出来
#/bin/sh
dev_name=/dev/sdd1
#writen by 东东堂
for ((i=0;i<=255;i++));
do
result=`/u01/app/oracle/11.2/bin/kfed dev=${dev_name} aun=$i blkn=1 op=read | grep "kfbh.type" |awk -F":" '{print $3}'`
if [ $result == "KFBTYP_FILEDIR" ]
then
echo "asm file 1 au number is:" $i
fi
done
[oracle@asm ~]$ ./dh.sh
asm file 1 au number is: 2
asm file 1 au number is: 53
[oracle@asm ~]$
oracle 11.2的存放位置,有两个au,分别是au 2和au 53
#/bin/sh
dev_name=/dev/sdd3
#writen by 东东堂
for ((i=0;i<=255;i++));
do
result=`/u01/app/crs/product/12.1.0.0/bin/kfed dev=${dev_name} aun=$i blkn=1 op=read | grep "kfbh.type" |awk -F":" '{print $3}'`
if [ $result == "KFBTYP_FILEDIR" ]
then
echo "asm file 1 au number is:" $i
fi
done
[grid@rac1 ~]$ ./dh.sh
asm file 1 au number is: 10
asm file 1 au number is: 103
oracle 12C的存放位置,有两个au,分别是au 10和au 103
通过查找出1号文件的au情况,可以很方便的得出当前文件信息.每个文件信息是占用一个数据块(4k),第0个数据块是AU本身使用,所以每
个au上可以存放255个文件信息。
而第10个au的第一个块,就存放1号数据文件本身的信息
[grid@rac1 ~]$ kfed dev=/dev/sdd3 aun=10 blkn=1 op=read | egrep -e "au|disk" | grep -v "ffff"
kfffde[0].xptr.au: 10 ; 0x4a0: 0x0000000a
kfffde[0].xptr.disk: 0 ; 0x4a4: 0x0000
kfffde[1].xptr.au: 103 ; 0x4a8: 0x00000067
kfffde[1].xptr.disk: 0 ; 0x4ac: 0x0000
可以看到当前1号文件本身有两个au,分别存放在0号磁盘上的au 10和au 103,和我们之前脚本写出的结果一致.
通过1号文件au信息,可以找出每个文件在ASM上元信息.