oracle-database-preinstall包安装用户、内核参数、资源限制及依赖库;不装数据库本体、不配监听、不初始化实例;需匹配OS版本启用对应源,配置需手动生效,SELinux等需自行处理。
oracle-database-preinstall 包到底装了啥
这个包不是 oracle 数据库本体,而是红帽系(rhel/centos/oracle linux)为 oracle-database-server 铺路的一组预配置:用户创建、内核参数(kernel.shmmax、fs.file-max 等)、资源限制(/etc/security/limits.d/oracle-database-preinstall.conf)、依赖的系统库(libaio、compat-libcap1)。它不碰 java、不配监听、也不初始化数据库实例。
常见错误现象:yum install oracle-database-preinstall 报 No package oracle-database-preinstall available —— 这说明你没启用正确的 yum 源,不是包名写错了。
- Oracle Linux 用户:默认已启用
ol7_latest或ol8_baseos_latest仓库,直接yum install即可 - RHEL/CentOS 用户:必须先手动导入 Oracle 官方源,例如下载
oracle-database-preinstall-7.repo并放到/etc/yum.repos.d/,再yum clean all && yum makecache - 注意版本对齐:RHEL 7 对应
oracle-database-preinstall-7,RHEL 8/9 对应oracle-database-preinstall-8或-9,混用会找不到包
为什么装完 preinstall 包后 sysctl 设置没生效
该包把内核参数写进 /etc/sysctl.d/99-oracle-database-preinstall.conf,但不会自动运行 sysctl --system。系统重启前,这些值只在下次启动时才加载,当前会话仍沿用旧值。
- 验证是否写入:运行
cat /etc/sysctl.d/99-oracle-database-preinstall.conf,确认关键项如kernel.sem、vm.swappiness存在 - 立即生效:执行
sudo sysctl --system(不是sysctl -p,后者不读.d/目录下的文件) - 检查是否生效:用
sysctl kernel.sem或sysctl vm.swappiness查看输出值,别只信配置文件存在
limits.d 配置不生效的典型原因
oracle-database-preinstall 创建的 /etc/security/limits.d/oracle-database-preinstall.conf 只对 oracle 用户生效,且要求登录方式是「交互式 shell」(比如 su - oracle 或 ssh 登录),systemd 服务或 sudo -u oracle 直接调命令通常绕过 PAM limits。
- 验证 limits 是否加载:切换到
oracle用户后,运行ulimit -n和ulimit -u,对比配置文件里的数值 - 如果值不对,检查
/etc/pam.d/login或/etc/pam.d/sshd是否包含required pam_limits.so行(多数现代系统默认有,但最小化安装可能缺失) - systemd 服务需单独配置:在 service 文件里加
LimitNOFILE=65536等字段,不能依赖全局 limits.d
preinstall 包和实际 DB 安装版本不匹配怎么办
Oracle 官方严格区分 preinstall 包与数据库主版本。比如用 oracle-database-preinstall-8 装 oracle-database-ee-21c 通常可行,但装 19c 可能缺补丁级适配;反过来,用 -7 包硬装 21c 在 OL8 上会因 glibc 版本冲突失败。
- 查兼容性最准的方式:访问 Oracle Support 文档 ID
2640207.1(“Oracle Database Preinstallation RPMs”),按 OS 和 DB 版本交叉查推荐包名 - 不要只看大版本号:
oracle-database-preinstall-8-21.0.0-1.el8.x86_64.rpm中的21.0.0是配套建议版本,不是强制绑定 - 若必须混用,优先确保内核参数和 ulimit 值满足目标 DB 的
Oracle Database Installation Guide要求,preinstall 包只是捷径,不是不可替代
真正容易被忽略的是:preinstall 包不会修改 SELinux 策略、不会开放防火墙端口、也不会处理 /etc/hosts 里 hostname 解析问题 —— 这些得自己盯紧,否则安装到 80% 才卡在“无法解析本机名”就太晚了。










