Oracle 11g安装报“物理内存不足”或PRVF-7531错误,多因读取/proc/meminfo失败:Linux下常因cgroup/虚拟化导致MemTotal虚低,Windows下则因c$共享关闭致WMI查询失败;正确绕过需严格使用./runInstaller -ignorePrereq _IGNORE_PREREQ=TRUE,装后须立即检查alert.log中的ORA-27102与ORA-04031错误并调整SGA等参数。

物理内存检测失败不是真缺内存,而是读取 /proc/meminfo 失败
Oracle 11g 安装器在 Linux 上报 “物理内存不足” 或 PRVF-7531 错误,90% 以上不是内存真的不够,而是它读 /proc/meminfo 时被干扰:cgroup v2、容器环境、虚拟化层(如 Docker/LXC)常会把 MemTotal 显示成远低于宿主机的值(比如 16GB 宿主机显示为 980MB),触发误判。Windows 上则常见于 c$ 共享被禁用,导致安装器无法调用 WMI 查询内存——此时实际值显示为 N/A,而非具体数字。
./runInstaller -ignorePrereq _IGNORE_PREREQ=TRUE 必须严格按序书写
这个命令是绕过检查最直接有效的办法,但顺序和写法错一个就失效:
-
-ignorePrereq是开关,必须放在最前 -
_IGNORE_PREREQ=TRUE必须紧接其后,不能用空格隔开、不能加引号、不能写成_IGNORE_PREREQ= true - 环境变量方式无效:
export _IGNORE_PREREQ=TRUE启动./runInstaller时会被清空,安装器根本不读 - 静默安装时也一样,例如:
./runInstaller -ignorePrereq _IGNORE_PREREQ=TRUE -silent -responseFile /path/to/db.rsp
绕过后必须立刻验证 ORA-27102 和 ORA-04031
跳过检查 ≠ 资源够用。安装完成不代表实例能起来,这两个错误一出现,说明运行时内存确实撑不住:
-
ORA-27102: out of memory:SGA 分配失败,大概率是SGA_MAX_SIZE设得太大,需调小或改用手动内存管理(AMM 关闭) -
ORA-04031: unable to allocate x bytes of shared memory:共享池碎片或不足,可临时加大SHARED_POOL_SIZE,长期应查 SQL 硬解析是否过多 - 务必翻
$ORACLE_BASE/diag/rdbms/<sid>/<sid>/trace/alert_<sid>.log</sid></sid></sid>,只搜这两条错误,别等监听起不来再查
Windows 下真正要修的是 c$ 共享,不是加参数
如果 Windows 安装时提示 PRVF-7531 且“实际值: N/A”,基本就是 c$ 默认共享被关闭了。这不是 Oracle 的 bug,是系统安全策略导致的:
- 以管理员身份运行:
net share c$=c:(恢复 C 盘默认共享) - 重启系统,避免后续 DBCA 创建数据库时报同样错误
- 不要试图用
-ignorePrereq,Windows 版安装器不认这个参数 - IPC$ 共享不需要打开,
c$恢复即可,无需额外开放命名管道
SGA_TARGET、MEMORY_TARGET 这些参数若仍按宿主机规格设,在容器或低配 VM 里必然崩。装完第一件事不是连 SQL*Plus,是看 alert.log。


















