利用Oracle Pre-install RPM包简化环境预配置流程
时间:2026-07-07 07:06
Oracle数据库预安装RPM包自动配置Linux系统内核参数、用户组和目录权限,简化Oracle19c和21c版本环境预配置。仅支持64位x86架构的RHEL、CentOS、OracleLinux,需要启用官方软件仓库。安装后还需要手动执行sysctl--system命令、设置oracle数据库用户密码、检查limits d文件和SELinux策略,并修复
理解Oracle Pre-install RPM包,许多初次接触的数据库管理员常将其视为“一键部署神器”。坦率地说,它确实能简化工作,但仅限于最基础的重复性任务:在标准Linux发行版上为Oracle数据库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目录的所有权。
当然,它的适用范围有明确边界:
* 仅支持x86_64架构的RHEL 7/8/9、CentOS 7/8、Oracle Linux 7/8/9。
* 不支持Ubuntu/Debian,也不兼容ARM平台(如Oracle Cloud的ARM实例)。
* 安装后系统不会自动reload sysctl,需要手动执行
sysctl --system 才能生效。
### 如何安装?包名与仓库源容易混淆
许多新手直接运行
yum install oracle-database-preinstall-21c,结果遇到报错。这很正常,因为默认仓库中并未启用Oracle的Public Yum或ULN(Unbreakable Linux Network)源。
正确的安装流程分为两步:
* **Oracle Linux用户**:先执行
dnf install -y oraclelinux-developer-release-el8(以EL8为例)启用开发者仓库,然后再运行
dnf install -y oracle-database-preinstall-21c。
* **RHEL/CentOS用户**:首先导入Oracle的GPG key:
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 不能混用。更关键的是,21c版本默认将
vm.swappiness设为
1,而19c版本则为
0,如果您有特定的调优倾向,安装后务必检查确认。
### 装完后是否万事大吉?这些配置仍需人工核实
RPM包会写入一些固定值,但这些值未必适合您的生产环境。例如,它将
kernel.shmall设为
2097152,而实际生产中需要根据物理内存重新计算(公式为
shmall = 总内存字节数 / 页大小)。此外,它会创建
/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,它可能会覆盖limits.d的配置,导致
LimitMEMLOCK失效。解决方法是在
/etc/systemd/logind.conf中补充
LimitMEMLOCK=infinity,然后重启
systemd-logind服务。
### 与手动配置相比,性能或安全有妥协吗?
从性能和安全角度看,没有本质的妥协。但必须承认,RPM包的预设值偏向保守。举例来说,
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拒绝而失败。