Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2767081
  • 博文数量: 389
  • 博客积分: 4177
  • 博客等级: 上校
  • 技术积分: 4773
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-16 23:29
文章分类

全部博文(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上元信息.

阅读(2984) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~