最稳妥的临时方案是创建文件型swap:dd生成swapfile,chmod设权限,mkswap格式化,swapon启用并确保priority≥0(用-p指定),验证后即可通过Oracle校验。
Oracle安装报错 ERROR: Swap space is insufficient 怎么快速绕过
oracle 安装校验脚本(runinstaller)在启动前会硬性检查 swap 大小,不达标直接终止,哪怕你实际内存足够、也打算关掉 swap。这不是警告,是阻断——所以不能靠“忽略提示”或改 ui 选项解决。
最稳妥的临时方案是加一块基于文件的 swap,不用动磁盘分区,5 分钟内生效:
- 用
dd创建一个大文件:sudo dd if=/dev/zero of=/swapfile bs=1G count=4(按需调count,Oracle 推荐 swap ≥ RAM 的 50%,但至少 2G) - 设权限:
sudo chmod 600 /swapfile - 格式化:
sudo mkswap /swapfile - 启用:
sudo swapon /swapfile
验证是否生效:swapon --show 或 free -h。只要 Swap 行有数值且非 0,runInstaller 就能通过校验。
为什么 swapon /swapfile 后 Oracle 还报 swap 不足
常见原因是 Oracle 校验逻辑只认「已激活且优先级 ≥ 0」的 swap 区,而某些系统默认给文件 swap 设了负优先级(比如 -1),导致 swapon 成功但被跳过。
查当前优先级:cat /proc/swaps,看最后一列 priority。如果为负数,必须显式指定:
- 停用:
sudo swapoff /swapfile - 重启用并设高优先级:
sudo swapon -p 10 /swapfile(-p值越大越优先,≥ 0 即可)
再跑 cat /proc/swaps 确认 priority 是正数。这是最容易卡住的点,很多人以为 swapon 成功就完事了。
装完 Oracle 能不能立刻删 swapfile
可以删,但得等 Oracle 实例真正跑起来之后——不是装完就删,而是等 sqlplus / as sysdba 连上、执行 SELECT status FROM v$instance; 返回 OPEN 再操作。
- 原因:Oracle 安装过程本身不依赖 swap,但部分后台进程(如
oraagent)或后续建库时的临时排序可能触发换页,提前删 swapfile 可能导致 OOM 或静默失败 - 安全删除步骤:
sudo swapoff /swapfile && sudo rm /swapfile - 若要用作长期 swap,加到
/etc/fstab:/swapfile none swap sw,pri=10 0 0
用 LVM 扩容 swap 会比文件方式更稳吗
不会更稳,反而更重、更慢、更容易出错。LVM 方式要涉及 lvextend、mkswap、swapon 多步,且要求原 swap LV 未被占用(意味着得先 swapoff,这在运行中的系统里可能失败)。
文件方式的优势就是「无侵入」:不碰原有分区结构、不依赖 LVM 配置、不重启、不中断服务。唯一代价是多占一点磁盘空间,而 Oracle 安装是临时场景,够用就行。
真正该用 LVM 的场景是:swap 需长期存在 + 主机磁盘已全用 LVM 管理 + 文件方式因文件系统碎片无法分配大块连续空间(极少见)。对绝大多数 Oracle 安装来说,这是过度设计。

















