天天看点

丢失的ASM磁盘组

     近日遇到一个问题,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&gt; </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                                        &lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;  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 

&amp;hellip;&amp;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,如需转载请自行联系原作者

继续阅读