最近虚拟机下的Oracle 10g RAC搬家,搬家完毕之后,Oracle 集群resource之VIP无法正常启动,收到了CRS-0233: Resource or relatives are currently involved with another operation 错误提示。为为啥呢,原来啊,搬家了地址发生变化了,你得使用你家里的新地址阿....
1、环境描述
Oracle 10g RAC + Suse 10
注,将RAC虚拟机搬家之后,通常情况下我们在添加虚拟机时选择复制(移动这个没试过,不知道是否会有问题)
其次,由于选择了复制,虚拟机要生成一个新的UUID(UUID是指在一台机器上生成的数字,它保证对在同一虚拟环境中的机器唯一性)。
同时MAC地址以及网络接口名也会发生相应的变化(首次启动虚拟机原来的eth0以及eth1不可用),通常情况下需要对此修改。
不同的Linux系统对新网络接口有不同的处理方法。Oracle Linux以及RedHat可以直接把原来的删除然后将新的网络接口名重命名为原来的。
2、CRS-1006/CRS-0215/CRS-0233错误
#修改网卡之后,重新启动两个节点
#resource vip 状态为offline
oracle@bo2dbp:~> ./crs_stat.sh |grep bo2dbp
Resource name Target State
-------------- ------ -----
ora.bo2dbp.ASM1.asm ONLINE ONLINE on bo2dbp
ora.bo2dbp.LISTENER_BO2DBP.lsnr ONLINE OFFLINE
ora.bo2dbp.LISTENER_ORA10G_BO2DBP.lsnr ONLINE OFFLINE
ora.bo2dbp.gsd ONLINE ONLINE on bo2dbp
ora.bo2dbp.ons ONLINE OFFLINE
ora.bo2dbp.vip ONLINE OFFLINE
ora.ora10g.db ONLINE ONLINE on bo2dbp
ora.ora10g.ora10g1.inst ONLINE ONLINE on bo2dbp
#尝试手动启动ons
oracle@bo2dbp:~> crs_start ora.bo2dbp.ons
Attempting to start `ora.bo2dbp.ons` on member `bo2dbp`
Start of `ora.bo2dbp.ons` on member `bo2dbp` failed.
CRS-1006: No more members to consider
CRS-0215: Could not start resource 'ora.bo2dbp.ons'.
#通过onsctl方式启动也收到失败信息
oracle@bo2dbp:~> onsctl start
Number of onsconfiguration retrieved, numcfg = 2
onscfg[0]
{node = bo2dbp.2gotrade.com, port = 6200}
Adding remote host bo2dbp.2gotrade.com:6200
onscfg[1]
{node = bo2dbs.2gotrade.com, port = 6200}
Adding remote host bo2dbs.2gotrade.com:6200
Number of onsconfiguration retrieved, numcfg = 2
onscfg[0]
{node = bo2dbp.2gotrade.com, port = 6200}
Adding remote host bo2dbp.2gotrade.com:6200
onscfg[1]
{node = bo2dbs.2gotrade.com, port = 6200}
Adding remote host bo2dbs.2gotrade.com:6200
onsctl: ons failed to start
#尝试手动启动vip,收到了CRS-0233错误
oracle@bo2dbp:~> crs_start ora.bo2dbp.vip
CRS-0233: Resource or relatives are currently involved with another operation.
#下面的查询中集群层的public与cluster_interconnect还是之前的配置信息
#应该需要改成一致,此处我们先不改,看看会出现什么错误
oracle@bo2dbp:~> oifcfg getif -global
eth3 192.168.7.0 global public
eth4 10.10.7.0 global cluster_interconnect
oracle@bo2dbs:~> oifcfg getif -global
eth3 192.168.7.0 global public
eth4 10.10.7.0 global cluster_interconnect
#重新启动crs
oracle@bo2dbp:~> sudo -s /u01/oracle/crs/bin/crsctl start crs
root'''s password:
Attempting to start CRS stack
The CRS stack will be started shortly
2012-12-28 11:25:16.979: [RACG][2151948784] [16581][2151948784][ora.bo2dbp.vip]: end for resource =
ora.bo2dbp.vip, action = start, status = 1, time = 6.430s
2012-12-28 11:25:23.807: [RACG][695611888] [17488][695611888][ora.bo2dbp.vip]: eth3: error
fetching interface information: Device not found #此处提示eth3没有找到,我们希望使用的是bond1
checkIf: interface eth3 is down
Invalid parameters, or failed to bring up VIP (host=bo2dbp)
2012-12-28 11:25:27.018: [RACG][695611888] [17488][695611888][ora.bo2dbp.vip]: end for resource =
ora.bo2dbp.vip, action = start, status = 1, time = 6.450s
2012-12-28 11:25:33.822: [RACG][3600347632] [18308][3600347632][ora.bo2dbp.vip]: eth3: error
fetching interface information: Device not found #再次出现eth3没有找到的错误提示
checkIf: interface eth3 is down
Invalid parameters, or failed to bring up VIP (host=bo2dbp)
2012-12-28 11:25:37.063: [RACG][3600347632] [18308][3600347632][ora.bo2dbp.vip]: end for resource =
ora.bo2dbp.vip, action = start, status = 1, time = 6.490s
#从上面的日志可知还是那个网络接口名的问题
#也可以看出action = start, status = 1, time = 6.490s 这个地方应该是Target为Online,而实际上State为offline
#网络接口层也改了,那就是这个eth3还在OCR中没有被更新,接下来尝试更新
bo2dbp:/u01/oracle/crs/bin # ./srvctl modify nodeapps -n bo2dbp -A 192.168.7.61/255.255.255.0/bond1
#对第二个节点上也采用相同的方式来更新
bo2dbs:~ # /u01/oracle/crs/bin/srvctl modify nodeapps -n bo2dbs -A 192.168.7.62/255.255.255.0/bond1
#此时成功启动vip
oracle@bo2dbp:~> crs_start ora.bo2dbp.vip
Attempting to start `ora.bo2dbp.vip` on member `bo2dbp`
Start of `ora.bo2dbp.vip` on member `bo2dbp` succeeded.
2012-12-28 11:00:49.346: [ RACG][2554102256] [19071][2554102256][ora.bo2dbp.ons]: end
for resource = ora.bo2dbp.ons, action = start, status = 1, time = 7.560s
2012-12-28 11:00:55.661: [ RACG][368746992] [19812][368746992][ora.bo2dbp.ons]: onsctl: shutting down ons daemon ...
CONNECT: Connection refused
Number of onsconfiguration retrieved, numcfg = 2
onscfg[0]
{node = bo2dbp.2gotrade.com, port = 6200}
Adding remote host bo2dbp.2gotrade.com:6200
onscfg[1]
{node = bo2dbs.2gotrade.com,
2012-12-28 11:00:55.661: [ RACG][368746992] [19812][368746992][ora.bo2dbp.ons]: port = 6200}
...............
#尝试启动ons成功
oracle@bo2dbp:~> crs_start ora.bo2dbp.ons
Attempting to start `ora.bo2dbp.ons` on member `bo2dbp`
Start of `ora.bo2dbp.ons` on member `bo2dbp` succeeded.