Vmware 下Oracle RAC搬家引起CRS-1006/CRS-0215/CRS-0233

   最近虚拟机下的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可以直接把原来的删除然后将新的网络接口名重命名为原来的。
  对于SuseLinux稍微有点麻烦,可以参考这里: http://blog.csdn.net/robinson_0612/article/details/8131771

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.

3、分析故障
  #查看节点bo2dbp主机上的ip地址
  oracle@bo2dbp:~> ifconfig     #当前系统的网络接口名为eth2, eth5
  eth2      Link encap:Ethernet  HWaddr 00:0C:29:4A:66:28  
            inet addr:192.168.7.51  Bcast:192.168.7.255  Mask:255.255.255.0
  
  eth5      Link encap:Ethernet  HWaddr 00:0C:29:4A:66:32  
            inet addr:10.10.7.51  Bcast:10.10.7.255  Mask:255.255.255.0
            
  #查看节点bo2dbp上集群网络层的配置,网络接口名与实际的网卡名一致
  oracle@bo2dbp:~> oifcfg iflist
  eth2  192.168.7.0
  eth5  10.10.7.0
  
  oracle@bo2dbp:~> oifcfg getif -global  #此处发现网络接口名与实际的网卡名不一致
  eth3  192.168.7.0  global  public
  eth4  10.10.7.0  global  cluster_interconnect

  #查看节点bo2dbs主机上的ip地址
  oracle@bo2dbs:~> ifconfig 
  eth5      Link encap:Ethernet  HWaddr 00:0C:29:27:43:EB  
       inet addr:10.10.7.52  Bcast:10.10.7.255  Mask:255.255.255.0
       
  eth6      Link encap:Ethernet  HWaddr 00:0C:29:27:43:E1 
       inet addr:192.168.7.52  Bcast:192.168.7.255  Mask:255.255.255.0
       
  #查看节点bo2dbp上集群网络层的配置,网络接口名与实际的网卡名一致
  oracle@bo2dbs:~> oifcfg iflist
  eth6  192.168.7.0
  eth5  10.10.7.0
  
  oracle@bo2dbs:~> oifcfg getif -global #此处同样发现网络接口名与实际的网卡名不一致,应该是原来的网络接口名
  eth3  192.168.7.0  global  public
  eth4  10.10.7.0  global  cluster_interconnect
  
  #从上面的情况来看,各个节点的网络接口名不一致,同时网络集群层的配置信息使用了原来的接口名,应当对其更新
  #为了统一网络接口名,下面将其使用统一的名字为bond1, bond2

