Oracle安装失败因系统未启用交换空间,需手动创建swapfile:dd生成、chmod 600、mkswap、swapon,并在/etc/fstab中添加持久化条目。
oracle安装失败时看到 checking swap space: 0 mb available, 150 mb required. failed,说明系统根本没启用任何交换空间——不是不够,是压根没有。必须手动创建并激活一个 swapfile,否则安装程序直接退出,连参数校验都过不去。
为什么free显示Swap为0且swapon -s无输出
这表示系统既没有配置swap分区,也没有挂载swap文件。常见于最小化安装的CentOS/RHEL/Oracle Linux,尤其是VM中快速部署的镜像,默认不配swap。注意:df -h查不到swap,它不占挂载点;ls /swapfile也大概率返回不存在——别猜,直接用swapon -s确认是否为空输出。
dd创建swap文件时的三个关键参数陷阱
命令形如 dd if=/dev/zero of=/swapfile bs=1M count=2048,但容易出错的点在:
-
bs和count乘积必须 ≥ Oracle要求值(通常1.5G起),但别盲目设太大:物理内存超8G时,2G足够;超16G可设4G,再大意义不大 -
of路径不能在/tmp或/home等可能被noexec或nosuid挂载的分区上,推荐根目录下如/swapfile或/usr/local/swapfile - 执行前务必确认目标磁盘剩余空间 ≥ 所设大小:
df -h /,否则dd中途报No space left on device会导致文件损坏
mkswap和swapon必须按顺序执行且权限要锁死
顺序错误或权限宽松会触发警告甚至失败:
- 先运行
chmod 600 /swapfile—— 不是644,也不是755,swapon会拒绝权限过宽的文件 - 再运行
mkswap /swapfile—— 这步不可跳过,否则swapon报swapon: /swapfile: read swap header failed - 最后运行
swapon /swapfile—— 成功后立刻用swapon -s验证,输出里要有/swapfile这一行,Type列是file - 若提示
insecure permissions,别忽略,chmod 600后重试,否则Oracle安装仍可能拒绝识别
临时生效够安装,但永久生效要改/etc/fstab且避免重复挂载
Oracle安装只要swap在当前会话生效即可,但服务器重启后会丢失。要持久化:
- 向
/etc/fstab追加一行:/swapfile swap swap defaults 0 0(注意是0 0,不是O O) - 加之前先确认该行未重复存在,否则
swapon -a会报swapon: /swapfile: swapfile has wrong size - 不要在安装中途执行
swapoff -a && swapon -a,这会中断正在使用的swap,可能导致Oracle静默崩溃 - 验证是否写入成功:
grep swapfile /etc/fstab应有且仅有一行输出
最易被忽略的是chmod 600这一步——很多教程贴完命令就结束,但实际环境中,dd生成的文件默认是644,而swapon从Linux 4.4+开始强制校验权限,不满足就静默失败。装Oracle前花10秒执行ls -l /swapfile确认权限,比装到一半报错重来省半小时。


















