addnode.sh不是远程一键加节点工具,要求新节点预装GI、网络/权限/时间就绪,且执行中会短暂中断SCAN VIP和GNS;漏掉任一硬性准备(GI_HOME解压未root.sh、hosts双向解析、NTP≤1s、OCR磁盘组已挂载≥2GB、集群健康)将导致静默失败。
addnode.sh 不是“远程一键加节点”的工具,它要求新节点已预装 gi、网络/权限/时间全部就绪,且执行过程会短暂中断 scan vip 和 gns 等服务。
addnode.sh 前必须手动完成的 5 项硬性准备
漏掉任意一项,脚本会在不同阶段静默失败或中途退出:
-
GI_HOME和ORACLE_HOME必须已在新节点上解压(如/u01/app/19.0.0/grid),但不能运行过root.sh,也不能启动任何 CRS 进程 - 所有节点(含新节点)的
/etc/hosts必须双向解析:用ping -c 3 rac3和nslookup rac3在每个现有节点上都得通,反向 PTR 记录也需匹配主机名(Oracle 12c+ 默认校验) - 新节点时间必须与集群 NTP 源偏差 ≤1s:执行
ntpdate -u后再用date对比确认 - OCR 和 Voting Disk 所在 ASM diskgroup(如
+OCR)必须 MOUNTED 且剩余空间 ≥2GB;可用crsctl query css votedisk和ocrcheck验证 - 现有集群必须健康:
crsctl check cluster -all全部通过,无CRS-4639或CRS-4000类错误
执行 addnode.sh 时最常卡住的三个位置及排查方式
不是脚本卡死,而是底层条件没满足,日志才是关键:
- 卡在
Copying files to remote nodes…:检查 SSH 免密是否真正生效 —— 在已有节点上运行ssh -o ConnectTimeout=5 -o BatchMode=yes rac3 date,必须返回时间且无密码提示;同时确认新节点防火墙放行 6200–6400 端口 - 卡在
Running root.sh on remote node…:查看/u01/app/19.0.0/grid/cfgtoollogs/addnode/addnode.log,常见原因是缺libaio、sysstat,或内核参数(如kernel.sem)未 reload;RHEL8+ 还要确认asmfilterdriver已启用并加载 - 卡在
Updating OCR with node information…:OCR 正被其他进程锁定(比如另一个crsctl操作正在跑),或新节点上grid用户对 OCR 设备无读写权限 —— 执行ls -l /dev/oracleasm/disks/*,权限应为grid:oinstall,否则chown grid:oinstall /dev/oracleasm/disks/*
addnode.sh 成功后必须手动补的三件事
脚本返回 0 ≠ 新节点真正可用,以下步骤跳过会导致 CRS 起不来、ASM 挂不上、实例连不上:
根据 package.json 中的 engines 字段自动检测 Node.js 版本需求,未安装 nvm 时自动安装并切换至对应版本。支持 Windows、macOS、Linux。适用于 Node.js 项目开发、版本切换和环境配置。
- 必须切到
root用户,在新节点上手动执行/u01/app/19.0.0/grid/root.sh(路径以你的 GI 安装路径为准)—— 它配置ocrconfig、启动ohasd,漏掉就永远CRS-4639 - ASM 实例默认不会自动启动:先确认
crsctl query css votedisk输出是否含 ASM,若是,运行srvctl start asm -n rac3;Flex ASM 场景下还需先srvctl add asm -n rac3 - 数据库实例不会自动注册:用
dbca -silent -addInstance或手工srvctl add instance -d,再-i -n rac3 srvctl start instance;否则crsctl stat res -t | grep db里根本看不到该实例
监听无法连接(ORA-12514)和 OCR 权限错的根本原因
这两个问题几乎总是源于同一类疏忽:新节点上 grid 用户的环境变量污染或磁盘设备不可见。
-
ORA-12514表面是监听没注册服务,实际常因grid用户的.bash_profile里误设了ORACLE_HOME指向 DB HOME,导致监听启动时加载错的库;应确保其只设ORACLE_HOME=/u01/app/19.0.0/grid,且不 source 任何数据库环境脚本 -
Cannot access OCR location或ORA-15032多因新节点未同步 udev 规则或未执行oracleasm scandisks;检查/dev/asm*是否存在,asmcmd lsdg是否报错,若无输出,说明底层磁盘未识别
真正容易被忽略的是:addnode.sh 从不验证新节点的 multipath 配置、AFD 状态、透明大页(THP)是否禁用。这些不在它的检查清单里,但任一缺失都会让 CRS 启动失败,且错误日志极其隐晦 —— 最稳妥的做法是,把正常节点的 /etc/multipath.conf、/etc/udev/rules.d/99-oracle-asmdevices.rules、/sys/kernel/mm/transparent_hugepage/enabled 全部原样复制过去再操作。










