Oracle 11g RAC集群删除节点和重建(二)

📅 2026/6/27 23:42:11
Oracle 11g RAC集群删除节点和重建(二)
Oracle 11g RAC集群删除节点和重建二一、前提说明本文章计划删除节点三这一点要注意1、本文章实验在一个4节点RAC集群中删除一个节点实际如果是2节点RAC集群环境步骤基本类似完全可以参考2、实验环境的安装详见我以前的文章《Oracle 11g RAC集群安装_linux7》和《Oracle 11g RAC集群新增节点》3、本文章计划删除节点三这一点要非常注意为了区别上一篇文章《Oracle 11g RAC集群删除节点一》选择删除不同的集群节点4、整个节点删除工作大致围绕三个方面展开删除实例、删除Oracle数据库软件、删除GI软件5、本文章删除节点的方法主要直接通过rm -rf直接删除RAC集群节点GI和oracle自带的卸载工具用于辅助6、在删除节点三后会重建集群即节点四重新加入集群7、另一篇文章《Oracle 11g RAC集群删除节点一》主要通过GI和oracle自带的卸载工具完成节点删除可以参考8、文章适用于Oracle RAC 集群中一个节点故障或损坏需要将该节点从集群中删除并重新替换新增节点9、节点一、节点二、节点四可以统称为保留节点或者存活节点二、背景介绍集群环境配置如下 项目 节点一服务器 节点二服务器 节点三服务器 节点四服务器 主机名 hostrac1 hostrac2 hostrac1 hostrac2 操作系统 centos7.9_x64 centos7.9_x64 centos7.9_x64 centos7.9_x64 集群和数据库软件 Oracle 11.2.0.4 Oracle 11.2.0.4 Oracle 11.2.0.4 Oracle 11.2.0.4 公共网络 192.168.11.22 192.168.11.23 192.168.11.27 192.168.11.28 私有网络 10.10.10.22 10.10.10.23 10.10.10.27 10.10.10.28 虚拟VIP 192.168.11.24 192.168.11.25 192.168.11.29 192.168.11.30 SCANIP 192.168.11.26 备注整个集群两个节点共享一个SCANIP地址。三、准备工作条件允许的情况下强烈建议下面的工作1、备份OCR/OLR集群配置文件2、数据库备份3、软件目录备份四、正式删除节点1、关闭节点三上的RAC集群节点三上执行 root用户执行 /u01/app/crs/bin/crsctl stop crs -f systemctl stop oracle-ohasd.service systemctl status oracle-ohasd.service 如果有残余直接kill掉 ps -ef |grep -v grep|grep -E ohasd|crsd|cssd|evmd|gipcd|gpnpd|mdnsd|diskmon|octssd|orarootagent|oraagent| awk {print $2} | xargs kill -9 2/dev/null2、删除节点三实例在保留节点上执行节点一执行方法一通过dbca图形界面方式完成删除依次选择 Real Application Clusters -- Instance Management --- Delete Instance 方法二dbca静默方式完成删除实例 删除命令 dbca -silent -deleteInstance [-nodeList node_name] -gdbName gdb_name -instanceName instance_name -sysDBAUserName sysdba -sysDBAPassword password node_name 是删除节点名 gdb_name 是全局数据库名 instance 是删除的实例名 sysdba 是拥有sysdba权限的oracle用户名称 passwd 是sysdba用户的密码 具体执行 su - oracle dbca -silent -deleteInstance -nodeList hostrac3 -gdbName orcl -instanceName orcl3 -sysDBAUserName sys -sysDBAPassword oracle 输出类似如下 [oraclehostrac1 ~]$ dbca -silent -deleteInstance -nodeList hostrac3 -gdbName orcl -instanceName orcl3 -sysDBAUserName sys -sysDBAPassword oracle Deleting instance 1% complete 2% complete 6% complete 13% complete 20% complete 26% complete 33% complete 40% complete 46% complete 53% complete 60% complete 66% complete Completing instance management. 100% complete Look at the log file /u01/app/oracle/cfgtoollogs/dbca/orcl0.log for further details.3、检查验证在保留节点上执行节点一、节点二、节点四都可以 su - oarcle srvctl status database -d orcl srvctl config database -d orcl4、删除节点三上GI集群和Oracle数据库软件的相关文件待删除的节点三上执行[roothostrac3 ~]# ls /u01/app/ crs grid oracle oraInventory linux7版本删除下面的相关文件 export ORACLE_BASE/u01/app/grid export GRID_HOME/u01/app/11.2.0/grid export ORACLE_HOME/u01/app/oracle/product/11.2/db_1 rm -rf /u01/app/grid/* rm -rf /u01/app/crs/* rm -rf /u01/app/oracle/* rm -rf /u01/app/oraInventory/* rm -rf /var/tmp/.oracle rm -rf /etc/oraInst.loc rm -rf /etc/oratab rm -rf /etc/oracle rm -rf /opt/ORCLfmap linux6版本删除下面的相关文件 export ORACLE_BASE/u01/app/grid export GRID_HOME/u01/app/11.2.0/grid export ORACLE_HOME/u01/app/oracle/product/11.2/db_1 cd $ORACLE_HOME rm -rf * cd $ORACLE_BASE rm -rf * cd $GRID_HOME rm -rf * rm -rf /etc/rc5.d/S96ohasd rm -rf /etc/rc3.d/S96ohasd rm -rf /rc.d/init.d/ohasd rm -rf /etc/oracle rm -rf /etc/ora* rm -rf /etc/oratab rm -rf /etc/oraInst.loc rm -rf /opt/ORCLfmap/ rm -rf /taryartar/12c/oraInventory rm -rf /usr/local/bin/dbhome rm -rf /usr/local/bin/oraenv rm -rf /usr/local/bin/coraenv rm -rf /tmp/* rm -rf /var/tmp/.oracle rm -rf /var/tmp rm -rf /home/grid/* rm -rf /home/oracle/* rm -rf /etc/init/oracle* rm -rf /etc/init.d/ora rm -rf /tmp/.*5、删除GI软件1 检查被删除节点状态在保留节点上执行节点一、节点二、节点四都可以 [gridhostrac2 ~]$ olsnodes -s -n -t hostrac1 1 Active Unpinned hostrac2 2 Active Unpinned hostrac3 3 Inactive Unpinned hostrac4 4 Active Unpinned2从集群中删除节点三在保留节点上执行节点一、节点二、节点四都可以在保留节点的$ORACLE_HOME/bin目录下运行如下命令在集群中删除节点root用户执行 获取$ORACLE_HOME目录 su - grid env|grep ORACLE_HOME ORACLE_HOME/u01/app/crs root用户执行 /u01/app/crs/bin/crsctl delete node -n hostrac3 输出如下 [roothostrac1 ~]# /u01/app/crs/bin/crsctl delete node -n hostrac3 CRS-4661: Node hostrac4 successfully deleted. 验证 su - grid olsnodes -s -n -t [gridhostrac1 ~]$ olsnodes -s -n -t hostrac1 1 Active Unpinned hostrac2 2 Active Unpinned hostrac4 4 Active Unpinned6、删除节点三残留的资源在保留节点上执行节点一、节点二、节点四都可以查看 crsctl stat res -t ora.hostrac3.vip 1 ONLINE INTERMEDIATE hostrac2 FAILED OVER 节点三的VIP资源残留需要手工删除掉 su - grid 停止节点三的VIP资源 srvctl stop vip -i hostrac3 root用户删除节点三的VIP资源 su - root /u01/app/crs/bin/srvctl remove vip -i hostrac3 再次验证查看 crsctl stat res -t 确保ora.hostrac3.vip资源已经被移除掉 备注如果还有其它资源残留按此方法移除即可7、更新GI集群软件inventory目录在保留节点上都需要执行节点一、节点二、节点四都需要执行更新inventory命令语法 $ORACLE_HOME/oui/bin/runInstaller -updateNodeList ORACLE_HOMEOracle_home_location CLUSTER_NODES{name_of_node_to_delete} 具体如下 su - grid $ORACLE_HOME/oui/bin/runInstaller -updateNodeList ORACLE_HOME$ORACLE_HOME CLUSTER_NODES{hostrac1,hostrac2,hostrac4} CRSTRUE8、更新Oracle数据库软件inventory目录在保留节点上都需要执行节点一、节点二、节点四都需要执行更新inventory命令 $ORACLE_HOME/oui/bin/runInstaller -updateNodeList ORACLE_HOMEOracle_home_location CLUSTER_NODES{remaining_node_list} 具体如下 su - oracle $ORACLE_HOME/oui/bin/runInstaller -silent -updateNodeList ORACLE_HOME$ORACLE_HOME CLUSTER_NODES{hostrac1,hostrac2,hostrac4} -local9、检查集群状态在保留节点上执行节点一、节点二、节点四都可以 su - grid crsctl stat res -t10、验证节点是否删除成功这个步骤关系以后是否可以增加节点到集群中 在保留节点上执行节点一、节点二、节点四都可以 su - grid cluvfy stage -post nodedel -n hostrac3 -verbose11、备份OCR集群配置文件在保留节点上执行节点一、节点二、节点四都可以 su - grid which ocrconfig /u01/app/crs/bin/ocrconfig //获取ocrconfig可执行文件的路径 root用户执行备份 /u01/app/crs/bin/ocrconfig -manualbackup /u01/app/crs/bin/ocrconfig -local -manualbackup 验证备份 /u01/app/crs/bin/ocrconfig -showbackup /u01/app/crs/bin/ocrconfig -local -showbackup 至此完成集群节点删除五、将删除的节点三重新添加至集群准备工作一由于是将删除的节点重新加入下面的准备工作1-17步骤理论上都在安装阶段完成过无需执行1、配置主机名 2、/etc/hosts文件配置 3、集群GI和Oracle数据库安装用户创建 4、创建目录 5、oracle用户和grid用户ssh互信配置 6、共享磁盘配置共享设备与ASM磁盘映射 7、配置ntp时间同步 8、操作系统依赖包安装 9、关闭防火墙和selinux安全策略 10、停止和禁用linux7版本上的一些服务器 11、可选设置linux多用户模式即纯文本模式没有图形界面 12、Linux7版本上关闭透明大页和NUMA 13、grid和oracle用户环境变量配置 14、修改/etc/profile配置文件 15、修改内核参数、操作系统用户限制、安全策略 16、可选内存大于32G建议设置大页,可以参考以前的文章《Oracle11g 安装完毕后的配置优化步骤》 17、重启生效二18-22阶段的5个步骤需要手工执行18、源有环境备份数据库可选强烈建议 19、集群配置文件备份OCR/OLR这个步骤必须执行 节点一完成 su - grid which ocrconfig /u01/app/crs/bin/ocrconfig //获取ocrconfig可执行文件的路径 root用户执行备份 /u01/app/crs/bin/ocrconfig -manualbackup /u01/app/crs/bin/ocrconfig -local -manualbackup 验证备份 /u01/app/crs/bin/ocrconfig -showbackup /u01/app/crs/bin/ocrconfig -local -showbackup 20、/etc/oracle目录下的配置文件备份 源有集群三个节点都执行 tar -zcvf /etc/oracle.tar.gz /etc/oracle 21、备份数据库GI集群、DB数据库软件这个步骤强烈建议执行 22、cluvfy验证添加节点的条件是否满足 节点一完成以grid用户执行 su - grid cluvfy comp peer -n hostrac1,hostrac2,hostrac3,hostrac4 -verbose cluvfy stage -pre nodeadd -n hostrac3 -verbose正式添加节点1、添加GI集群节点节点一执行grid用户 su - grid export IGNORE_PREADDNODE_CHECKSY $ORACLE_HOME/oui/bin/addNode.sh -silent CLUSTER_NEW_NODES{hostrac3} CLUSTER_NEW_VIRTUAL_HOSTNAMES{hostrac3-vip} CLUSTER_NEW_PRIVATE_NODE_NAMES{hostrac3-priv} 最后提示在新节点节点三root用户执行root.sh两个脚本。这个提示需要执行两个脚本 /u01/app/oraInventory/orainstRoot.sh #On nodes hostrac3 /u01/app/crs/root.sh #On nodes hostrac32、检查集群状态可以每个节点都执行检查crsctl stat res -t3、添加DB节点节点一执行以oracle用户执行添加节点到Oracle RAC数据库软件 su - oracle export IGNORE_PREADDNODE_CHECKSY $ORACLE_HOME/oui/bin/addNode.sh -silent CLUSTER_NEW_NODES{hostrac3} 最后提示在新节点节点三root用户执行root.sh两个脚本 /u01/app/oracle/product/11.2/db_1/root.sh4.添加数据库实例节点一执行oracle用户查看数据库配置节点一执行 su - oracle dbca -silent -addInstance -nodeList hostrac3 -gdbName orcl -instanceName orcl3 -sysDBAUserName sys -sysDBAPassword oracle 实例添加后验证: srvctl config database -d orcl|grep Database instances Database instances: orcl1,orcl2,orcl3,orcl45、为新增的节点四数据库实例添加undo及redo如果用使用DBCA可以自动完成创建Undo表空间、Redo日志及配置初始化参数等工作在节点一上执行 su - oracle sqlplus /as sysdba CREATE UNDO TABLESPACE UNDOTBS3 DATAFILE DATA/orcl/datafile/undotbs03.dbf SIZE 50M AUTOEXTEND ON; ALTER DATABASE ADD LOGFILE THREAD 3 GROUP 5 (DATA/orcl/redo05.log) SIZE 50M; ALTER DATABASE ADD LOGFILE THREAD 3 GROUP 6 (DATA/orcl/redo06.log) SIZE 50M; ALTER DATABASE enable THREAD 3; 备注如果当时删除节点时上面的redo、undo都保留且日志线程enable则上面的无需执行6、启动新增的节点三数据库实例启动新的数库实例 srvctl start instance -d orcl -i orcl3 备注条件允许的情况下建议直接将数据库整体来一次重启操作 srvctl stop database -d orcl srvctl start database -d orcl7、最终验证crsctl stat res -t至此完成删除节点的重新加入六、总结将节点三重新加入集群时报错错误类似如下 $ORACLE_HOME/oui/bin/addNode.sh -silent CLUSTER_NEW_NODES{hostrac3} CLUSTER_NEW_VIRTUAL_HOSTNAMES{hostrac3-vip} CLUSTER_NEW_PRIVATE_NODE_NAMES{hostrac3-priv} WARNING: Error while copying directory /u01/app/crs with exclude file list /tmp/OraInstall2026-06-18_03-46-30PM/installExcludeFile.lst to nodes hostrac3. [PRKC-PRCF-2015 : One or more commands were not executed successfully on one or more nodes : null] ---------------------------------------------------------------------------------- hostrac3: PRCF-2014 : Executing command mkdir on inventory failed on node hostrac3. Permission denied PRCF-2014 : Executing command mkdir on assistants failed on node hostrac3. Permission denied PRCF-2014 : Executing command mkdir on bin failed on node hostrac3. 节点三服务器上root用户执行 [roothostrac3 ~]# ll /u01/app drwxrwxr-x. 2 grid oinstall 6 Jun 18 15:14 grid drwxr-xr-x. 3 root oinstall 28 Jun 18 15:14 crs drwxrwxr-x. 2 oracle oinstall 6 Jun 18 15:14 oracle drwxrwx--- 2 grid oinstall 28 Jun 18 15:48 oraInventory chmod 775 /u01/app/crs drwxrwxr-x. 3 root oinstall 28 Jun 18 15:14 crs 修改为775权限否则copy的时候出现mkdir错误 drwxrwxr-x. 2 grid oinstall 6 Jun 18 15:14 grid drwxrwxr-x. 2 oracle oinstall 6 Jun 18 15:14 oracle drwxrwx--- 2 grid oinstall 28 Jun 18 15:48 oraInventory