oracle 11g安装时swap size检查失败,只需临时创建并启用swap文件即可通过校验;报错原因在于其校验逻辑不仅看free -m的total值,还严格读取/proc/meminfo中swapfree及物理内存套用分级公式,且要求swap已激活、优先级≥0、路径持久可访问。
oracle 11g安装时的swap size检查失败,不是必须重装系统或重启,临时创建并启用一个swap文件就能过检。
为什么free -m显示swap够了,安装程序还报错?
Oracle 11g的检查逻辑不只看Swap: total,它会读取/proc/meminfo中的SwapTotal和SwapFree,并结合物理内存大小套用分级公式(比如物理内存在513M–2048M之间时,要求swap ≥ 1.5×物理内存)。即使你当前swap总量达标,若SwapFree偏低(例如被其他进程占满),或安装程序读到的是旧缓存值,也会触发警告。
常见错误现象:Prerequisite Checks页红标提示“SWAP SIZE: Expected 3.74GB, Found 1.94GB”,但free -m输出显示swap total确实是2GB以上。
- 不要依赖图形界面里的系统监视器,一律用
free -m或swapon -s确认真实状态 - 检查是否已有swap被
swapon但未写入/etc/fstab——重启后失效,安装程序可能按“持久可用”标准判断 - CentOS 7+默认启用
systemd-swap或zram时,Oracle可能无法识别,建议禁用后使用传统文件型swap
创建swap文件的dd命令怎么写才不出错?
关键不是“随便写个dd”,而是块大小(bs)和数量(count)要匹配目标大小,且路径要有写权限、所在分区留足空间。用bs=1M count=2048比bs=32k count=65515更直观、更少出错。
实操建议:
- 用root执行:
dd if=/dev/zero of=/tmp/ora_swap bs=1M count=2048(生成2GB文件) - 务必
chmod 600 /tmp/ora_swap,否则mkswap会拒绝处理 - 避免放在
/home或/root下——某些SELinux策略会阻止swap访问;/tmp或/var/tmp最稳妥 - 如果
dd卡住,可能是磁盘I/O慢,加status=progress参数(需coreutils ≥ 8.24)观察进度
mkswap和swapon之后还要做什么?
仅运行mkswap和swapon能让安装程序立刻识别新增swap,但有两个隐形风险点:
- 没加
--no-dev-pg参数时,mkswap可能因设备号问题失败;直接加-f强制覆盖(mkswap -f /tmp/ora_swap)更省事 -
swapon /tmp/ora_swap生效后,必须立刻验证:swapon -s应列出该文件,且free -m中Swap:行的total值已增加 - 安装完成前别关终端——swap文件是临时的,关闭shell不会自动
swapoff,但若系统异常重启,该swap就丢失,再次安装又会失败
示例验证输出:
Filename Type Size Used Priority /dev/dm-1 partition 2097148 0 -2 /tmp/ora_swap file 2097152 0 -3
为什么/etc/fstab里不能直接写/tmp/ora_swap?
因为/tmp在多数现代Linux发行版(包括CentOS 7)中默认挂载为tmpfs,即内存文件系统。写入其中的swap文件会在重启后消失,而fstab在启动早期就读取,此时/tmp可能尚未挂载或为空,导致swapon失败甚至阻塞开机流程。
正确做法:
- 安装阶段:只临时
swapon,不写fstab;安装通过后,再规划永久swap(如独立分区或/var/lib/oracle/swapfile) - 若坚持写
fstab,路径必须落在持久性文件系统上(如/opt/swapfile),且加nofail选项:/opt/swapfile swap swap defaults,nofail 0 0 - Oracle安装完成后,记得
swapoff /tmp/ora_swap && rm /tmp/ora_swap,避免残留大文件占用内存型/tmp
真正容易被忽略的点是:swap文件的IO性能。用dd生成的稀疏文件在机械盘上可能引发大量随机读写,拖慢安装过程;SSD上影响小,但若虚拟机磁盘是qcow2格式且未预分配,仍可能卡顿。遇到安装界面长时间无响应,先iotop看看是不是swap文件正在被频繁刷写。











