oracle 23c free安装提示“内存不足”实为swap
安装 oracle 23c free 版时提示“内存不足”,通常不是物理内存真的不够(比如你有 16gb),而是安装程序在检查阶段卡在 prvf-7574(交换空间大小检查失败)或 prvf-7531(物理内存检查失败)这类错误上——根本原因往往是 linux 系统的 swap 分区太小,或内核未启用必要参数,导致 oracle 安装器无法读取内存状态。
为什么 swap 太小会导致安装失败
Oracle 23c 安装器依赖 /proc/meminfo 和 /proc/swaps 输出做先决条件校验。如果 swap 总量低于 2GB(官方最低要求),即使你有充足物理内存,runInstaller 也会直接报错中断,且不给出明确提示。更隐蔽的是:某些云镜像或最小化安装的 Linux(如 Rocky 9、Oracle Linux 8/9)默认只配了 1GB 或干脆没配 swap。
常见错误现象:
PRVF-7574 : 无法在节点上执行交换空间大小检查- 安装界面卡在“正在检查先决条件”并长时间无响应
- 日志中出现
Failed to get swap space information
如何快速验证并扩容 swap 分区
先确认当前 swap 状态:
swapon --show free -h
若输出为空或 SWAP 行显示 0B,说明缺失 swap;若大小 ,需扩容。操作分两步:
- 创建新 swap 文件(推荐,无需重分区):
sudo fallocate -l 4G /swapfilesudo chmod 600 /swapfilesudo mkswap /swapfilesudo swapon /swapfile - 永久生效(写入
/etc/fstab):echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
注意:不要用 dd if=/dev/zero 慢速生成,fallocate 是瞬时分配,且避免触发 ext4 的延迟分配 bug。
内核参数必须启用的关键项
Oracle 安装器还依赖 kernel.shmmax、kernel.shmall 和 vm.swappiness 可读。若这些值被设为 0 或未加载,会导致 PRVF-7531 报错。检查命令:
sysctl kernel.shmmax kernel.shmall vm.swappiness
若报 error: permission denied 或返回空,说明内核模块未加载或参数被锁定。临时修复:
-
sudo sysctl -w kernel.shmmax=4294967296(4GB) sudo sysctl -w kernel.shmall=1048576sudo sysctl -w vm.swappiness=10
永久写入 /etc/sysctl.conf 后运行 sudo sysctl -p 生效。特别注意:shmmax 值不能超过物理内存总量,否则 Oracle 启动实例时会拒绝挂载 SGA。
安装前最后一步:绕过内存检查(仅限开发环境)
如果你已确认 swap ≥ 2G、shmmax 设置合理,但安装器仍因权限或 SELinux 干扰报错,可强制跳过检查(生产环境禁用):
在运行 ./runInstaller 时加参数:./runInstaller -ignorePrereq -J"-Doracle.install.db.validate.supportedOSCheck=false"
这个参数组合能屏蔽所有 OS 层面的先决条件检查,但仅建议用于本地开发机。真实部署必须保证 swap 和内核参数合规,否则后续 memory_target 调整、RMAN 备份、甚至连接数突增都可能触发静默崩溃。











