INS-32047错误真实原因是软链接目标路径字符级不匹配,而非路径非本地;需确保$ORACLE_BASE、$GRID_HOME、$ORACLE_HOME在所有节点上经readlink -f解析后输出完全一致(含末尾斜杠),同时检查OS标识、响应文件OSDBA_GROUP字段及系统组权限。
INS-32047不是路径“非本地”,而是软链接目标不一致
这个错误提示 “the path specified for the oracle base is not valid. the path must be a local path on the node.” 容易让人误以为是挂载了nfs或asm导致的,但真实原因几乎全是软链接目标路径字符级不匹配。oracle rac静默安装时,runinstaller 或 cluvfy 会调用 readlink -f $oracle_base 获取真实路径,并严格比对所有节点输出——哪怕只差一个末尾斜杠或大小写,就直接报 ins-32047。
- 执行
readlink -f $ORACLE_BASE、readlink -f $GRID_HOME、readlink -f $ORACLE_HOME,三者必须在所有节点上输出完全相同的字符串(包括路径末尾是否带/) -
$ORACLE_BASE环境变量值 ≠ 实际软链接目标:例如你设了export ORACLE_BASE=/u01/app/oracle,但该路径本身是个软链接,真正要校验的是它指向的终极物理路径 - 避免跨文件系统创建软链接:比如从
/u01指向/opt/oracle,即使两个目录内容镜像,readlink -f结果也不同
CentOS 7 上 INS-32047 常与 OS 校验失败交织出现
CentOS 7 虽然二进制兼容 RHEL 7,但 Oracle 19c 安装器内置白名单只认 ID="ol" 或 ID="rhel",而 CentOS 的 /etc/os-release 中是 ID="centos"。这会导致 supportedOSCheck 失败,进而触发一系列连锁报错,其中 INS-32047 可能是次要表现,实际根因是系统身份未被认可。
- 临时绕过:修改
/etc/os-release,把ID=centos改成ID=ol(仅用于安装阶段,安装后建议恢复) - 更稳妥做法:使用
response file显式跳过 OS 检查,添加参数oracle.install.responseFile=<path></path>并在响应文件中设置oracle.install.db.skipPrereqs=true - 注意:跳过检查不等于忽略依赖,仍需手动确保
libnsl、内核参数、ulimit 等满足要求,否则后续静默安装可能卡在其他环节
db_install.rsp 中 OSDBA_GROUP 未填也会伪装成 INS-32047
某些情况下,安装器在解析响应文件时遇到关键字段缺失(如 oracle.install.db.OSDBA_GROUP),会提前终止并抛出 INS-32047 这类“路径无效”的模糊错误,实际和路径毫无关系。这是响应文件配置疏漏的典型伪装现象。
- 检查
db_install.rsp是否包含且未被覆盖的以下行:oracle.install.db.OSDBA_GROUP=dba、oracle.install.db.OSRACDBA_GROUP=racdba、UNIX_GROUP_NAME=oinstall - 响应文件中同一参数若多次出现,以**最后一处非空值**为准;前面填了后面留空,等于没填
- 确认
dba、racdba等组真实存在于/etc/group,且oracle用户属于这些组(id oracle可验证)
别被 ORA-32047 混淆:SQL 里的 WITH 子句错误无关安装
如果你在数据库运行后执行 SQL 时看到 ORA-32047(注意是 ORA- 前缀),那和安装阶段的 INS-32047 完全无关。前者是 CTE(WITH 子句)语法错误,比如引用了未定义的 CTE 别名,或递归查询中锚点与递归成员结构不一致。
-
INS-开头的错误只出现在安装器(OUI / runInstaller)日志里,属于部署阶段 -
ORA-开头的错误出现在数据库实例日志或 SQL*Plus 报错中,属于运行时 SQL 解析失败 - 排查
ORA-32047应聚焦 SQL 本身:注释掉部分 CTE、检查别名拼写(含双引号)、确认递归查询中SEARCH和CYCLE引用的列真实存在
readlink -f 和 id oracle,比反复重装高效得多。