4、解决故障
  #将网卡统一重命名,方法参照:http://blog.csdn.net/robinson_0612/article/details/8131771
  #下面是重命名后的结果 
  oracle@bo2dbp:~> oifcfg iflist
  bond1  192.168.7.0
  bond2  10.10.7.0     
  oracle@bo2dbs:~> oifcfg iflist
  bond1  192.168.7.0
  bond2  10.10.7.0
  
  #下面的查询中集群层的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
  
  #下面的查询表明crs后台进程正常
  oracle@bo2dbp:~> crsctl check crs
  CSS appears healthy
  CRS appears healthy
  EVM appears healthy
  
  #下面查询的结果还是跟以前一样
  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  
 
  #将所有的资源全部关闭
  oracle@bo2dbp:~> crs_stop -all
 
  #使用oifcfg修改集群层网络配置
  oracle@bo2dbp:~> oifcfg delif -global
  oracle@bo2dbp:~> oifcfg getif -global
  oracle@bo2dbp:~> oifcfg setif -global bond1/192.168.7.0:public
  oracle@bo2dbp:~> oifcfg setif -global bond2/10.10.7.0:cluster_interconnect
  oracle@bo2dbp:~> oifcfg getif -global
  bond1  192.168.7.0  global  public
  bond2  10.10.7.0  global  cluster_interconnect
 
  #reboot之后,资源状态还是跟之前一样
  #先查看vip日志信息,我们先来解决vip的问题
  bo2dbp:/u01/oracle/crs/log/bo2dbp/racg # tail -50 ora.bo2dbp.vip.log
  2012-12-28 11:25:13.783: [RACG][2151948784] [16581][2151948784][ora.bo2dbp.vip]: 
            clsrcexecut: env ORACLE_CONFIG_HOME=/u01/oracle/crs
  
  2012-12-28 11:25:13.783: [RACG][2151948784] [16581][2151948784][ora.bo2dbp.vip]: 
       clsrcexecut: cmd = /u01/oracle/crs/bin/racgeut -e _USR_ORA_DEBUG=0 54 /u01/oracle/crs/bin/racgvip start bo2dbp
  
  2012-12-28 11:25:13.783: [RACG][2151948784] [16581][2151948784][ora.bo2dbp.vip]: clsrcexecut: rc = 1, time = 3.220s
  
  2012-12-28 11:25:16.979: [RACG][2151948784] [16581][2151948784][ora.bo2dbp.vip]:
       clsrcexecut: env ORACLE_CONFIG_HOME=/u01/oracle/crs
  
  2012-12-28 11:25:16.979: [RACG][2151948784] [16581][2151948784][ora.bo2dbp.vip]: clsrcexecut:
       cmd = /u01/oracle/crs/bin/racgeut -e _USR_ORA_DEBUG=0 54 /u01/oracle/crs/bin/racgvip check bo2dbp
  
  2012-12-28 11:25:16.979: [RACG][2151948784] [16581][2151948784][ora.bo2dbp.vip]: clsrcexecut: rc = 1, time = 3.190s
  
  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:23.807: [RACG][695611888] [17488][695611888][ora.bo2dbp.vip]: 
    clsrcexecut: env ORACLE_CONFIG_HOME=/u01/oracle/crs
  
  2012-12-28 11:25:23.807: [RACG][695611888] [17488][695611888][ora.bo2dbp.vip]: clsrcexecut: 
    cmd = /u01/oracle/crs/bin/racgeut -e _USR_ORA_DEBUG=0 54 /u01/oracle/crs/bin/racgvip start bo2dbp
  
  2012-12-28 11:25:23.807: [RACG][695611888] [17488][695611888][ora.bo2dbp.vip]: clsrcexecut:
    rc = 1, time = 3.220s
  
  2012-12-28 11:25:27.018: [RACG][695611888] [17488][695611888][ora.bo2dbp.vip]: clsrcexecut: 
    env ORACLE_CONFIG_HOME=/u01/oracle/crs
  
  2012-12-28 11:25:27.018: [RACG][695611888] [17488][695611888][ora.bo2dbp.vip]: clsrcexecut: 
    cmd = /u01/oracle/crs/bin/racgeut -e _USR_ORA_DEBUG=0 54 /u01/oracle/crs/bin/racgvip check bo2dbp
  
  2012-12-28 11:25:27.018: [RACG][695611888] [17488][695611888][ora.bo2dbp.vip]: clsrcexecut: rc = 1, time = 3.210s
  
  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:33.822: [RACG][3600347632] [18308][3600347632][ora.bo2dbp.vip]: clsrcexecut: 
    env ORACLE_CONFIG_HOME=/u01/oracle/crs
  
  2012-12-28 11:25:33.822: [RACG][3600347632] [18308][3600347632][ora.bo2dbp.vip]: clsrcexecut: 
    cmd = /u01/oracle/crs/bin/racgeut -e _USR_ORA_DEBUG=0 54 /u01/oracle/crs/bin/racgvip start bo2dbp
  
  2012-12-28 11:25:33.822: [RACG][3600347632] [18308][3600347632][ora.bo2dbp.vip]: clsrcexecut: rc = 1, time = 3.210s
  
  2012-12-28 11:25:37.063: [RACG][3600347632] [18308][3600347632][ora.bo2dbp.vip]: clsrcexecut: 
    env ORACLE_CONFIG_HOME=/u01/oracle/crs
  
  2012-12-28 11:25:37.063: [RACG][3600347632] [18308][3600347632][ora.bo2dbp.vip]: clsrcexecut: 
    cmd = /u01/oracle/crs/bin/racgeut -e _USR_ORA_DEBUG=0 54 /u01/oracle/crs/bin/racgvip check bo2dbp
  
  2012-12-28 11:25:37.063: [RACG][3600347632] [18308][3600347632][ora.bo2dbp.vip]: clsrcexecut: rc = 1, time = 3.240s
  
  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.
 
  #接下来查看ons的日志信息
  oracle@bo2dbp:/u01/oracle/crs/log/bo2dbp/racg> tail -20 ora.bo2dbp.ons.log
   
  ............ 
  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
  ons is n
  2012-12-28 11:00:49.345: [    RACG][2554102256] [19071][2554102256][ora.bo2dbp.ons]: ot running ...
  
  2012-12-28 11:00:49.345: [    RACG][2554102256] [19071][2554102256][ora.bo2dbp.ons]: 
    clsrcexecut: env ORACLE_CONFIG_HOME=/u01/oracle/crs
  
  2012-12-28 11:00:49.345: [    RACG][2554102256] [19071][2554102256][ora.bo2dbp.ons]: clsrcexecut: 
    cmd = /u01/oracle/crs/bin/racgeut -e _USR_ORA_DEBUG=0 540 /u01/oracle/crs/bin/onsctl ping
  
  2012-12-28 11:00:49.345: [    RACG][2554102256] [19071][2554102256][ora.bo2dbp.ons]: clsrcexecut: rc = 1, time = 0.210s
  
  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的这个错误,记得之前有类似的情形,之前是在安装的时候碰到的,是由于没有本地回环造成的。
  #这个问题再次出现了,由于从原来的配置复制/etc/hosts时不小心那个地方被注释掉了,汗......
  #具体参考 http://blog.csdn.net/robinson_0612/article/details/6303583
  
  #尝试启动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.
  
  #Author : Robinson
  #Blog   : http://blog.csdn.net/robinson_0612

