必须分三步走:先在健康节点执行crsctl delete node逻辑下线并清理OCR注册;再在故障节点本地以root运行$GI_HOME/oui/bin/deletenode.sh -local清理OUI和本地配置;最后在健康节点执行runInstaller -updateNodeList同步OCR与inventory节点列表。

不能只在故障节点上跑 deletenode.sh,它根本不会生效,甚至会破坏 OCR 状态。必须分三步走:先在健康节点逻辑下线节点并清理 OCR 注册;再在失效节点本地清理 OUI 和本地配置;最后在健康节点同步 OCR 与 inventory 节点列表。
crsctl delete node 必须在健康节点执行
crsctl delete node -n <node_name> 是唯一能从集群心跳注册、OCR 节点列表、CRS 元数据中抹掉该节点的命令,但它只能在其余在线节点上运行。常见错误是误以为“节点挂了就不用管”,结果 srvctl config database -d orcl 仍显示旧实例名,后续加节点或 DBCA 操作全失败。
- 执行前确认:
olsnodes -n输出里还包含待删节点名(否则说明 OCR 已认为它离线,此步可跳过) - 待删节点状态必须为
OFFLINE或完全不可达(crsctl check cluster -all显示CRS-4639或超时) - 绝对不能在失效节点本机执行——它连 CRS 进程都起不来,命令会报
PRCR-1076或直接 hang 住
deletenode.sh 必须加 -local 且在故障节点本地执行
当节点已宕机但磁盘仍可访问(如通过 rescue 环境挂载根文件系统),必须用 -local 强制绕过 CRS 检查。漏掉这个参数会导致报错 PRCR-1076 : Failed to get resource status。
- 路径必须准确:
$GI_HOME/oui/bin/deletenode.sh(12c 及以后),不是$ORACLE_HOME/oui/bin/ - 执行前确保
/etc/oracle/olr.loc和/etc/oracle/ocr.loc已清空或重命名,否则脚本因读取本地 OCR 配置失败而中止 - 它只处理 OUI 注册和部分配置文件,以下四类残留必须手动清理:
/u01/app/19.0.0/grid/cdata/<cluster_name>/<node_name>/目录、/etc/hosts中 VIP/SCAN/GNS 条目、/etc/udev/rules.d/99-oracle-asmdevices.rules中该节点 WWID 规则、OCR 备份中旧节点信息(ocrconfig -showbackup查)
OCR 资源残留必须用 crsctl delete resource -f 清理
如果 srvctl remove instance -d orcl -i orcl2 报 “instance does not exist”,说明 OCR 里还有残留资源记录。这不是因为实例真没了,而是 OCR 未同步、实例名大小写/拼写不匹配或实例未停用。
- 先查资源名:
crsctl stat res -w "TYPE = ora.database.type" | grep -A 2 orcl,找到类似ora.orcl.orcl2.inst的条目 - 执行:
crsctl delete resource ora.orcl.orcl2.inst -f - 若对应 ASM 实例也残留,一并删:
crsctl delete resource ora.rac2.ASM2.asm -f - VIP 同理:
crsctl delete resource ora.rac2.vip -f - 注意:这些操作不自动更新
srvctl config database输出,必须配合下一步的runInstaller -updateNodeList才算真正完成
runInstaller -updateNodeList 是最后也是最关键的一步
crsctl delete node 只删集群注册表中的节点条目,不碰 OCR 里的数据库配置。OCR 中的节点列表由安装时写入,后续增删节点必须显式调用该命令同步。漏掉这步,哪怕节点物理已下线,srvctl config database 仍显示旧节点,DBCA 也会拒绝新建实例。
- 在剩余健康节点上,以
oracle用户执行:$ORACLE_HOME/oui/bin/runInstaller -updateNodeList ORACLE_HOME=$ORACLE_HOME "CLUSTER_NODES={node1,node2}" -silent -
CLUSTER_NODES里只列剩下的节点,不能留空或写错名 - 执行后检查
$ORACLE_HOME/inventory/ContentsXML/install.xml,确认<node_list></node_list>下只剩目标节点
最常被忽略的是:OCR 资源清理和 updateNodeList 必须成对出现。只删资源不更新节点列表,或只更新列表不删资源,都会导致集群元数据不一致——这种问题在重启 GI 或添加新节点时才爆发,排查成本极高。


















