必须分三步走:先在健康节点执行crsctl delete node -n <node_name>逻辑下线节点并清理OCR注册;再在失效节点本地运行$GI_HOME/oui/bin/deletenode.sh -local清理OUI和本地配置;最后在健康节点执行runInstaller -updateNodeList同步OCR与inventory节点列表。
节点已宕机,但集群仍在运行:先清理残留资源
只要存活节点还能访问 ocr 和 voting disk,就能安全删掉故障节点。关键不是“能不能删”,而是删完会不会让集群变单点或引发 ocr 损坏。常见错误是跳过 crsctl unpin css -n <node> 直接删节点,结果报 crs-4661: node <node> is pinned。
- 先确认节点状态:
olsnodes -s -t—— 如果目标节点显示Inactive Pinned,必须先执行crsctl unpin css -n <node> - 停掉该节点所有集群资源(即使它已关机):
srvctl stop nodeapps -n <node> -f,否则后续crsctl delete node会卡住 - 手动清理 VIP(如果还残留在 CRS 中):
srvctl stop vip -n <node>→srvctl remove vip -n <node> -f - 最后删节点:
crsctl delete node -n <node>,成功后olsnodes输出里不应再出现该节点
Oracle 和 Grid 的 inventory 必须分别更新
很多人只更新了 Oracle Home 的节点列表,忘了 Grid Home,结果新加节点时 addNode.sh 报 CRS-2610 或找不到 OCR。两个 home 的 updateNodeList 命令不能合并、不能省略任何一项。
- Grid 用户执行:
cd $GRID_HOME/oui/bin; ./runInstaller -updateNodeList ORACLE_HOME=$GRID_HOME "CLUSTER_NODES={node1,node2}" CRS=TRUE -silent -local - Oracle 用户执行:
cd $ORACLE_HOME/oui/bin; ./runInstaller -updateNodeList ORACLE_HOME=$ORACLE_HOME "CLUSTER_NODES={node1,node2}" CRS=TRUE -silent -local - 注意:
CLUSTER_NODES参数值必须是存活节点的主机名列表(逗号分隔、大括号包裹),不能带空格,也不能包含已删除节点 - 执行后检查
$ORACLE_HOME/inventory/ContentsXML/comps.xml和$GRID_HOME/inventory/ContentsXML/comps.xml,确认<NODE_LIST>里只有当前节点
添加新节点前,OS 层信任和目录结构必须提前对齐
加节点失败 70% 出在 OS 配置不一致:SSH 免密没通、/u01/app/grid 权限不对、ASM 磁盘路径未映射、甚至时区不同步都会导致 addNode.sh 在“Checking user equivalence”阶段失败。
- grid 和 oracle 用户都需配置 SSH 互信(含私网地址):
ssh rac1-priv date、ssh rac1 date必须无密码返回时间 - 新节点上创建目录并授权:
mkdir -p /u01/app/11.2.0/grid /u01/app/oracle/product/11.2.0/db_1,然后chown -R grid:oinstall /u01/app/11.2.0/grid、chown -R oracle:oinstall /u01/app/oracle - 确保新节点的
/etc/hosts包含所有 RAC 节点的 public、private、VIP、SCAN 地址,且顺序与原节点完全一致 - 务必验证 ASM 磁盘可见性:
ls -l /dev/asm*或udevadm info --name=/dev/asm-diskb | grep ID_SERIAL,确保磁盘名和权限与原节点一致
addNode.sh 执行时最容易忽略的环境变量
addNode.sh 是静默脚本,出错不会直接告诉你缺什么,只会卡在某个 pre-check。最常被漏掉的是 IGNORE_PREADDNODE_CHECKS=Y 和 ORACLE_HOME 指向错误路径。
- 必须用 grid 用户执行,且
ORACLE_HOME必须指向 Grid Home(不是 DB Home) - 加上
IGNORE_PREADDNODE_CHECKS=Y环境变量绕过部分网络校验(尤其当新节点尚未配置 VIP 时):export IGNORE_PREADDNODE_CHECKS=Y - 命令示例:
cd $GRID_HOME/oui/bin; ./addNode.sh -silent "CLUSTER_NEW_NODES={rac3}" "CLUSTER_NEW_VIRTUAL_HOSTNAMES={rac3-vip}" "CLUSTER_NEW_PRIVATE_NODE_NAMES={rac3-priv}" - 执行后不要立刻跑
root.sh—— 先看日志:$GRID_HOME/cfgtoollogs/addNode/addNode.log,确认 “Cluster Node Addition Summary” 下没有 FAILED 条目
ORA-15032,根本看不出是时区惹的祸。


















