在我们安装RAC的时候,有时候会因为种种报错装上了错误的ASM实例或者LISTENER监听,或者说加入了CLUSTERWARE资源,但是并没有真正起作用,如:
如图所示,这里在2个节点分别创建过ASM1和ASM2实例,对应的资源名称分别为ora.RAC1.ASM1.asm和ora.RAC2.ASM2.asm,他们的状态都是UNKONW的,还有每个节点都创建了3个监听,资源名称分别是节点1的ora.RAC1_LISTENER.RAC1.lsnr,ora.RAC1_LISTENER1.RAC1.lsnr,ora.RAC1_LISTENER2.RAC1.lsnr和节点2的ora.RAC2_LISTENER.RAC2.lsnr,ora.RAC2_LISTENER2.RAC2.lsnr,ora.RAC2_LISTENER2.RAC2.lsnr,状态也都是UNKNOW,很明显,这些是错误的资源,因为当执行crsctl
start asm -n rac1的时候,会报错,原因可能是在安装的时候,并没有正确完成,如下图:
也无法直接用srvctl来删除
注意,srvctl remove的用法中,object是没有listener的,不能写成srvctl remove listener -n rac1或srvctl remove ora.RAC1_LISTENER.RAC1.lsnr的,其实用srvctl -h查看一下就可以知道
那么应该如何正确删除以上两种资源呢?分两种情况:
一、ASM实例的删除(只列举删除ASM1的情况,ASM2同理可推)
1.查看资源
srvctl config asm -n rac1
2.注销资源
crs_unregister ora.rac1.ASM1.asm
3.注销资源
crs_unregister ora.rac1.ASM1.asm
特别要注意的是,不能在本节点上删除自己的ASM实例。要删除谁,就先停谁的crs,然后在另一个节点执行删除操作,才能成功
./init.crs stop (linux only)
crsctl stop crs (all)
srvctl remove asm -n rac1 -f
二、LISTENER资源的删除(不用像删除ASM那样,必须先停CRS)
1.查看资源
srvctl config listener -n rac1
srvctl config listener -n rac2
2.注销资源
crs_unregister ora.RAC1_LISTENER.RAC1.lsnr
3.停止资源
crs_stop ora.RAC1_LISTENER.RAC1.lsnr
下面放几张操作图作为示例
这里要删除的目标是节点2上的ASM2资源
节点2上停止CRS
此时再去删除节点2上ASM2
此时发现,ASM2已经从资源中删除了,依次全部删除后,正确效果如下图所示:
完成以后,我们就可以用NETCA重新创建监听,用DBCA重新创建ASM实例啦~很方便哦
删除RAC中的ASM和LISTENER资源的正确方法