直接安装oracle-database-preinstall-19c报依赖错误,因其仅声明依赖而不自带底层包,若yum源缺失compat-libcap1、libaio-devel等或源失效,安装即失败;须先确认系统为RHEL/CentOS/Oracle Linux 7.x、base源可用且使用yum而非dnf。
为什么直接装 oracle-database-preinstall-19c 会报依赖错误
因为这个 rpm 包本身不包含所有底层依赖,它只负责“声明依赖”并触发系统包管理器去拉取。如果 yum 源里缺了 compat-libcap1、libaio-devel 这类基础开发库,或者源配置失效(比如阿里云镜像 repo 路径过期),yum install oracle-database-preinstall-19c 就会卡在 “error: package: … requires …” 上。
手动补全依赖前必须确认的三件事
别急着 yum install,先检查:
- 当前系统是否为 RHEL/CentOS/Oracle Linux 7.x ——
oracle-database-preinstall-19c不支持 8+,也不兼容 Ubuntu/Debian -
/etc/yum.repos.d/下是否有可用 base 源(运行yum repolist看是否返回非空列表) - 是否已禁用
dnf并确保用的是yum(RHEL 8+ 默认 dnf,但 preinstall 包只适配 yum)
绕过依赖检查的实操底线:何时能加 --nodeps
仅当满足以下全部条件时,才可安全使用 --nodeps 强制安装 preinstall 包:
- 你已手动执行过
yum install -y bc gcc gcc-c++ libaio-devel ksh sysstat unixODBC-devel等核心包 -
/etc/sysctl.conf和/etc/security/limits.conf已按 Oracle 要求预设好关键参数(如kernel.shmmax、oracle hard nofile) - 你清楚
--nodeps不会帮你创建oinstall/dba组或oracle用户 —— 这些仍需手动补做
命令示例:rpm -ivh --nodeps oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm
Preinstall 包真正自动化的部分有哪些
它只做四件事,且全部不可跳过:
- 修改
/etc/sysctl.conf,追加fs.aio-max-nr=1048576等 8 条内核参数(但不会执行sysctl -p) - 写入
/etc/security/limits.d/oracle-database-preinstall-19c.conf,覆盖nproc/nofile限制(比手改limits.conf更干净) - 自动创建
oinstall、dba组(但不创建oracle用户) - 设置
/dev/shm挂载选项为size=4G(若未挂载则静默失败,需手动补挂)
注意:oracle-database-preinstall-19c 不关防火墙、不改 SELinux、不处理 Transparent HugePages —— 这些仍是你的责任。
实际部署中最容易被忽略的点是:preinstall 包写进 limits.d/ 的配置文件,只有新登录的 oracle 用户会生效;已存在的会话或 su 切换的 session 需要重新登录,否则 ulimit -n 仍显示旧值。











