需在refhost.xml的<CERTIFIED_SYSTEMS>节点内添加对应Windows版本的<OPERATING_SYSTEM><VERSION VALUE="x.x"/></OPERATING_SYSTEM>节点,并同步更新oraparam.ini中[Certified Versions]节的Windows=列表,确保版本号一致、XML格式合法、文件编码为UTF-8无BOM,且所有路径下的refhost.xml均被修改。
Oracle 安装程序在 Windows 上会读取 refhost.xml 文件做操作系统认证,若系统版本(如 Windows 7 是 6.1、Windows 10 是 10.0)未被列出,就会报“检查操作系统认证,错误”。这个文件位于解压后的安装包路径中,常见位置是:databasestageprereqdbrefhost.xml(11g/12c)或 win64refhost.xml(某些旧版)。
打开该文件,在 节点内添加对应版本节点即可。例如 Windows 7(内核 6.1)需加:
<OPERATING_SYSTEM><VERSION VALUE="6.1"/></OPERATING_SYSTEM>
Windows 10(内核 10.0)则用:
<OPERATING_SYSTEM><VERSION VALUE="10.0"/></OPERATING_SYSTEM>
部分 Oracle 版本(尤其是 10g 和早期 11g)还会检查 oraparam.ini 中的 [Certified Versions] 小节。该文件通常位于:databaseinstalloraparam.ini。
找到 Windows= 这一行,把缺失的版本号追加进去。例如原内容是:
Windows=5.0,5.1,5.2
要支持 Windows 7/8/10,应改为:
Windows=5.0,5.1,5.2,6.1,6.2,10.0
# 开头的行是注释,确保你改的是有效行10.0
Windows= 行,手动添加整行(不要漏掉等号)Linux 环境下 Oracle 不检查 VER 命令,而是依赖 /etc/redhat-release、/etc/os-release 和 uname -r 输出。常见失败场景是 CentOS 8+ 或 Rocky Linux 等新发行版未被 refhost.xml 认可。
解决方式不是硬改 refhost.xml(它只对 Windows 有效),而是通过环境变量欺骗检查脚本:
export ORACLE_HOSTNAME=localhost(避免主机名含下划线或大写)echo "CentOS release 7.9 (Core)" > /tmp/redhat-release && export REDHAT_RELEASE_FILE=/tmp/redhat-release
export CV_ASSUME_DISTID=OL7(表示 Oracle Linux 7)或 CV_ASSUME_DISTID=RHEL7
注意:这些变量只影响预检脚本,不影响实际安装逻辑;但若跳过检测后运行时缺依赖,仍会崩溃。
即使正确修改了配置文件,仍可能失败,原因往往藏在细节里:
refhost.xml 被多个路径重复引用:比如 11g R2 安装包里同时存在 stage/prereq/db/refhost.xml 和 stage/prereq/database/refhost.xml,两个都得改databaseinstall.oui 目录(隐藏目录),或清空临时目录 %TEMP%OraInstall*
setup.exe,且关闭实时防护ver 查看真实内核号,别只看“关于 Windows”里的显示名称最易被忽略的是:Oracle 某些补丁集或 RU 更新会自带新的 refhost.xml,覆盖你之前的手动修改。每次打补丁前,记得重新校验该文件。