ASM Label丢失导致集群重启失败
这是一个测试环境,开发反映服务器重启后数据库无法访问,这是一个两节点集群,查询集群状态发现,在ora.cssd处于starting 状态
那么就需要查询cssd.log看这个Demon发生了什么。(用来自MOS的一个例子说明吧,虽然实际无法发现的Label名字有差异,但是解决步骤
都是一样的)
[ CSSD][922285824]clssnmReadDiscoveryProfile: voting file discovery string(/dev/oracleasm/disks/*)
[ CSSD][922285824]clssnmvDDiscThread: using discovery string /dev/oracleasm/disks/* for initial discovery
[ SKGFD][922285824]Discovery with str:/dev/oracleasm/disks/*:
...
[ SKGFD][922285824]Handle 0x7fd920153400 from lib :UFS:: for disk :/dev/oracleasm/disks/Disk1:
...
[ SKGFD][922285824]Lib :UFS:: closing handle 0x7fd920153400 for disk :/dev/oracleasm/disks/Disk1:
...
[ CSSD][922285824]clssnmvDiskVerify: Successful discovery of 0 disks
[ CSSD][922285824]clssnmCompleteInitVFDiscovery: Completing initial voting file discovery
[ CSSD][922285824]clssnmvFindInitialConfigs: No voting files found
这里原因也比较直观,就是无法发现voting file。也就是服务器重启后,Oracle无法发现asm磁盘Label
我们查询,确实没有发现 Label信息
$ ls -l /dev/oracleasm/disks
目前的问题是OCR对应的磁盘是存在的,但是由于未知的原因,这个Label没有了,此时我们需要使用如下指令
重建出这个Lable
使用root用户,执行如下操作
# /usr/sbin/oracleasm renamedisk -f <device name> <label>
目前我们需要确认磁盘设备和ASMLabel的对应关系,此时我们就需要一个kfed工具,来读取并解析磁盘设备记录的
相关信息,从而修复ASM磁盘头。如果有安装文档,我们就知道这个对应关系,我们也可以读取磁盘信息,来获取一般都记录
了特殊的kfdhdb.grpname对应的名字,如DATADISK,OCRDISK,ARCHDISK等。
$kfed read /dev/sdc1
....
kfdhdb.driver.provstr: ORCLDISK ; 0x000: length=8 <<<<< 无法发现磁盘Label
kfdhdb.driver.reserved[0]: 0 ; 0x008: 0x00000000 <<<<<
kfdhdb.driver.reserved[1]: 0 ; 0x00c: 0x00000000 <<<<<
kfdhdb.driver.reserved[2]: 0 ; 0x010: 0x00000000
kfdhdb.driver.reserved[3]: 0 ; 0x014: 0x00000000
kfdhdb.driver.reserved[4]: 0 ; 0x018: 0x00000000
kfdhdb.driver.reserved[5]: 0 ; 0x01c: 0x00000000
...
kfdhdb.dskname: OCRDISK1_0000 ; 0x028: length=13
kfdhdb.grpname: OCRDISK1 ; 0x048: length=8 <<<<< 对应ASM磁盘
kfdhdb.fgname: OCRDISK1_0000 ; 0x068: length=13
...
kfdhdb.vfstart: 352 ; 0x0ec: 0x00000160
kfdhdb.vfend: 384 ; 0x0f0: 0x00000180
我们通过如下方式修复ASM磁盘头信息
# /usr/sbin/oracleasm renamedisk -f /dev/sdc1 OCRDISK1
下面检查
$ ls -l /dev/oracleasm/disks
total 0
brw-rw---- 1 oragrid asmadmin 8, 113 May 29 19:40 OCRDISK1
brw-rw---- 1 oragrid asmadmin 8, 129 May 29 00:38 OCRDISK2
brw-rw---- 1 oragrid asmadmin 8, 145 May 29 00:38 OCRDISK3
进一步通过kfed获得ASMLIB驱动信息
kfdhdb.driver.provstr: ORCLDISKOCRDISK1 ; 0x000: length=16 <<<<
kfdhdb.driver.reserved[0]: 1146241871 ; 0x008: 0x4452434f <<<<
kfdhdb.driver.reserved[1]: 827020105 ; 0x00c: 0x314b5349 <<<<
...
kfdhdb.dskname: OCRDISK1_0000 ; 0x028: length=13
kfdhdb.grpname: OCRDISK1 ; 0x048: length=8
kfdhdb.fgname: OCRDISK1_0000 ; 0x068: length=13
重启集群状态,正常
相关文章