必须按数据库实例→GI配置→物理节点三层顺序清理,漏一层将导致OCR不一致、新节点无法加入或重启失败;先停实例再删,dbca -deleteInstance须在健康节点执行,不能在待删节点本地运行。

不能直接删节点,必须按数据库实例 → GI 配置 → 物理节点三层顺序清理,漏掉任意一层都会导致 OCR 不一致、新节点加不进、或下次重启失败。
先停实例再删,dbca -deleteInstance 必须在健康节点执行
在待删节点本地运行 dbca 会报错 “cannot delete node from itself”;必须切换到其他存活节点(如 rac1)以 oracle 用户执行:
dbca -silent -deleteInstance -nodeList rac3 -gdbName PROD -instanceName PROD3 -sysDBAUserName sys -sysDBAPassword oracle- 执行后立刻验证:
srvctl status database -d PROD -f应只显示剩余实例,v$thread中对应线程数应减少 - 常见错误:-nodeList 值写成主机全名(如
rac3.example.com)但 OCR 里登记的是短名(rac3),导致删不干净 - 若实例状态卡在
OFFLINE但资源未释放,需补跑:srvctl stop instance -d PROD -n rac3再重试
删 GI 层注册前,必须先用 crsctl delete node 清除集群级元数据
deletenode.sh 不是万能钥匙,它只清理本机 OUI 和部分配置;真正从集群视角“拉黑”该节点,得靠 crsctl delete node —— 这步被跳过是后续所有失败的根源。
- 在任意健康节点(如
rac1)以grid用户执行:crsctl delete node -n rac3 - 执行前确认:
olsnodes -n输出中已不含rac3;否则命令会拒绝执行 - 若报
CRS-4639: Could not contact Oracle High Availability Services,说明该节点 CRS 已宕,但 OCR 仍存其记录,此时必须先强制删:crsctl delete node -n rac3 -force - 删完立即检查:
crsctl check cluster -all应不再列出rac3,且crsctl query css votedisk显示投票盘状态正常
runInstaller -updateNodeList 是 OCR 白名单重写,不是刷新缓存
runInstaller -updateNodeList 实质是向 OCR 写入新的 CLUSTER_NODES 列表,漏掉这步,哪怕物理节点已关机,DBCA 仍拒绝在新节点建实例,因为 OCR 还以为它“在线”。
- 在健康节点(如
rac1)以oracle用户执行(不是root,也不是grid): $ORACLE_HOME/oui/bin/runInstaller -updateNodeList ORACLE_HOME=$ORACLE_HOME "CLUSTER_NODES={rac1,rac2}" -silent-
CLUSTER_NODES参数必须**精确匹配 OCR 当前注册的短名**,多一个空格、少一个逗号、含已下线节点(如{rac1,rac2,rac3})都会导致 OCR 校验失败 - 执行后检查:
$ORACLE_HOME/inventory/ContentsXML/install.xml中<node_list>内容是否已更新为仅剩存活节点 - 注意路径:12c 及以后版本必须用
$ORACLE_HOME/oui/bin/,不是$GI_HOME;混用会报ClassNotFoundException
deletenode.sh 必须在待删节点本地执行,且要加 -local 强制绕过 CRS 检查
很多人误在健康节点跑 deletenode.sh,结果只是清了本机缓存,对集群毫无影响。真正清理目标节点 GI 软件,必须在其本地环境操作 —— 即使它已宕机,也要进 rescue 模式或挂载根文件系统后再执行。
- 在
rac3本地以grid用户执行:$GI_HOME/oui/bin/deletenode.sh -local -ignoreSysPrereqs -force -
-local是关键:节点 CRS 不可用时,不加此参数会卡在PRCR-1076: Failed to get resource status - 执行后手动清理四类残留:
/u01/app/19.0.0/grid/cdata/<cluster_name>/rac3/目录、/etc/hosts中该节点所有 VIP 条目、udev 规则中对应 WWID、OCR 备份中旧节点信息(用ocrconfig -showbackup查,必要时ocrconfig -restore) - 特别注意:
deletenode.sh不动监听资源,删完要手动停并禁用:srvctl stop listener -l LISTENER -n rac3、srvctl disable listener -l LISTENER -n rac3
整个过程最易被忽略的点是:OCR 白名单更新和物理节点本地 deletenode.sh 的执行环境。前者决定集群“认不认”这个节点还在,后者决定磁盘上有没有残留 GI 配置 —— 两者缺一,下次加节点或 OCR 自检时必然出问题。


















