PRVF-0002 报错本质是 Oracle 安装程序验证主机名解析失败,要求 hostname 命令输出的完整主机名(含域名)和短名必须同时在 /etc/hosts 中与本机真实 IP 映射一致,且 hostname -f 输出须与 hosts 中完整名严格匹配。
PRVF-0002 报错到底在检查什么
这个错误本质是 oracle 安装程序在验证主机名解析时失败,具体指 hostname 命令返回的主机名无法被正向(hostname → ip)和反向(ip → hostname)同时解析成功。它不关心 dns,只查本地 /etc/hosts 和系统主机名配置是否闭环。
/etc/hosts 必须满足的三要素
常见写法如 127.0.0.1 localhost 或只写内网 IP,都会触发 PRVF-0002。正确配置要同时满足:
-
/etc/hosts中必须有一行把本机实际 IP(非127.0.0.1)映射到hostname命令输出的**完整主机名**(含域名,如db01.example.com) - 同一行还必须包含该主机名的**短名**(如
db01),Oracle 会分别用这两个名字去查 - 不能依赖
127.0.0.1行来满足验证——哪怕短名能解析,完整名没配对也会失败
示例正确写法:192.168.5.10 db01.example.com db01
hostname 输出和 /etc/hosts 必须严格一致
Oracle 安装器会调用 hostname 获取主机名,再拿这个字符串去查 /etc/hosts。如果两者不匹配,立刻报错:
- 运行
hostname,看输出是db01还是db01.example.com;多数系统默认输出短名 - 但 Oracle 实际优先尝试完整名(
hostname -f),所以更稳妥的做法是让hostname -f和/etc/hosts中的完整名完全一致 - 修改主机名后必须重启网络服务或 reboot,否则
hostname -f可能仍缓存旧结果 - 某些 Linux 发行版(如 RHEL 8+)默认禁用
hostname -f的 DNS 回退,此时仅靠/etc/hosts正确性才起作用
验证步骤比安装更重要
别等运行 runInstaller 才发现错。提前用这三步确认:
- 执行
hostname和hostname -f,记录两个输出 - 在
/etc/hosts中找一行,是否同时包含这两个输出(顺序不限),且对应的是本机真实 IP(ip addr show查) - 执行
nslookup $(hostname)和nslookup $(hostname -f),两者都应返回同一 IP;若其中任一命令报server can't find,说明解析断了
最容易被忽略的是:虚拟机克隆后没改 /etc/hosts 里的 IP,或者容器环境里 hostname 是随机生成的,但 /etc/hosts 没同步更新。

















