Oracle19c集群节点故障恢复:从主机重装到重新加入集群的完整指南

张开发
2026/4/13 9:38:36 15 分钟阅读

分享文章

Oracle19c集群节点故障恢复:从主机重装到重新加入集群的完整指南
1. 故障场景与恢复思路遇到Oracle RAC集群节点故障时很多DBA会感到手足无措。我去年就处理过一个真实案例某金融系统在凌晨突然报警检查发现orcl01节点因磁盘阵列故障完全宕机。这种情况需要先重装主机系统再重新加入集群。整个过程就像给病人做器官移植手术既要确保新器官重装后的节点健康又要保证移植后能与其他器官协同工作。关键恢复原则有三点保持集群配置一致性新节点必须与其他节点保持相同的系统配置彻底清理故障节点残留信息避免旧配置与新节点产生冲突分阶段验证每完成一个步骤都要立即验证不要等全部做完才发现问题常见误区是直接在新主机上安装软件就尝试加入集群这往往会导致各种报错。正确的做法应该像搭积木一样先打好基础系统配置再搭建主体结构集群软件最后完善细节数据库实例。2. 重装后的系统配置2.1 基础环境搭建重装系统后第一件事就是克隆健康节点的环境配置。我习惯用scp把orcl02的配置文件直接拷贝过来# 拷贝多路径配置 scp /etc/multipath.conf rootorcl01:/etc/ # 检查磁盘一致性 fdisk -l | grep -i sd /usr/lib/udev/scsi_id -g -u -d /dev/sd{}网络配置要特别注意VIP和私网IP的设置。有次我漏配了私网IP导致节点间通信异常。hosts文件应该包含这些关键信息10.10.4.26 orcl01 10.10.4.27 orcl02 10.10.4.34 orcl01-vip 192.168.25.1 orcl01-priv2.2 系统参数优化内核参数直接影响数据库性能。我建议直接复制健康节点的配置# 拷贝内核参数 scp /etc/sysctl.conf rootorcl01:/etc/ sysctl -p # 关闭透明大页 echo never /sys/kernel/mm/transparent_hugepage/enabled时间同步是集群稳定运行的关键。有次节点时间不同步导致OCR损坏整个集群瘫痪。配置chrony时要确保所有节点指向相同的时间源systemctl enable chronyd chronyc sources -v3. 清理故障节点信息3.1 删除数据库实例当原节点无法正常运行时需要手动清理其集群信息。先用DBCA删除实例dbca -silent -deleteInstance \ -nodeName orcl01 \ -gdbName orcl \ -instanceName orcl1 \ -sysDBAUserName sys \ -sysDBAPassword 密码特别注意如果实例有活跃服务需要先迁移服务到其他节点srvctl modify service -d orcl -s orclsrv \ -preferred orcl2 \ -available 3.2 彻底清除集群信息删除节点信息就像给集群做减脂手术必须干净彻底# 取消节点pin状态 crsctl unpin css -n orcl01 # 删除节点 crsctl delete node -n orcl01 # 更新GI清单 ./runInstaller -updateNodeList \ ORACLE_HOME$ORACLE_HOME \ CLUSTER_NODES{orcl02} \ CRSTRUE -silent我曾遇到因残留信息导致新节点无法加入的情况后来发现是OCR中还有旧节点的注册信息。这时可以用crsctl query css votedisk检查投票盘状态。4. 重新加入集群4.1 加入前的全面检查就像飞机起飞前要做安全检查加入节点前必须运行CVU验证cluvfy comp peer -refnode orcl02 -n orcl01 cluvfy stage -pre nodeadd -n orcl01常见问题处理如果报SSH互信错误重新执行sshUserSetup.sh如果报时间不同步检查chrony服务状态如果报存储不一致确认multipath配置和磁盘权限4.2 分步加入集群先加入Grid Infrastructureexport IGNORE_PREADDNODE_CHECKSY ./addnode.sh -silent \ CLUSTER_NEW_NODES{orcl01} \ CLUSTER_NEW_VIRTUAL_HOSTNAMES{orcl01-vip}再加入数据库软件# 在oracle用户下执行 ./addnode.sh -silent \ CLUSTER_NEW_NODES{orcl01} \ CLUSTER_NEW_VIRTUAL_HOSTNAMES{orcl01-vip}最后添加数据库实例dbca -silent -addInstance \ -nodeName orcl01 \ -gdbName orcl \ -instanceName orcl1 \ -sysDBAUserName sys \ -sysDBAPassword 密码5. 加入后验证5.1 集群状态检查加入完成后要像医生查房一样全面检查-- 检查实例状态 SELECT inst_id, instance_name, status FROM gv$instance; -- 检查资源状态 crsctl stat res -t重点观察指标所有资源是否都是ONLINE状态实例是否正常注册到集群ASM磁盘组是否正常挂载5.2 服务恢复验证最后一步是恢复原有服务配置srvctl modify service -d orcl -s orclsrv \ -preferred orcl1,orcl2 \ -available 建议进行真实业务测试验证连接池能否正常分配到新节点。我曾经遇到过一个诡异情况虽然集群显示正常但应用连接新节点总会超时。后来发现是防火墙规则没同步导致1521端口被拦截。整个恢复过程就像指挥交响乐团每个乐器节点都要在正确的时间进入。掌握这套方法后处理RAC节点故障就会变得游刃有余。记住关键点配置要一致、清理要彻底、验证要及时。做好这三点就能确保集群恢复万无一失。

更多文章