Oracle Pre-install RPM 是官方预配置元包,仅自动设置基础内核参数、用户组、目录权限等重复项,不处理 SELinux、防火墙、ASM 或 Grid Infrastructure;适用于 RHEL/CentOS/Oracle Linux x86_64,不支持 Ubuntu/Debian 或 ARM;安装后需手动执行 sysctl --system 并验证关键配置。
能省,但只省「标准 linux 发行版上 oracle database 19c/21c 的基础内核参数、用户组、目录权限」这几类重复劳动。它不是万能补丁,不处理 selinux 策略、防火墙规则、asm 配置或 oracle grid infrastructure 安装本身。
本质是 Red Hat/CentOS/Oracle Linux 官方维护的一个元包(oracle-database-preinstall-21c 或 oracle-database-preinstall-19c),封装了:/etc/sysctl.conf 修改项、/etc/security/limits.d/oracle-database.conf、oracle 用户与 oinstall/dba 组创建、/u01 目录所有权设定等。
sysctl --system
直接 yum install oracle-database-preinstall-21c 很可能失败——因为默认仓库没启用 Oracle 的 Public Yum 或 ULN(Unbreakable Linux Network)源。
正确做法分两步:
dnf install -y oraclelinux-developer-release-el8(EL8)或对应版本启用开发者仓库,再 dnf install -y oracle-database-preinstall-21c
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-oracle,再配置 repo 文件(如 /etc/yum.repos.d/public-yum-ol8.repo),最后安装oracle-database-preinstall-19c 和 oracle-database-preinstall-21c 不能混用;后者默认设 vm.swappiness=1,前者是 vm.swappiness=0
RPM 会写死某些值,但生产环境往往要调整。比如它把 kernel.shmall 设为 2097152,而实际需要按物理内存计算(shmall = total RAM in bytes / page size);又如它创建 /u01 但不格式化或挂载磁盘。
oracle 用户密码为空,必须后续用 passwd oracle 设置,否则 runInstaller 会卡在用户验证ulimit -a 显示的 max locked memory 可能仍是 unlimited,但 Oracle Installer 要求显式设为 unlimited 或数值,需检查 /etc/security/limits.d/oracle-database.conf 中是否含 oracle soft memlock unlimited
systemd-logind,其对 LimitMEMLOCK 的覆盖可能让 limits.d 失效,需额外在 /etc/systemd/logind.conf 中设 LimitMEMLOCK=infinity 并重启 systemd-logind
没有本质妥协,但预设值偏保守:例如 fs.aio-max-nr 设为 1048576(够大多数单实例用),但 RAC 或高并发 OLTP 可能需调到 2097152;net.ipv4.tcp_fin_timeout 保持默认 60,而有些 DBA 习惯调低以更快回收连接。
真正要注意的是:该 RPM 不修改 /etc/hosts,若主机名解析异常(比如 localhost.localdomain 未指向 127.0.0.1),Oracle Installer 仍会报错 PRVF-4657 : Name resolution setup check failed——这个得自己修,RPM 不管。
另外,它从不触碰 /etc/selinux/config,但 Oracle 官方明确要求安装前设 SELINUX=permissive 或 disabled;跳过这步,后续静默安装大概率因 AVC denied 失败。