今天是2017年10月25日,之前遇到一个客户来电,大体问题是:aix 5.3+oracle 11.2.0.1 数据库为rac。其中节点一因为本地主机磁盘损坏,导致aix系统损坏进而导致了oracle rac集群只剩一个节点的故障”
对于该问题,其实很简单,只要在存活节点删除之前数据库实例,在集群中删除故障节点信息后,新增节点即可。但在整个过程中遇到了各类问题(个人根据当时现状了解到,在我接手之前,已经被别人操作了太多东西)。特此记录下当时我处理问题的简要步骤以及遇到的各类问题:
操作步骤:
1、在存活节点查看节点信息是否为unpin状态,如果不是使用下面命令,将节点设置为unpin状态
crsctl unpin css -n(节点主机名)
2、在存活节点使用oracle账号通过dbca删除故障节点实例
3、在存活节点更新列表目录用户为oracle,命令如下:
cd $ORACLE_HOME/oui/bin
gui/bin
./runInstaller -updateNodeList ORACLE_HOME=$ORACLE_HOME "CLUSTER_NODES=zz-pthisd1"
4、使用crsctl stat res -t 查看是否有故障节点vip,如果存在手动删除服务,删除节点
srvctl stop vip -i racsrv4 -f
srvctl remove vip -i racsrv4 -f
crsctl delete node -n racsrv4(删除节点)
cluvfy stage -post nodedel -n raccrsv4(验证节点是否被删除)
5、更新集群列表信息使用grid用户:
cd $ORACLE_HOME/oui/bin
./runInstaller -updateNodeList ORACLE_HOME=/u01/app/11.2.0/grid "CLUSTER_NODES={zz-pthisd1}" CRS=TRUE -silent
6、在新节点创建好对应grid 所使用的目录,创建好oracle 所使用的目录(注意审计目录一定要有)
注意:oraInventory目录不可少,并且是属主为grid用户
7、在存活节点使用grid用户对新增节点进行验证:
./cluvfy stage -pre nodeadd -n zz-pthisd2 -fixup –verbose
验证并确定结果无误后方可执行下步操作(确定好有些问题是否可以忽略)
8、将新增节点加入集群中。执行如下命令:
因为之前已经校验了所以可以设置export IGNORE_PREADDNODE_CHECKS=Y参数
在存活节点进入grid用户执行如下命令:
./addNode.sh -silent \ "CLUSTER_NEW_NODES={racsrv4}" "CLUSTER_NEW_VIRTUAL_HOSTNAMES={racsrv4-vip}" \ "CLUSTER_NEW_PRIVATE_NODE_NAMES={racsrv4-priv}" &>~/add_node.log
正常情况下,会自动将grid的集群软件文件自动复制到新增节点上去。最后会提示在新增节点执root执行root.sh (orainstRoot.sh)
问题1:在执行addnode.sh 失败提示如下:
Error ocurred while retrieving node numbers of the existing nodes. Please check if clusterware home is properly configured.
SEVERE:Error ocurred while retrieving node numbers of the existing nodes. Please check if clusterware home is properly configured.
那么这个时候需要对inventory.xml 这个文件进行检查里面是否home设置正确。或者可以使用
./detachHome.sh 和 ./attachHome.sh 命令进行创建该文件。
但是我发现我重建该文件后,报如下错误:
zz-pthisd1:[grid]:/oracle/soft/grid$cd $ORACLE_HOME/oui/bin
zz-pthisd1:[grid]:/oracle/grid/oui/bin$R_NEW_VIRTUAL_HOSTNAMES={zz-pthisd2-vip}" \ "CLUSTER_NEW_PRIVATE_NODE_NAMES={zz-pthisd2-priv}" &>~/add_node.log <
[1] 22413322
zz-pthisd1:[grid]:/oracle/grid/oui/bin$Starting Oracle Universal Installer...
Checking swap space: must be greater than 500 MB. Actual 2048 MB Passed
zz-pthisd1:[grid]:/oracle/grid/oui/bin$Oracle Universal Installer, Version 11.2.0.1
.0 Production
Copyright (C) 1999, 2009, Oracle. All rights reserved.
Exception java.lang.NullPointerException occurred..
java.lang.NullPointerException
at oracle.sysman.oii.oiic.OiicAddNodeSession.initialize(OiicAddNodeSession.java:528)
at oracle.sysman.oii.oiic.OiicAddNodeSession.(OiicAddNodeSession.java:133)
at oracle.sysman.oii.oiic.OiicSessionWrapper.createNewSession(OiicSessionWrapper.java:884)
at oracle.sysman.oii.oiic.OiicSessionWrapper.(OiicSessionWrapper.java:191)
at oracle.sysman.oii.oiic.OiicInstaller.init(OiicInstaller.java:512)
at oracle.sysman.oii.oiic.OiicInstaller.runInstaller(OiicInstaller.java:968)
at oracle.sysman.oii.oiic.OiicInstaller.main(OiicInstaller.java:906)
SEVERE:Abnormal program termination. An internal error has occured. Please provide the following files to Oracle Support :
" /oracle/app/oraInventory/logs/addNodeActions2017-10-10_01-24-23PM.log"
"Unknown"
"Unknown"
[1] + Done(255) ./addNode.sh
-silent \ "CLUSTER_NEW_NODES={zz-pthisd2}" "CLUSTER_NEW_VIRTUAL_HOSTNAMES={zz-pthisd2-vip}" \ "CLUSTER_NEW_PRIVATE_NODE_NAMES={zz-pthisd2-priv}" &>~/add_node.log
zz-pthisd1:[grid]:/oracle/grid/oui/bin$
zz-pthisd1:[grid]:/oracle/grid/oui/bin$
那么如果出现这类问题,请使用ui登陆系统然后使用grid用户重新执行创建这个xml文件即可。
问题2:在执行root.sh 如果失败
OLR initialization - successful
CRS-2728: A resource type with the name 'ora.daemon.type' is already registered
CRS-4000: Command Add failed, or completed with errors.
CRS-2728: A resource type with the name 'ora.haip.type' is already registered
CRS-4000: Command Add failed, or completed with errors.
CRS-2728: A resource type with the name 'ora.mdns.type' is already registered
CRS-4000: Command Add failed, or completed with errors.
Failed to register Grid Infrastructure type ora.mdns.type at /u01/app/11.2.0/grid/crs/install/crsconfig_lib.pm line 7940.
/u01/app/11.2.0/grid/perl/bin/perl -I/u01/app/11.2.0/grid/perl/lib -I/u01/app/11.2.0/grid/crs/install /u01/app/11.2.0/grid/crs/install/rootcrs.pl execution failed
请使用如下命令执行后重新执行root.sh:
cd /u01/app/11.2.0/grid/crs/install
./rootcrs.pl -deconfig -force
问题3、如果在执行root.sh 将节点加入集群中的时候,莫名奇妙存活节点如果重启那么需要检查设置为asm 磁盘是否为共享读写状态,命令如下:
lsattr –El hdisk5 | grep reserve
如果查看到的是reserve_policy状态,那么需要使用如下命令设置为共享读写:
chdev -l hdisk5 -a reserve_policy=no_reserve
在节点创建完成后,下一步开始创建数据库实例:
9、使用oracle用户执行如下命令:
./addNode.sh -silent "CLUSTER_NEW_NODES={racsrv4}"
完成后执行相应的root.sh 文件
10.创建完成后,需要手动更改下新增节点的密码文件、参数文件名字。
注意:如果使用addnode.sh 命令无法完成,可以直接将oracle软件复制到新增节点(不用执行root.sh)。然后手动将数据库实例和数据库服务的注册到集群中。
至此完成rac新增节点操作。