不能跳过preinstall包直接安装oracle 21c;必须先用yum install -y一次性装全bc、bind-utils、ksh、libaio、net-tools、policycoreutils-python等22个依赖包,再rpm -ivh preinstall包,否则用户、内核参数、limits均无法配置,导致数据库安装失败。

CentOS 7 安装 Oracle 21c 必须先装对依赖包,否则 oracle-database-preinstall-21c 会直接报错退出,连用户和内核参数都配不了。
rpm 安装 preinstall 包时提示 “依赖检测失败”
这是最常卡住的第一步。官方 oracle-database-preinstall-21c-1.0-1.el7.x86_64.rpm 明确要求一堆系统工具和库,但 CentOS 7 最小化安装默认不带它们。
典型报错如下:
错误: 依赖检测失败: bc 被 oracle-database-preinstall-21c-1.0-1.el7.x86_64 需要 bind-utils 被 oracle-database-preinstall-21c-1.0-1.el7.x86_64 需要 ksh 被 oracle-database-preinstall-21c-1.0-1.el7.x86_64 需要 net-tools 被 oracle-database-preinstall-21c-1.0-1.el7.x86_64 需要 policycoreutils-python 被 oracle-database-preinstall-21c-1.0-1.el7.x86_64 需要 psmisc 被 oracle-database-preinstall-21c-1.0-1.el7.x86_64 需要 smartmontools 被 oracle-database-preinstall-21c-1.0-1.el7.x86_64 需要 sysstat 被 oracle-database-preinstall-21c-1.0-1.el7.x86_64 需要
- 别用
rpm -ivh硬装 —— 缺啥报啥,循环补包太慢 - 直接用
yum install -y一次性装全更稳,yum 会自动解决依赖树 - 必须装的最小集合(实测可过 preinstall 检查):
bc bind-utils glibc-devel ksh libaio libXrender libX11 libXau libXi libXtst libgcc libstdc++ libxcb make net-tools nfs-utils policycoreutils-python psmisc smartmontools sysstat unzip xorg-x11-utils xorg-x11-xauth
执行命令:
yum install -y bc bind-utils glibc-devel ksh libaio libXrender libX11 libXau libXi libXtst libgcc libstdc++ libxcb make net-tools nfs-utils policycoreutils-python psmisc smartmontools sysstat unzip xorg-x11-utils xorg-x11-xauth
为什么不能跳过 preinstall RPM 直接装数据库 RPM
oracle-database-ee-21c 或 oracle-database-xe-21c RPM 本身不校验系统配置,但它依赖 oracle-database-preinstall-21c 创建的用户、目录、内核参数和 limits 设置。跳过会导致:
-
/opt/oracle目录不存在或权限不对,安装中途失败 -
oracle用户没建,ORACLE_HOME初始化脚本找不到运行主体 -
fs.aio-max-nr、kernel.shmmax等未调优,数据库启动后可能 ORA-27123 报内存分配失败 -
/etc/security/limits.conf里nofile/nproc不足,sqlplus / as sysdba连不上
所以顺序只能是:yum install 依赖 → rpm -ivh oracle-database-preinstall-21c → yum install oracle-database-ee-21c。
CentOS 7.9 和 Oracle Linux 7 的兼容性细节
Oracle 官方只正式支持 Oracle Linux 7(OL7),但 CentOS 7.9 实际可用 —— 前提是:
- 用 OL7 对应的 RPM 包:即
oracle-database-preinstall-21c-1.0-1.el7.x86_64.rpm,不是 el8 或 ol8 后缀的 - 禁用 SELinux(
/etc/selinux/config中设为disabled),否则/etc/init.d/oracledb_ORCLCDB-21c configure会卡在 audit 日志拒绝阶段 - 关闭防火墙或放行端口:1521(监听器)、5500(EM Express),否则远程连不上
- 确保
/etc/hosts里有本机 hostname 的完整正向+反向解析,例如:192.168.1.100 host01 host01.localdomain,否则 DB 配置脚本可能 hang 住
真正容易被忽略的是 policycoreutils-python —— 它提供 semanage,preinstall RPM 用它自动加 SELinux 端口规则;CentOS 7.9 默认没装,缺了它不会报错,但后续监听器起不来,排查时容易绕远路。











