静默安装 Oracle 12c R2 在 CentOS 7 上可行,但必须严格满足内核参数、用户权限、依赖包和响应文件四方面条件;漏掉任意一项都会卡在 runInstaller 启动阶段或中途报错退出。

静默安装 Oracle 12c R2 在 CentOS 7 上可行,但必须严格满足内核参数、用户权限、依赖包和响应文件四方面条件;漏掉任意一项都会卡在 runInstaller 启动阶段或中途报错退出。
检查系统是否满足最低硬性要求
Oracle 12.2.0.1(R2)对 CentOS 7 的实际运行门槛比文档写的高:内存低于 4GB 时 runInstaller 会直接拒绝启动,/tmp 空间不足 1GB 则解压响应阶段失败,而 uname -m 返回非 x86_64 会导致二进制不兼容。
- 执行
grep MemTotal /proc/meminfo,确认值 ≥ 4194304 kB(即 4GB) - 执行
df -h /tmp,确保可用空间 ≥ 1G;若不足,可临时挂载大容量目录到/tmp或设export TMPDIR=/path/to/big/dir - 执行
uname -m,输出必须是x86_64;i686 或 aarch64 均不可用 - 执行
cat /etc/redhat-release,确认是 CentOS Linux release 7.x(7.2+ 更稳妥,7.0/7.1 有已知libstdc++兼容问题)
安装前必须装全的 RPM 包(含 i686 变体)
Oracle 安装器在静默模式下不会提示缺包,而是随机在某个步骤崩溃并输出模糊错误(如 error while loading shared libraries: libaio.so.1),本质是 32 位兼容库缺失。CentOS 7 默认不装 i686 架构包,但 Oracle 12c R2 的监听器和部分工具链强依赖它们。
- 一次性装全(root 执行):
yum -y install binutils compat-libcap1 compat-libstdc++-33 compat-libstdc++-33.i686 gcc gcc-c++ glibc glibc.i686 glibc-devel glibc-devel.i686 ksh libaio libaio.i686 libaio-devel libaio-devel.i686 libgcc libgcc.i686 libstdc++ libstdc++.i686 libstdc++-devel libstdc++-devel.i686 libXi libXi.i686 libXtst libXtst.i686 make sysstat unixODBC unixODBC.i686 unixODBC-devel unixODBC-devel.i686 - 验证是否齐备:
rpm -q binutils libaio-devel libstdc++-devel unixODBC-devel—— 缺任一即重装 - 特别注意:
compat-libstdc++-33在某些最小化镜像中被标记为 “not available”,此时改用yum --enablerepo=base install compat-libstdc++-33
关键配置项不能只写一半
/etc/sysctl.conf 和 /etc/security/limits.conf 是静默安装中最常被抄错的两个文件。少一个参数、拼错一个键名(比如 fs.aio-max-nr 写成 fs.aio-maxnr)、或漏掉 sysctl -p 生效步骤,都会导致 runInstaller 在校验阶段报 PRVF-7532 : Kernel parameter check failed for "xxx" 并终止。
-
/etc/sysctl.conf必须包含(且顺序无关):fs.aio-max-nr = 1048576、fs.file-max = 6815744、kernel.sem = 250 32000 100 128、kernel.shmmni = 4096、kernel.shmall = 2097152、kernel.shmmax = 536870912、net.ipv4.ip_local_port_range = 9000 65500、net.core.rmem_default = 262144、net.core.rmem_max = 4194304、net.core.wmem_default = 262144、net.core.wmem_max = 1048586 -
/etc/security/limits.conf末尾追加(仅对oracle用户生效):oracle soft nofile 1024、oracle hard nofile 65536、oracle soft nproc 16384、oracle hard nproc 16384、oracle soft stack 10240、oracle hard stack 32768 - 执行
sysctl -p && ulimit -Hn验证:后者应输出65536;若仍是 1024,说明 limits 未加载,需确认 oracle 用户登录 shell 是否为/bin/bash且未被/etc/security/limits.d/下其他文件覆盖
响应文件里最容易填错的三个字段
Oracle 提供的模板 db_install.rsp 中,oracle.install.option、ORACLE_HOSTNAME、oracle.install.db.config.starterdb.type 这三项一旦出错,安装器不会报语法错,而是静默跳过数据库建库步骤,最终只剩一个空 ORACLE_HOME。
-
oracle.install.option=INSTALL_DB_SWONLY(仅装软件)或INSTALL_DB_AND_CONFIG(装软件+建库),不能写成INSTALL_DB_SW_ONLY或漏掉大小写 -
ORACLE_HOSTNAME必须与/etc/hosts中第一行 IP 对应的主机名完全一致(区分大小写),且不能带域名后缀(如写oracledb.local而 hosts 里是oracledb就失败) - 若选
INSTALL_DB_AND_CONFIG,则oracle.install.db.config.starterdb.type必须是GENERAL_PURPOSE或DATA_WAREHOUSE,不能填general_purpose(小写)或General Purpose(带空格) - 测试响应文件语法:
./runInstaller -executePrereqs -responseFile /path/to/db_install.rsp -silent—— 成功才代表基础字段无硬伤
真正卡住人的地方不在安装命令本身,而在于 Oracle 静默模式把所有前置校验压缩进一次执行:从内核参数、用户 limits、共享内存段、DNS 反查、到响应文件字段合法性,全部串行校验。任何一个环节失败,它就停在那,不告诉你具体哪一行错了——所以务必按顺序逐项验证,别跳步。











