能,但必须用19.3.0.0.0或更高补丁版本(如19.21+),仅支持RHEL 8.2–8.9;RHEL 8.10未认证,改内核版本号无效,runInstaller硬校验redhat-release和uname -r。

Oracle 19c 在 RHEL 8 上能直接装吗?
能,但必须用 19.3.0.0.0 或更高补丁版本(如 19.21+),且仅支持 RHEL 8.2–8.9。RHEL 8.10 尚未被 Oracle 官方认证,oraInst.loc 和安装校验会失败。别信“改内核版本号就能绕过”的操作——runInstaller 在启动时硬校验 /etc/redhat-release 内容和 uname -r 输出,改了也卡在 pre-check 阶段。
RHEL 8 安装前必须装哪些依赖包?
用 dnf 装,别用 yum(RHEL 8 默认已弃用)。漏掉任意一个都可能让 runInstaller 报 PRVF-0001 或静默安装中途退出:
-
bc,binutils,elfutils-libelf,elfutils-libelf-devel -
fontconfig-devel,glibc,glibc-devel,ksh -
libaio,libaio-devel,libXrender,libX11,libXau,libXi,libXtst,libgcc -
make,net-tools,openssl-devel,smartmontools,sysstat,tar,unixODBC,unixODBC-devel
注意:compat-libstdc++ 在 RHEL 8 中已被移除,强行安装 CentOS 7 的 rpm 会导致 glibc 冲突,直接跳过即可。
为什么静默安装总卡在 root.sh 执行?
Oracle 19c 开始支持 root script 自动化,但默认不启用。如果你没在响应文件里显式配置,runInstaller 会挂起等待人工执行 /u01/app/oraInventory/orainstRoot.sh 和 /u01/app/oracle/product/19c/dbhome_1/root.sh —— 这不是 bug,是设计行为。
解决方法:在响应文件中加这两行:
oracle.install.db.rootconfig.executeRootScript=true oracle.install.db.rootconfig.configMethod=ROOTSCRIPT
同时确保 oracle 用户对 /u01/app/oraInventory 和 $ORACLE_HOME 有读写权限,且 root 用户能无密码执行 sudo(否则 root.sh 会因权限拒绝失败)。
安装后监听器起不来,报 TNS-12547?
这基本是 SELinux 或 Avahi 导致的。RHEL 8 默认开启 SELinux enforcing 模式,而 Oracle 19c 的 lsnrctl 启动时会尝试绑定 1521 端口并访问 /dev/shm,SELinux 策略默认禁止。
临时方案(验证用):setenforce 0;生产环境必须用:
semanage port -a -t oracle_port_t -p tcp 1521semanage fcontext -a -t oracle_home_t "/u01/app/oracle/product/19c/dbhome_1(/.*)?"restorecon -Rv /u01/app/oracle/product/19c/dbhome_1
另外,avahi-daemon 服务会抢 localhost 解析,导致 tnsnames.ora 里的 HOST=localhost 解析成 IPv6 地址,监听器绑定失败。停掉它:systemctl disable --now avahi-daemon,再清空 /etc/hosts 中多余的 ::1 localhost 行。
真正麻烦的不是步骤多,而是每个环节都依赖前序配置的精确性:内核参数没调对,dbca 创建库时会提示共享内存不足;/dev/shm 大小小于 sga_max_size,实例根本起不来;响应文件里少一个等号,静默安装就静默失败,还只报错 INFO: Validating response file... 然后退出。


















