addNode.sh不支持真正在线加节点,执行时会中断SCAN VIP、GNS等服务,且必须满足GI_HOME预解压、网络双向解析、时间偏差≤1s、OCR磁盘组≥2GB、集群健康5项硬性条件。
addnode.sh 和 deinstall -local 是核心入口,但直接跑脚本大概率失败——不是命令不对,而是前置条件没满足。
添加节点前必须手动配置 SSH 等效性
addNode.sh 不会帮你配 SSH,而 Oracle 11gR2 的 OUI 安装界面才提供该功能。
常见错误现象:执行 addNode.sh 卡在 “Checking user equivalence” 或报 PRKC-1025(内存不足)或 CRS-2674(资源启动失败)。
- 必须以 root 用户在**保留节点**上运行两条命令,完成 grid 和 oracle 用户的互信:
ssh-keygen -t rsa -f /root/.ssh/id_rsa -N '' ssh-copy-id -i /root/.ssh/id_rsa.pub grid@new_node_hostname- 验证方式:切换到
grid 用户后,执行 ssh new_node_hostname date 不输密码能返回时间才算成功。
- 注意:oracle 用户也需同样配置,否则第二阶段复制 RDBMS HOME 会失败。
删除节点时 thread 必须先 disable 再 drop
很多人删完实例就停机跑路,结果 OCR 里还留着线程信息,新节点加不进去或 CRS 报ORA-01102。
- 在保留节点以 sysdba 执行:
ALTER DATABASE DISABLE THREAD 1;(假设删的是 thread 1)
- 然后确认:SELECT thread#, status FROM v$thread; 中对应 thread 应为 DISABLED,不能是 CLOSED 或残留 OPEN。
- 若误删了节点但未 disable thread,后续添加节点时 srvctl add instance 会失败,报错含 ORA-01092 或 CRS-2529。
addNode.sh 运行前要调大 JVM 内存
默认JRE_MEMORY_OPTIONS="-mx150m" 在节点数 ≥3 或网络延迟高时必然触发 PRKC-1025(Java heap space),导致脚本中断。
- 修改路径:$GRID_HOME/oui/oraparam.ini
- 将 JRE_MEMORY_OPTIONS 改为 "-mx1024m"(至少 1G)
- 同时设置环境变量跳过预检查(仅限测试环境):export IGNORE_PREADDNODE_CHECKS=Y
- 注意:addNode.sh 必须在 **保留节点的 $GRID_HOME/oui/bin 目录下** 以 grid 用户运行,参数必须用大括号包裹节点名:"CLUSTER_NEW_NODES={rac3}",少一个花括号就解析失败。
真正麻烦的不是步骤多,而是每一步都依赖上一步的精确状态——比如 OCR 备份没做,crsctl delete node 执行一半失败,整个集群可能无法恢复;又比如 runInstaller -updateNodeList 漏掉 CRS=TRUE 参数,inventory 里节点还在,但 CRS 已不认它,后续任何 srvctl 操作都会静默忽略该节点。


















