近日遇到一个问题,ASM的磁盘组无法挂载,之前是正常的,由于一些其他的操作,数据库启动失败,当问题排除时候,发现在数据库整体启动时,挂载磁盘组的环节出现问题。
环境介绍
1
2
3
4
5
6
7
<code>#########################################</code>
<code>硬件:Vmware ESX虚拟机</code>
<code>OS: Red hat linux 5</code>
<code>Oracle version: 11.2.0.2</code>
<code>ASM disk是通过 asmlib挂载的</code>
<code>这个磁盘组只有一个虚拟出的硬盘,是 /dev/sdb1.</code>
下面是我整个分析的过程
1. 首先通过ASM alert.log,发现如下错误,磁盘挂载失败,无法找到磁盘组
<code>SQL> </code><code>alter</code> <code>diskgroup DATA mount NOTE: cache registered </code><code>group</code> <code>DATA number=1 incarn=0xc28a1e2d NOTE: cache began mount (</code><code>first</code><code>) </code><code>of</code> <code>group</code> <code>DATA number=1 incarn=0xc28a1e2d Tue </code><code>Dec</code> <code>11 18:06:55 2012 ERROR: </code><code>no</code> <code>PST quorum </code><code>in</code> <code>group</code><code>: required 2, found 0 <<<<<<<<<<< NOTE: cache dismounting (clean) </code><code>group</code> <code>1/0xC28A1E2D (DATA) NOTE: dbwr </code><code>not</code> <code>being msg</code><code>'d to dismount NOTE: lgwr not being msg'</code><code>d </code><code>to</code> <code>dismount NOTE: cache dismounted </code><code>group</code> <code>1/0xC28A1E2D (DATA) NOTE: cache ending mount (fail) </code><code>of</code> <code>group</code> <code>DATA number=1 incarn=0xc28a1e2d NOTE: cache deleting context </code><code>for</code> <code>group</code> <code>DATA 1/0xc28a1e2d GMON dismounting </code><code>group</code> <code>1 </code><code>at</code> <code>8 </code><code>for</code> <code>pid 17, osid 32163 ERROR: diskgroup DATA was </code><code>not</code> <code>mounted ORA-15032: </code><code>not</code> <code>all</code> <code>alterations performed ORA-15017: diskgroup </code><code>"DATA"</code> <code>cannot be mounted ORA-15063: ASM discovered an insufficient number </code><code>of</code> <code>disks </code><code>for</code> <code>diskgroup </code><code>"DATA"</code> <code>ERROR: </code><code>alter</code> <code>diskgroup DATA mount</code>
2. 首先检查ASM pfile 文件,未发现异常
3. 尝试通过以下命令检查磁盘是否物理存在,是如何对应物理设备的,发现查询不到ASM磁盘
4. 但是直接检查物理设备,/dev/sdb1是存在的,说明OS已经识别该硬盘设备,只是ASMlib无法正常识别:
5. 起先是考虑是否是磁盘头损害,导致无法ASMlib识别该磁盘, dump磁盘头发现没有问题.
#od -c /dev/sdb1
&hellip;&hellip;
0000040 O R C L D I S K D A T A D G 0 1
7760040 O R C L D I S K D A T A D G 0 1
这里补充下,如果磁盘头信息丢失,将会显示如下
如果显示这个结果,需要通过以下方式renamedisk,具体可以参考文档Oracleasm Listdisks Cannot See Disks (Doc ID 392527.1)
6. 重启ASMLib ,检查是否是ASMLib 问题
检查文件系统oracleasm文件系统已经成功挂载
7. 检查 /dev/sdb1状态,查看是否已经marked为ASM disk,显示已经标记成功
8. 检查 rpm package也没有问题
9. 收集 Kfed logs,没有检查到异常新信息。
10. 阶段总结,通过以上的分析,得出以下总结
1. ASMLib 正常
2. RPM包正常
3. 磁盘头没有损坏和丢失信息
4. 该硬件已经被系统正常识别
当前问题就是为什么ASMLib 不能正常扫描并识别到该硬盘
11. 最后在检查文件 /etc/sysconfig/oracleasm时,发现问题,我们需要扫描到的磁盘是/dev/sdb1,可是在这个配置文件中却排除扫描sdb*的磁盘,和我们希望的是相悖的,将ORACLEASM_SCANEXCLUDE="" 设为空,并重启ASMLib,最后问题解决。
12. 重启ASMLib并确认磁盘状态
本文转自 hsbxxl 51CTO博客,原文链接:http://blog.51cto.com/hsbxxl/1093996,如需转载请自行联系原作者