如题所示,本文将呈现关于如何以非正常的方式删除Oracle 10g RAC的节点的技术细节。
通常,在你需要以非正常方式删除节点的时候,都是某个节点的状态已经异常了。

要开始本文的前提是:你需要有一个运行正常的三节点Oracle database 10g RAC环境。
关于该环境的搭建,可以参考我以往的文章:
Oracle database 10g RAC on RHEL5U10,http://d-prototype.com/archives/881

在本文中,模拟故障的节点为:节点三

下面开始本文的话题。
——————————————————————————
在开始前,查看下RAC当前的状态:

为了模拟节点的异常状态,将节点三的主机关闭:
关闭前:

关闭:

关闭后:

节点三关闭后,查看CRS的资源状态:

从上面的状态可以看到:与节点三有关的资源都处于不可用的状态。
其实就算这种程度的故障,其实还是很理想的。一般,某个节点异常的时候,比方说节点三异常了,可能节点三对应的VIP的资源“ora.rac3.vip”还是ONLINE得,又或者其他的一些资源飘在“rac3”上面,…等等。本文由于环境限制,无法模拟更复杂的错误场景,故仅用最理想的错误现象,去描述发生问题时,将异常节点从RAC架构中删除的方式,予以参考。)

(可选)环境变量:$DISPLAY

下面正式开始描述:

一、使用DBCA删除DATABASE实例

在正常的删除节点步骤中,删除Database实例的第一步应该是停掉异常节点上的RAC相关服务。
你可以选择以下两种方式达成该目的:
1.异常节点上:crsctl stop crs
2.集群任意节点上发出:crs_stop <异常节点的CRS资源名称,Eg:ora.rac.rac3.inst>

这里由于集群异常,异常节点已被关机,所以,上述两个步骤不存在。

然后,就可以真正的操作数据库实例的删除操作了:
在RAC当前的存活节点上运行DBCA:dbca,如下:

图形化操作步骤:
dbca_1

dbca_2

dbca_3

dbca_4

dbca_5

dbca_6

dbca_7

dbca_8

dbca_9

dbca_10

dbca_11
这样,节点三的数据库实例就删除完了。

删除完成后,查看下当前RAC资源的状态:

你可以发现,和之前相比,与节点三相关的“inst”资源已经被删掉了。

二、删除ASM实例

上面虽然已经删掉了节点三的”inst”相关的资源,但是“asm”的资源仍旧存在的:

在删除ASM实例前,需要停掉要删除的节点上的ASM实例,在本环境中,异常节点关机,故而该步骤省掉了。
如果需要停掉某个节点上的ASM资源,可以如下操作:
/u01/app/10g/grid/bin/srvctl stop asm -n

删除ASM实例,在任意一个RAC当前活动的节点上都可以操作,具体如下:

如果“srvctl remove asm -n ”删不掉,也可以添加选项“-f”,强制执行删除:
/u01/app/10g/grid/bin/srvctl remove asm -n rac3 -f

如上所示,此时,故障节点的ASM实例的RAC资源也被删除了。

三、删掉故障节点的监听资源

删除前:

删除:

四、删除故障节点的NodeApp资源

删除前的状态:

停掉与节点三有关的NodeApp资源,并予以删除:

此时,RAC的集群资源状态:

五、从OCR中删除故障节点,并更新OCR

具体操作如下:

六、删除故障节点的Clusterware

具体如下:

————————————————————————————
Done。

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

隐藏
变装