ASM disk group mount fails with ORA-15036: disk is truncated [ID 1077175.1]
Version 10.2.0.1 to 11.2.0.1
症状:
加载磁盘组时遭遇如下错误
ORA-15032: not all alterations performed
ORA-15036: disk 'ORCL:DATA10' is truncated
ORA-15036: disk 'ORCL:DATA09' is truncated
此为在OS直接resize磁盘组,导致实际大小与metadata记录不符所致
大致思路
查看metadata记录和磁盘实际大小,通过kfed修改metadata;
步骤
确认导致问题的磁盘信息
ls -l /dev/oracleasm/disks/*
brw-rw---- 1 oracle dba 8, 161 Mar 14 11:25 DATA09
brw-rw---- 1 oracle dba 8, 177 Mar 14 11:25 DATA10
检查其磁盘组metadata
$ kfed read /dev/oracleasm/disks/DATA09 | egrep "dskname|dsksize"
kfdhdb.dskname: DATA09 ; 0x028: length=6
kfdhdb.dsksize: 65530 ; 0x0c4: 0x0000fffa
$ kfed read /dev/oracleasm/disks/DATA10 | egrep "dskname|dsksize"
kfdhdb.dskname: DATA10 ; 0x028: length=6
kfdhdb.dsksize: 65530 ; 0x0c4: 0x0000fffa
确认其记录大小为65530M
检查磁盘实际大小
通过major/minor id获取磁盘名
# ls -l /dev/sd* | egrep "8, 161|8, 177"
brw-rw---- 1 root disk 8, 161 Mar 14 11:25 sdk1
brw-rw---- 1 root disk 8, 177 Mar 14 11:25 sdl1
通过fdisk检查其大小,为61530M
# fdisk -l /dev/sdk
Disk /dev/sdk: 68.7 GB, 68719476736 bytes
255 heads, 63 sectors/track, 8354 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdk1 1 7844 63006898+ 83 Linux
# fdisk -l /dev/sdl
Disk /dev/sdl: 68.7 GB, 68719476736 bytes
255 heads, 63 sectors/track, 8354 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdl1 1 7844 63006898+ 83 Linux
修改磁盘组metadata
$ kfed read /dev/oracleasm/disks/DATA09 > /tmp/DATA09_header.kfed
将kfdhdb.dsksize: 65530 ; 0x0c4: 0x0000fffa
修改为
kfdhdb.dsksize: 61530 ; 0x0c4: 0x0000f05a
更新磁盘组
$ kfed merge /dev/oracleasm/disks/DATA09 text=/tmp/DATA09_header.kfed
加载磁盘组并resize
SQL> alter diskgroup DG1 resize disk DATA09 size 61530 M;
SQL> alter diskgroup DG1 resize disk DATA10 size 61530 M;