addnode.sh不支持真正在线加节点,执行时会短暂中断scan vip等资源,且必须满足gi_home预解压、网络互通、时间同步≤1秒、ocr空间≥2gb、集群健康共5项硬性条件。

addnode.sh 不支持真正意义上的“在线”加节点——它要求集群运行中,但执行时会短暂中断 SCAN VIP、GNS、ASM diskgroup 挂载等资源,且必须满足 5 项硬性前置条件。所谓“在线”,只是指数据库实例不需停库,不代表服务零感知。
执行 addnode.sh 前必须确认的 5 个硬性条件
漏掉任意一项,脚本会在中途失败,甚至引发 OCR 锁死或 CRS 启动异常:
-
GI_HOME和ORACLE_HOME在新节点上必须已解压(不能运行root.sh,不能启动任何进程),路径、用户(grid/oracle)、组(oinstall、asmadmin、asmdba)须与现有节点完全一致 - 所有节点(含新节点)的
/etc/hosts解析必须双向通:执行ping -c 3 <hostname></hostname>和nslookup <hostname></hostname>全部成功;DNS 配置不能只写单向解析 - 新节点时间偏差必须 ≤1 秒:用
ntpdate -u <ntp-server></ntp-server>同步后,再比对date输出;CRS 会拒绝加入时间漂移过大的节点 - OCR 和 Voting Disk 所在 ASM diskgroup 必须为
MOUNTED状态且剩余空间 ≥2GB:用crsctl query css votedisk和ocrcheck验证 - 整个集群必须健康:在任一现网节点执行
crsctl check cluster -all全部返回CRS-4638,且无CRS-4000类错误
加节点过程最容易卡住的三个阶段及应对
不是脚本挂了,而是日志没看就干等:
- 卡在
Copying files to remote nodes…:90% 是 SSH 免密未覆盖 root 用户(grid和oracle用户互信 ≠root互信),或新节点防火墙未开放 6200–6400 端口;检查/u01/app/19.0.0/grid/cfgtoollogs/addnode/addnode.log - 卡在
Running root.sh on remote node…:常见于缺失libaio、sysstat包,或内核参数(如kernel.sem)未生效;用rpm -q libaio sysstat和sysctl -p快速验证 - 卡在
Updating OCR with node information…:OCR 正被其他crsctl操作锁定,或新节点grid用户对 OCR 设备权限不足(如 AFD 环境下需chown grid:oinstall /dev/oracleafd/disks/*)
加完节点后必须手动验证的三件事
脚本返回 SUCCESS ≠ 节点真正可用,尤其容易忽略的是 ASM 实例状态和 OCR 注册一致性:
- 在新节点上执行
crsctl check crs,必须返回CRS-4638;若提示CRS-4640,说明 CRS 进程未起来,需查/u01/app/19.0.0/grid/log/<nodename>/crsd/crsd.log</nodename> - 在任意节点执行
olsnodes -s -t,新节点状态必须是Active(不是Inactive或空);若为Unpinned,需补运行crsctl pin css -n <new-node></new-node> - 确认 ASM 实例是否自动启动并挂载 diskgroup:在新节点上连
sqlplus / as sysasm,执行SELECT name, state FROM v$asm_diskgroup;,所有 diskgroup 应为MOUNTED
DB 层添加实例时 dbca -addInstance 的关键约束
很多人以为 GI 加完就万事大吉,其实 DB 实例注册才是客户端连接的最终环节:
-
dbca必须在已有节点(非新节点)上以oracle用户执行,且-nodeName参数必须与olsnodes输出的主机名严格一致(大小写、短横线位置都不能错) -
-instanceName建议直接用节点名(如rac3),避免用orcl3这类自定义名——否则后续srvctl status instance可能识别不到 - UNDO 表空间和在线日志会自动创建,但若原集群启用了
FORCE LOGGING,新实例的归档路径必须与现有节点保持一致,否则ALTER DATABASE ARCHIVELOG会失败
SCAN VIP 是否在新节点上完成 failover 注册。用 srvctl config scan 和 nslookup <scan-name></scan-name> 对照 IP 列表,确保新节点的 SCAN VIP 出现在返回结果中——否则客户端连接可能始终绕不开新节点。











