直接用yum install -y安装oracle-database-preinstall-19c是唯一推荐起点,因rpm -ivh不解析依赖且要求base源可用、系统为CentOS 7.x、禁用dnf;否则必报compat-libcap1等“requires”错误。
直接用 yum install -y 安装 oracle-database-preinstall-19c 包,是唯一推荐的起点;手动 rpm -ivh 几乎必然失败,因为依赖链太深、源配置稍有偏差就卡住。
为什么 rpm -ivh oracle-database-preinstall-19c 会报一堆“requires”错误
这个 RPM 包本身不带任何依赖,只声明需要 compat-libcap1、libaio-devel、ksh、sysstat 等近 20 个包。它依赖 yum 自动解析并拉取——但前提是你的 base 源可用、未被禁用、且包含这些包。
常见断点包括:
-
/etc/yum.repos.d/下没有启用的base或updates源(运行yum repolist应返回非空列表) - 用了阿里云/清华镜像但 repo 配置路径过期(例如仍指向
centos/7/os/x86_64而非centos-vault/7.9.2009/os/x86_64) - 系统是 CentOS 7.9 最小化安装,连
net-tools和bind-utils都没预装,而 preinstall 包明确 requires 它们
正确安装 preinstall 包的三步实操顺序
别跳步,顺序错了后面全乱:
- 先确认系统版本:
cat /etc/redhat-release—— 必须是CentOS Linux release 7.x,不支持 8+ 或 Stream - 确保 yum 可用:
yum clean all && yum makecache,再试yum list available compat-libcap1看能否查到 - 用 yum 直接装远程包(自动处理依赖):
yum install -y https://yum.oracle.com/repo/OracleLinux/OL7/latest/x86_64/getPackage/oracle-database-preinstall-19c-1.0-2.el7.x86_64.rpm
这一步成功后,你会看到 oracle 用户已创建、oinstall/dba 组存在、/etc/sysctl.conf 新增了 fs.aio-max-nr 等参数(但还没生效),/etc/security/limits.d/oracle-database-preinstall-19c.conf 也已写入。
preinstall 包没干完的事,必须手动补
它只做“环境准备”,不是“开箱即用”。以下四件事它完全不管,漏掉任一都会导致后续 /etc/init.d/oracledb_ORCLCDB-19c configure 失败:
-
sysctl -p没执行 → 手动运行一次,让内核参数生效 -
/dev/shm默认挂载 size 不足 → 检查df -h /dev/shm,若小于 4G,需mount -o remount,size=4G /dev/shm并写入/etc/fstab - Transparent HugePages 仍开启 →
cat /sys/kernel/mm/transparent_hugepage/enabled若输出含[always],必须按规范加transparent_hugepage=never到GRUB_CMDLINE_LINUX并重生成 grub 配置 - SELinux 未关闭 →
setenforce 0临时关,再改/etc/selinux/config中SELINUX=disabled
configure 脚本卡住或报错的最常见原因
/etc/init.d/oracledb_ORCLCDB-19c configure 启动后长时间无响应,大概率是下面某个条件不满足:
-
oracle用户家目录/home/oracle权限不对(应为755,且属主是oracle:oinstall) -
/opt/oracle下权限混乱(preinstall 包只设了/u01,但 RPM 安装的二进制默认在/opt/oracle,需手动chown -R oracle:oinstall /opt/oracle) -
/etc/hosts里没把 hostname 解析到本机 IP(比如127.0.0.1 oracle不够,必须是192.168.x.x oracle这种真实网卡地址) - 防火墙开着且没放行 1521 端口 →
systemctl stop firewalld最干脆
真正容易被忽略的是:preinstall 包从不碰 /etc/hosts 和 /etc/hostname,而 Oracle 的 DBCA 在静默初始化时会严格校验主机名解析。哪怕其他全对,这里错一个字符,configure 就会停在 “Setting up Oracle Data Guard…” 之后再也不动。


















