可行,但必须安装libnsl、libnsl.i686、compat-libstdc++-33等兼容包,设置CV_ASSUME_DISTID=OL7,使用-ignorePrereq和-ignoreSysPrereqs跳过预检,并确保responseFile中oracle.install.option、UNIX_GROUP_NAME、INVENTORY_LOCATION等字段准确无误。

runInstaller 静默安装 Oracle 19c 在 RHEL 8 上是可行的,但必须绕过几个关键检查点,否则会卡在预检失败(PRVF-0002、PRVF-0657 等)或直接退出。
为什么 runInstaller -silent 会失败?
RHEL 8 默认启用 libnsl 的新版本(libnsl2),而 Oracle 19c 安装程序硬依赖旧版 libnsl.so.1;同时,RHEL 8 的 glibc 和 libstdc++ 版本也触发兼容性警告。官方文档未明确支持 RHEL 8,但实测加 -ignorePrereq + 补全缺失库可跑通。
必须提前装的兼容包(缺一不可)
仅靠 oracle-database-preinstall-19c 不够,它不包含 RHEL 8 所需的兼容层:
dnf install -y libnsl libnsl.i686 libnsl2 libnsl2.i686-
dnf install -y compat-libstdc++-33(注意:RHEL 8 默认不提供,需从 EPEL 或 Oracle Linux 8 源获取) dnf install -y bc binutils elfutils-libelf-devel fontconfig-devel ksh libaio-devel libXrender-devel libXtst libxcb make sysstat unzip
若提示 Package compat-libstdc++-33 is not available,先启用 EPEL:dnf install -y epel-release,再重试。
responseFile 关键字段不能照搬模板
Oracle 提供的 db_install.rsp 模板在 RHEL 8 上容易因路径或权限问题失效。必须手动确认以下三项:
-
oracle.install.option=INSTALL_DB_SWONLY(先只装软件,别选CREATE_AND_CONFIGURE_DATABASE) -
UNIX_GROUP_NAME=oinstall(必须与实际组名一致,groupadd oinstall后检查getent group oinstall) -
INVENTORY_LOCATION=/u01/app/oraInventory(该路径需由root创建并chown oracle:oinstall)
漏掉 INVENTORY_LOCATION 权限会导致 OPatch failed with error code 254 —— 这个错误日志里不提示根本原因,只报 patch 失败。
静默执行命令要带两个强制开关
即使所有前置都做完,runInstaller 仍会因内核参数或用户限制报错。必须显式忽略:
./runInstaller -silent -responseFile /path/to/db_install.rsp -ignorePrereq -ignoreSysPrereqs
注意:-ignorePrereq 绕过所有操作系统兼容性检查(包括 libnsl 缺失),-ignoreSysPrereqs 跳过内核参数校验(如 fs.aio-max-nr 值是否达标)。这两个参数缺一不可,且顺序无关。
RHEL 8 上最易被忽略的是:安装完软件后,root.sh 必须在 /u01/app/oracle/product/19.0.0/dbhome_1 目录下运行,而不是在解压目录里 —— 错位置会导致后续 dbca 找不到 Oracle Home。


















