设为首页 加入收藏

TOP

介绍Oracle自带的一些ASM维护工具(kfod/kfed/amdu)(五)
2015-11-21 02:07:05 来源: 作者: 【 】 浏览:9
Tags:介绍 Oracle 自带 一些 ASM 维护 工具 kfod/kfed/amdu
o创建时的时间戳

第29~30行:kfdhdb.mntstmp.hi,kfdhdb.mntstmp.lo Mount时的时间戳

第31行:kfdhdb.secsize 扇区大小

第32行:kfdhdb.blksize块大小

第33行:kfdhdb.ausize AU大小。

第34行:kfdhdb.mfact: 版本相关,无意义

第35行:kfhdb.dsksize本磁盘包含的AU数量。kfdhdb.ausize *dsksize_kfdhdb = disk size

第36行:kfdhdb.pmcnt AU的物理地址空间。

第37行:kfdhdb.fstlocn 说明第一个AU后,是用户可用空间。

第37行:kfdhdb.altlocn 说明文件目录开始自第二个AU

第38行:kfdhdb.f1b1locn 文件目录块1分配单元号

第39~108行:在默认au的情况下,后面的信息基本都变化不大

这部分信息对于ASM识别磁盘非常重要,也正式因为它的重要,11g默认就就对其进行了一个镜像备份,可以通过kefd的repair操作直接恢复,相当的方便。

4.ASM磁盘头的修复

由于磁盘头的信息相对简单而且变化很小,特别是同一磁盘组的磁盘,每个磁盘头的信息几乎一致,而当我们了解了磁盘头的信息后,一旦某个磁盘头的信息出现了问题,我们可以利用其他磁盘头信息然后通过kfed工具对其进行修改和调整,达到修复的目的。其中用得最多的是读取(Read)、修复(Repair)和合并(Merge)三个操作。

4.1. Repair修复法

首先大家要明确一点,Oracle正因为知道ASM磁盘头的重要性,因此默认情况下,就对其进行了镜像备份,有点类似于控制文件。在每个ASM文件的第一个AU位置,是磁盘头信息,而第1个AU位置最后第2个数据块中,默认情况下就是对磁盘头信息的镜像备份,如AU的缺省大小是1M时,那个数据块就是254,我们可以查询下:

磁盘头信息:

[oracle@rac01~]$ kfed read /dev/asm-disk1 aun=0 blkn=0|more

kfbh.endian: 1 ; 0x000: 0x01

kfbh.hard: 130 ; 0x001: 0x82

kfbh.type: 1 ; 0x002:KFBTYP_DISKHEAD

kfbh.datfmt: 1 ; 0x003: 0x01

kfbh.block.blk: 0 ; 0x004: blk=0

kfbh.block.obj: 2147483648 ; 0x008: disk=0

kfbh.check: 1997052059 ; 0x00c:0x7708989b

kfbh.fcn.base: 4892 ; 0x010: 0x0000131c

kfbh.fcn.wrap: 0 ; 0x014: 0x00000000

kfbh.spare1: 0 ; 0x018: 0x00000000

kfbh.spare2: 0 ; 0x01c: 0x00000000

kfdhdb.driver.provstr: ORCLDISK ; 0x000: length=8

kfdhdb.driver.reserved[0]: 0 ; 0x008: 0x00000000

。。。。。。(以下内容略)

1号AU倒数第二个数据块信息:

[oracle@rac01~]$ kfed read /dev/asm-disk1 aun=1 blkn=254|more

kfbh.endian: 1 ; 0x000: 0x01

kfbh.hard: 130 ; 0x001: 0x82

kfbh.type: 1 ; 0x002: KFBTYP_DISKHEAD

kfbh.datfmt: 1 ; 0x003: 0x01

kfbh.block.blk: 254 ; 0x004: blk=254

kfbh.block.obj: 2147483648 ; 0x008: disk=0

kfbh.check: 1997052005 ; 0x00c:0x77089865

kfbh.fcn.base: 4892 ; 0x010: 0x0000131c

kfbh.fcn.wrap: 0 ; 0x014: 0x00000000

kfbh.spare1: 0 ; 0x018: 0x00000000

kfbh.spare2: 0 ; 0x01c: 0x00000000

kfdhdb.driver.provstr: ORCLDISK ; 0x000: length=8

kfdhdb.driver.reserved[0]: 0 ; 0x008: 0x00000000

。。。。。。(以下内容略)

可以看到查询出来的内容同样也是磁盘头内容,这部分是ORACLE自行备份的信息,但是注意该特性只在10.2.0.5及以上版本才有,10.2.0.4版本数据库没有这部分信息。

利用dd命令清空其中一个ASM磁盘的磁盘头信息,如下

[oracle@rac01~]$ dd if=/dev/zero of=/dev/asm-disk1 bs=4096 count=1

1+0records in

1+0records out

4096bytes (4.1 kB) copied, 0.00157905 s, 2.6 MB/s

[oracle@rac01~]$ kfed read /dev/asm-disk1 aun=0blkn=0|more

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

7F8A21E3440000000000 00000000 00000000 00000000 [................]

Repeat 255 times

KFED-00322: Invalid contentencountered during block traversal: [kfbtTraverseBlock][Invalid OSM blocktype][][0]

可以看到,/dev/asm-disk1磁盘的磁盘头信息已经被彻底的损坏,我们再查看ASM视图,看下状态;

SQL>select group_Number,DISK_NUMBER,name,HEADER_STATUS,path from v$asm_disk;

GROUP_NUMBERDISK_NUMBER NAME HEADER_STATUS PATH

2 1 DATA_0001 MEMBER /dev/asm-disk2

2 0 DATA_0000 CANDIDATE /dev/asm-disk1

1 0 ARCH_0000 MEMBER /dev/asm-disk3

如果这时候重启服务器,CRS集群也将无法启动,CRS的一些关键信息也是存放在ASM中,以前遇到这种情况,我们只能重建ASM,利用备份进行恢复,但是现

首页 上一页 2 3 4 5 6 7 8 下一页 尾页 5/8/8
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇为什么要学习Oracle技术? 下一篇oracle中往varchar2格式的字段中..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: