本帖最后由 oracle_mao 于 2011-12-21 15:57 编辑
RAC中更改public网卡名字-总结
环境:
由于刚在机器部署的时候,网卡只有一块,在业务运行了一个多月后,打算做双网卡绑定,因此从准备到全部完成历时2周,第一周做准备工作,中间的周六在生产环境操作,随后的时候解决了一些遗留或者突发的问题
RAC:11.2
操作步骤:
1、双网卡绑定步骤:
备注:具体信息请google
2、在做完APA后,网卡名称就改变了,因为需要更换OCR里关于网卡名称的信息
备注:可参照metalink上283684.1文档操作
1)、当在OS上做完APA后,会将机器重启,而在重启以后会发现vip等信息是起不起来的
2)、当OS启动以后,查看crs状态(crsctl stat res -t)
3)、olsnodes -s 检查crs是不是活着的
4)、srvctl status nodeapps 看看vip, scanip是不是活着的
如果活着的就需要停止所有资源vip,scanip
srvctl stop vip -n 节点
srvctl stop scan
备注:一个节点上操作,2个节点上检查
5)、$ id
uid=1100(grid) gid=1010(oinstall) groups=1011(dba),1012(asmdba),1013(asmadmin),1014(asmoper),1015(oper)
—-查看网络配置
$oifcfg getif —-查看网络配置
lan3 172.168.106.0 global cluster_interconnect
lan2 192.168.106.0 global cluster_interconnect
lan10 10.30.48.0 global public—这里现在叫lan10,在做完APA后叫lan900
—-删除lan10在ocr里的信息
$oifcfg delif -global lan10
—设置
$oifcfg setif -global lan900/10.30.48.0
ublic
6)、第5步在一个节点上操作即可,但需要在两个节点上检查
两个节点上检查
oifcfg getif
检查vip的配置
srvctl config nodeapps
7)、使用root修改vip(2个节点都需要操作)
./srvctl modify nodeapps -n host_name -A 10.30.48.44/255.255.255.192/lan900
./srvctl modify nodeapps -n host_name -A 10.30.48.45/255.255.255.192/lan900
备注:-A后接的是VIP,因为VIP是绑定在public的网卡上的,这里主要是改VIP在CRS里的信息
8)、检查是不是vip已经修改了
srvctl config nodeapps
检查scan是不是也修改了
srvctl config vip
9)、重启OS
所遇问题及解决步骤
1、不小心输错IP后导致不能正确显示VIP名称
问题描述:
在执行srvctl modify时,-A后不小心输错了ip,在发现后,马上又执行了一次modify将正确的IP改过去,但是当执行srvctl config nodeapps时发现 :
NODE1#[/u01/grid/bin]./srvctl config nodeapps
VIP exists.:NODE1—下面的96.44应该NODE1-vip的,由于开始输入IP导致无法正常显示
VIP exists.: /NODE1-vip/10.30.48.45/255.255.255.192/lan900
VIP exists.:NODE2
VIP exists.: /10.30.48.43/10.30.48.43/255.255.255.192/lan900
GSD exists.
ONS daemon exists. Local port 6100, remote port 6200
eONS daemon exists. Multicast port 20126, multicast IP address 233.208.57.158, listening port 2016
解决办法:
IP显示不正确,应显示为NODE2-vip,随后我们找到了解决办法:
将vip从crs中remove出去,然后在add回来,步骤如下:
—将vip资源从CRS中remove出去
NODE1#[/u01/grid/bin]./srvctl remove vip -i NODE2-vip
Please confirm that you intend to remove the VIPs NODE2-vip (y/[n]) y
—将vip资源再添加到CRS中
NODE1#[/u01/grid/bin]./srvctl add nodeapps -n NODE2 -A NODE2-vip/255.255.255.192/lan900
—查看资源配置
NODE1#[/u01/grid/bin]./srvctl config nodeapps
VIP exists.:NODE1
VIP exists.: /NODE1-vip/10.30.48.42/255.255.255.192/lan900
VIP exists.:NODE2
VIP exists.: /NODE2-vip/10.30.48.43/255.255.255.192/lan900
GSD exists.
ONS daemon exists. Local port 6100, remote port 6200
eONS daemon exists. Multicast port 15732, multicast IP address 234.31.167.246, listening port 2016
—重启OS
NODE1#[/]shutdown -ry 0
2、VIP资源状态显示failed over
问题描述:
当由于IP不小心输入错误导致不能正常显示VIP名称后,通过remove资源的方式解决,但是在重启OS后这个VIP 的状态竟然是 FAILED OVER的,并且该节点的listener无法启动,导致instance不能正常连接
解决步骤:
—查看资源情况
NODE2#[/u01/grid/bin]./crsctl stat res -t
——————————————————————————–
NAME TARGET STATE SERVER STATE_DETAILS
——————————————————————————–
Local Resources
——————————————————————————–
ora.DATA_ORCL.dg
OFFLINE OFFLINE NODE1
OFFLINE OFFLINE NODE2
ora.LISTENER.lsnr
ONLINE ONLINE NODE1
ONLINE OFFLINE NODE2 —-可以看到这里的监听是offline状态的
ora.OCR_ORCL.dg
ONLINE ONLINE NODE1
ONLINE ONLINE NODE2
ora.REDO_ORCL.dg
OFFLINE OFFLINE NODE1
OFFLINE OFFLINE NODE2
ora.asm
ONLINE ONLINE NODE1 Started
ONLINE ONLINE NODE2 Started
ora.eons
ONLINE ONLINE NODE1
ONLINE ONLINE NODE2
ora.gsd
OFFLINE OFFLINE NODE1
OFFLINE OFFLINE NODE2
ora.net1.network
ONLINE ONLINE NODE1
ONLINE ONLINE NODE2
ora.ons
ONLINE ONLINE NODE1
ONLINE ONLINE NODE2
——————————————————————————–
Cluster Resources
——————————————————————————–
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE NODE1
ora.LISTENER_SCAN2.lsnr
1 ONLINE ONLINE NODE1
ora.LISTENER_SCAN3.lsnr
1 ONLINE ONLINE NODE1
ora.NODE1.vip
1 ONLINE ONLINE NODE1
ora.NODE2.vip
1 ONLINE INTERMEDIATE NODE2 FAILED OVER —问题主要在这里
ora.oc4j
1 OFFLINE OFFLINE
ora.scan1.vip
1 ONLINE ONLINE NODE1
ora.scan2.vip
1 ONLINE ONLINE NODE1
ora.scan3.vip
1 ONLINE ONLINE NODE1
查看nodeapps状态
NODE2#[/u01/grid/bin]./srvctl status nodeapps
VIP NODE1-vip is enabled
VIP NODE1-vip is running on node: NODE1
VIP 10.30.48.43 is enabled—这里还显示是正常的
VIP 10.30.48.43 is running on node: NODE2
Network is enabled
Network is running on node: NODE1
Network is running on node: NODE2
GSD is disabled
GSD is not running on node: NODE1
GSD is not running on node: NODE2
ONS is enabled
ONS daemon is running on node: NODE1
ONS daemon is running on node: NODE2
eONS is enabled
eONS daemon is running on node: NODE1
eONS daemon is running on node: NODE2
尝试解决(试过的方法):
方法一:直接启动listener,报错说VIP已经启动
NODE2#[/u01/grid/bin]./srvctl start listener -n NODE2
CRS-2664: Resource ‘ora.NODE2.vip’ is already running on ‘NODE2’
方法二:将vip在节点NODE2上stop,然后启动listener,报错说failed start ora.NODE2.vip
NODE2#[/u01/grid/bin]./srvctl stop vip -i NODE2-vip
NODE2#[/u01/grid/bin]./srvctl start listener -n NODE2
备注:虽说failed start ora.NODE2.vip吧,但是查看crs状态发现vip还启动了,只是状态还是failedover的,于是找了在另一个好的节点(NODE1)上测试在vip资源online的情况下单独启动listener是可以的,因此判断问题还是出在vip这里,和listener没关系,必须想办法将vip资源启动到online状态
方法三:将坏节点NODE2的cluster重启,问题依旧
NODE2#[/u01/grid/bin]./crsctl stop cluster -n NODE2
NODE2#[/u01/grid/bin]./crsctl start cluster -n NODE2
方法四:重启NODE2的OS,问题依旧
备注:在重启NODE2的时候发现vip确实由NODE2飘到NODE1节点上了,可是状态依旧是failedover的
方法五:将2个节点都重启,问题依旧
方法六:将vip资源从crs中移除,再添加,不过命令多了一个-k参数。问题依旧
NODE1#[/u01/grid/bin]./srvctl remove vip -i NODE2-vip
NODE1#[/u01/grid/bin]./srvctl add nodeapps -n NODE2 -k 1 -A NODE2-vip/255.255.255.192/lan900
备注:还尝试过类似的其他的很多方法,但是都没解决
经历了3天的不断尝试,终于找到办法:
发现苗头:
查看坏节点VIP的资源依赖:
NODE2#[/u01/grid/bin]./crsctl stat res ora.NODE2.vip -p
NAME=ora.NODE2.vip
TYPE=ora.cluster_vip_net1.type
ACL=owner:root:rwx,pgrp:sys:r-x,other::r–,group
install:r-x,user:grid:r-x
ACTION_FAILURE_TEMPLATE=
ACTION_SCRIPT=
ACTIVE_PLACEMENT=1
AGENT_FILENAME=%CRS_HOME%/bin/orarootagent%CRS_EXE_SUFFIX%
AUTO_START=restore
CARDINALITY=1
CHECK_INTERVAL=1
DEFAULT_TEMPLATE=PROPERTY(RESOURCE_CLASS=vip)
DEGREE=1
DESCRIPTION=Oracle VIP resource
ENABLED=1
FAILOVER_DELAY=0
FAILURE_INTERVAL=0
FAILURE_THRESHOLD=0
HOSTING_MEMBERS=node2
LOAD=1
LOGGING_LEVEL=1
NLS_LANG=
NOT_RESTARTING_TEMPLATE=
OFFLINE_CHECK_INTERVAL=0
PLACEMENT=favored
PROFILE_CHANGE_TEMPLATE=
RESTART_ATTEMPTS=0
SCRIPT_TIMEOUT=60
SERVER_POOLS=*
START_DEPENDENCIES=hard(ora.net1.network) pullup(ora.net1.network)
START_TIMEOUT=0
STATE_CHANGE_TEMPLATE=
STOP_DEPENDENCIES=hard(ora.net1.network)
STOP_TIMEOUT=0
UPTIME_THRESHOLD=1h
USR_ORA_ENV=
USR_ORA_VIP=NODE2-vip
VERSION=11.2.0.1.0
查看好节点上的VIP资源依赖:
$ crsctl stat res ora.NODE1.vip -p
NAME=ora.NODE1.vip
TYPE=ora.cluster_vip_net1.type
ACL=owner:root:rwx,pgrp:sys:r-x,other::r–,group
install:r-x,user:grid:r-x
ACTION_FAILURE_TEMPLATE=
ACTION_SCRIPT=
ACTIVE_PLACEMENT=1
AGENT_FILENAME=%CRS_HOME%/bin/orarootagent%CRS_EXE_SUFFIX%
AUTO_START=restore
CARDINALITY=1
CHECK_INTERVAL=1
DEFAULT_TEMPLATE=PROPERTY(RESOURCE_CLASS=vip)
DEGREE=1
DESCRIPTION=Oracle VIP resource
ENABLED=1
FAILOVER_DELAY=0
FAILURE_INTERVAL=0
FAILURE_THRESHOLD=0
HOSTING_MEMBERS=NODE1
LOAD=1
LOGGING_LEVEL=1
NLS_LANG=
NOT_RESTARTING_TEMPLATE=
OFFLINE_CHECK_INTERVAL=0
PLACEMENT=favored
PROFILE_CHANGE_TEMPLATE=
RESTART_ATTEMPTS=0
SCRIPT_TIMEOUT=60
SERVER_POOLS=*
START_DEPENDENCIES=hard(ora.net1.network) pullup(ora.net1.network)
START_TIMEOUT=0
STATE_CHANGE_TEMPLATE=
STOP_DEPENDENCIES=hard(ora.net1.network)
STOP_TIMEOUT=0
UPTIME_THRESHOLD=1h
USR_ORA_ENV=
USR_ORA_VIP=NODE1-vip
VERSION=11.2.0.1.0
从以上来看,发现一个小小的问题—大小写,马上登录其他的测试环境(模拟了2套failover的测试环境)查看发现也是这样的情况,坏节点的是大写,好节点的是小写,并且又查看了正常的rac环境,发现都是小写的,再检查srvctl add vip -h查看-n后面并没说要小写的主机名,所以开始打算这里接小写的主机名试试
步骤如下:
1、srvctl stop vip -n 坏节点
2、srvctl stop nodeapps -n 坏节点
3、srvctl remove vip -i NODE2-vip
4、srvctl add vip -n node2 -k 1 -A NODE2-vip/255.255.255.192/lan900
5、srvctl start nodeapps -n node2
6、crsctl stat res -t
发现vip启动了,并且listener也启动了(这里忘记取listener的状态了~~)
ora.NODE1.vip
1 ONLINE ONLINE NODE1
ora.NODE2.vip
1 ONLINE ONLINE NODE2
ora.oc4j
1 OFFLINE OFFLINE
ora.scan1.vip
1 ONLINE ONLINE NODE1
ora.scan2.vip
1 ONLINE ONLINE NODE1
ora.scan3.vip
1 ONLINE ONLINE NODE1