您的位置:首页 > 数据库 > Oracle

oracle11g rac 如何删除损坏节点并添加新节点

2017-10-25 23:24 351 查看
今天是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.<init>(OiicAddNodeSession.java:133)
at oracle.sysman.oii.oiic.OiicSessionWrapper.createNewSession(OiicSessionWrapper.java:884)
at oracle.sysman.oii.oiic.OiicSessionWrapper.<init>(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新增节点操作。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息