5、小结
 a、对于RAC环境下虚拟机的迁移之后,首选需要更改各个虚拟机配置文件中所有磁盘的路径(local disk,asmdisk,ocr,votingdisk) 
 b、添加虚拟机方式使用了复制方式(移动方式不确定)后将导致网卡发生变化,主要是保证MAC地址唯一
 c、需要对网络重新进行配置,如果希望使用原来的网络接口名,则重命名或命令行下修改相关配置文件使得保留原有网卡名
 d、如果使用了X window方式修改网络配置,应注意hosts文件是否发生相应的修改
 e、如果使用了新的网络接口名或者新的IP地址,应该重新配置集群网络层
 f、同时也需要将新网络接口名或者新的IP地址更新的OCR
 g、最后一句,从日志来分析与解决问题是源头,是快速定位问题的最佳途径

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏大魏分享(微信公众号:david-share)

从一张图看Devops全流程

一、持续交付工具链全图 ? 上图源自网络。上图很清晰地列出了CD几个阶段使用的工具。 CD的工具链很长,但并不是每个模块所有工具都那么流行;换言之,我们在每个模...

1.7K90
来自专栏游戏杂谈

Flash Pro CS5无法跳过注册Adobe ID的问题

装了N多次卸载了N多次,就是没有上图中的那个“跳过此步骤”,找了N个注册码还是不行。按网上的说明,有两种方式可以解决这个问题:

24620
来自专栏哎_小羊

部署 Kubernetes 集群日志插件 Fluentd、Elasticsearch、Kibana

目录 Kubernetes 日志架构介绍 环境、软件准备 启动 Fluentd 启动 Elasticsearch 启动 Kibana 浏览器添加证书 RBAC...

2.9K90
来自专栏散尽浮华

Docker集群管理工具-Kubernetes部署记录

之前介绍了Mesos+Marathon+Zookeeper管理Docker集群平台的部署 ,本篇则说下利用Kubernetes管理Docker集群环境的部署。 ...

1.7K60
来自专栏腾讯云容器服务团队的专栏

K8s Network Policy Controller之Kube-router功能介绍

Network Policy是k8s提供的一种资源,用于定义基于pod的网络隔离策略。它描述了一组pod是否可以与其它组pod,以及其它network endp...

56410
来自专栏张善友的专栏

服务器同时存在1.1和2.0程序注意事项

Asp.net和asp.net2.0同时部署在服务器上:发生如下错误 Server Application Unavailable The web appli...

19980
来自专栏运维

Openstack G版本 Ubuntu13.04三节点实验记录

本篇文档参考了官网文档(http://docs.openstack.org/),github(https://github.com/mseknibilel/Op...

15420
来自专栏大魏分享(微信公众号:david-share)

隆重介绍!CI/CD手下的开源界六大金刚

Jenkins 2 image based on Red Hat Enterprise Linux的镜像

55830
来自专栏小狼的世界

kubeadm安装kubernetes V1.11.1 集群

如果想要用二进制方法安装最新版本的Docker,可以参考我之前的文章在Redhat 7.3中采用离线方式安装Docker

81310
来自专栏Linux运维学习之路

Docker集群编排工具之Kubernetes(K8s)介绍、安装及使用

K8s基础原理 k8s中文社区:https://www.kubernetes.org.cn/ 简介 Kubernetes与较早的集群管理系统Mesos和YARN...

1.8K50

扫码关注云+社区

领取腾讯云代金券