love wife & love life —Roger 的Oracle技术博客

Phone:18180207355 提供专业Oracle数据恢复、性能优化、迁移升级、紧急救援等服务

asm 添加disk时,ctrl+C导致diskgroup无法mount

本站文章除注明转载外,均为本站原创: 转载自love wife & love life —Roger 的Oracle技术博客

本文链接地址: asm 添加disk时,ctrl+C导致diskgroup无法mount

昨天系统割接时,一套10204 rac(asm)在添加disk时,ctrl+C中断后导致diskgroup无法mount,今天通过
vmware进行模拟了一下,然后给出解决方法,供大家参考。

—-如下来模拟添加asm disk时,中断操作导致asm 磁盘组无法mount的情况

果然此时数据库实例crash了,如下:

如果尝试把这些disk删除或者重新添加,都会报错,类似如下:

发现不行了,只能先把disk header清空掉,重启asm实例,尝试通过重建新的磁盘组然后drop的方式去删除:

此时仍然无法mount,昨天操作骚扰熊哥,提到了pst和disk directory等信息,可以已经包含了这些disk,所以这里
我想到,既然如此,那么可以通过来修改这部分内容,然后成功将diskgroup mount,如下是的操作过程:

下面我们来看下asm的pst信息中是否包我们新加的2个disk:

下面再来看下asm disk directory信息:

仍然可以看到,disk directory中也有新加的disk的信息了。 这里我们要做的就是把多余的disk清理掉:

下面是关于pst的信息修改:

当然,这里你修改一个block是不行的,asm通常会用好几个block去存pst信息,我这里
其实还merge了blkn 1,2,3等几个pst block,最后成功mount磁盘组。

最后我们再将前面失败的几个disk添加到asm diskgroup中,如下:

通过alert log,其实我们也可以清楚的看到,在添加disk的过程中,其实主要需要做如下几个步骤:

1. 初始化disk header block
2. 更新pst。

当然,这里其实还涉及到其他的操作,另外如果是开启了rebalance操作,后还有rebalance的信息。

当然,如果你不想通过上面方式去做,可以直接使用oracle自带的amdu去抽取文件,不过这里需要说明的是,
在很多情况下,甚至disk header损坏的情况下,可能amdu都是不行的。你可以借助ODU去操作。 下面来详细
描述如何用amdu去抽取datafile以及其他文件。

—首先需要找到asm alias信息

datafile在最前面,说明在第2个block,如下:

接着我们来看controlfile:

下面是redo logfile的信息:

tempfile我们就不管了,你可以把库拉起来了新建就行了,最后来看下spfile:

下面开始抽取的简单命令,过程补贴了最后加上结果:

最后你可以通过dbv来检测一下所抽取的文件是否完好:

补充: 从11gR1开始,操作根本不需要这样操作了,从11.2.0.3开始,甚至还可以直接force drop disk和force mount diskgroup。

    分享到:
18180207355
加Q咨询