Oracle 11g安装先决条件检查失败主因是检测链中断:Linux因cgroup/虚拟化致/proc/meminfo中MemTotal虚低或缺失,Windows因c$共享关闭或Server服务未运行导致读取为N/A;须严格按序执行./runInstaller -ignorePrereq _IGNORE_PREREQ=TRUE(环境变量无效),装后立即核查alert.log中ORA-27102与ORA-04031错误并调优内存参数。

Oracle 11g 安装时先决条件检查失败的常见原因
绝大多数“先决条件检查失败”不是硬件真不达标,而是 Oracle Installer 读不到它想读的信息——尤其是 MemTotal、c$ 共享、系统服务状态这些关键项。它不报具体数值(比如显示“预期值: N/A,实际值: N/A”),基本就能断定是检测链断了。
为什么 /proc/meminfo 里 MemTotal 显示为 N/A 或虚低
在 Linux 容器或虚拟化环境中,Oracle Installer 会直接读取 /proc/meminfo,但 cgroup 限制或 hypervisor 干预可能导致 MemTotal 被截断或归零。例如宿主机有 16GB,容器内 cat /proc/meminfo | grep MemTotal 却只输出 MemTotal: 0 kB 或根本没这行——Installer 就判定“物理内存不足”,触发 prvf-0001 错误。
-
_IGNORE_PREREQ=TRUE环境变量无效:Installer 启动时主动清空所有以下划线开头的变量,export 没用 - Windows 下同理:Installer 依赖
c$共享来探测本地资源,若Server服务未运行或AutoShareWks=0,就拿不到内存/CPU/磁盘等任何指标 - 注册表改完不重启,
net share仍看不到C$,Installer 还是读不到
为什么 Windows 上 net share c$=c: 有时也不管用
单独执行 net share c$=c: 只是临时挂载,如果 LanmanServer 服务本身被禁用,或者 AutoShareWks 注册表项为 0,下次重启后自动失效。Installer 在启动瞬间检查,此时共享可能已消失。
- 必须确保
Server服务处于“正在运行”状态(不是“自动”,而是“已启动”) -
AutoShareWks和AutoShareServer两个注册表 DWORD 值都要设为1,路径是HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\LanmanServer\Parameters - 改完注册表必须重启,否则
net share输出里不会出现C$、ADMIN$、IPC$ - 安装程序
setup.exe必须“以管理员身份运行”,否则即使共享存在,也无法访问
绕过检查后最容易忽略的运行时问题
跳过先决条件 ≠ 实例能跑起来。很多用户装完立刻建库,结果 dbca 报错或实例启动失败,因为 Installer 的检查和 DBCA 的检查是两套逻辑,-ignorePrereq 对后者无效。
-
dbca静默建库时,必须重复加参数:dbca -ignorePrereq -ignorePrereqFailure ... - 装完必须立刻查
$ORACLE_BASE/diag/rdbms/<sid>/<sid>/trace/alert_<sid>.log,重点搜ORA-27102(内存分配失败)和ORA-04031(共享池不足) - 监听器配置容易写死容器内 IP 或 localhost,导致外部连不上,
lsnrctl status报TNS-12545时,要手动改$ORACLE_HOME/network/admin/listener.ora中的HOST为0.0.0.0或宿主机真实 IP -
memoryLimit在响应文件db.rsp中建议设为1024(单位 MB),避免 DBCA 再次校验失败


















