oracle 19c安装需绕过硬编码校验:rhel 8/9等设cv_assume_distid=ol8;麒麟v10改/etc/os-release为id="rhel"、version_id="8.6"并删/etc/redhat-release;响应文件中oracle.install.db.checkforossupport=false;命令行必须用-ignoreprereq -responsefile -silent且-ignoresysprereqs不可少。

Oracle 19c 官方未将 RHEL 8/9、CentOS Stream、Kylin、Windows 11 等系统列入白名单,安装器会在启动早期直接拒绝——这不是配置问题,而是硬编码校验失败。必须组合环境变量、响应文件修改和命令行参数才能绕过。
设置 CV_ASSUME_DISTID 或修改 /etc/os-release
Oracle 安装器通过 CV_ASSUME_DISTID 环境变量或读取 /etc/os-release 中的 ID 字段判断发行版。两者选其一即可,但不能共存(否则优先级混乱):
- RHEL 8/9、Oracle Linux 9、AlmaLinux 9 等:执行
export CV_ASSUME_DISTID=OL8(注意是 OL8,不是 OL9;19c 不识别 OL9) - Kylin V10、UOS、统信等国产系统:备份并覆盖
/etc/os-release,确保含ID="rhel"和VERSION_ID="8.6"(值必须 ≥8.4,8.0 会触发二次校验失败) - 若系统同时存在
/etc/redhat-release,必须删除或重命名它——Oracle 会优先读此文件,且不支持其中的非白名单字符串
响应文件中必须关闭 OS 支持检查
仅靠命令行加 -ignorePrereq 不生效,db_install.rsp 必须显式禁用操作系统校验逻辑:
- 找到并修改
oracle.install.db.checkForOSSupport=true→ 改为false - 确认
oracle.install.db.DiskSpaceCheck=false已设为false(否则磁盘空间不足时仍中断) - 删掉或注释掉
oracle.install.db.config.starterdb.characterSet这类预设项,避免字符集校验连带失败 - 必须保留
oracle.install.db.config.starterdb.password.ALL=your_password,否则跳过检查后卡在密码验证环节
runInstaller 命令参数顺序与强制开关缺一不可
-ignorePrereq 和 -ignoreSysPrereqs 是两个独立开关,且顺序敏感:
-
-ignorePrereq必须放在-responseFile之前,写成./runInstaller -ignorePrereq -responseFile /path/db.rsp -silent才有效;反之则被忽略 -
-ignoreSysPrereqs用于跳过内核参数(如fs.aio-max-nr)、用户限制(ulimit -n)等系统级检查,不加它,即使 OS 校验过了也会在后续阶段报PRVF-0657或INS-32035 - 图形界面安装不支持这两个参数,仅限
runInstaller -silent场景
Windows 11 上 INS-30131 的特殊处理
Windows 11 的 INS-30131 错误本质是注册表版本号匹配失败,不是兼容性缺陷:
- 安装器从
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion读取CurrentVersion和CurrentBuildNumber,拼成类似10.0.22631的字符串 - 该字符串需严格匹配
database\stage\prereq\os\*.xml中定义的白名单节点,Win11 的 build 号不在其中 - 临时方案:编辑
database\stage\prereq\os\oracle.server.xml,在<operating_system></operating_system>节点下手动添加对应10.0.22631的条目(注意 XML 格式闭合) - 更稳妥做法:改用
dbca -J-Doracle.assistants.dbca.validate.ConfigurationParams=false绕过 DB 创建阶段的校验(适用于已装好软件、只缺建库的情况)
绕过检查只是让安装流程跑通,不代表环境真正就绪。比如 /dev/shm 容量不足 4GB、SELinux 启用未配策略、ulimit -n 未设为 65536,这些都会在实例启动或监听器绑定时暴露为 ORA- 错误,日志里却不会提示根源——得倒查 $ORACLE_BASE/cfgtoollogs/ 下的 installActions.log 和 trace 文件。











