oracle安装提示磁盘空间不足,主因是/tmp挂载为tmpfs(默认1–2gb),而安装需4–6gb;应设置tmpdir指向真实磁盘路径(如/home/ora_tmp),避免直接扩容tmpfs引发oom或系统假死。
安装 oracle 时提示磁盘空间不足,绝大多数情况不是根分区或 /u01 等主安装路径真的满了,而是安装程序在解压、编译、链接阶段大量使用系统临时目录(默认是 /tmp),而该目录通常挂载在内存文件系统(tmpfs)上,默认只分配 1–2 gb,远低于 oracle 19c/21c 安装所需的 4–6 gb 临时空间。
为什么 df -h /tmp 显示空间不足但 df -h / 很充裕
/tmp 在多数现代 Linux 发行版(如 RHEL 8+/Oracle Linux 8+)中默认是 tmpfs 类型,即基于内存/交换的虚拟文件系统,大小硬编码在内核参数或 /etc/fstab 中,和磁盘总空间无关。执行 df -T /tmp 可确认类型;若输出中 Type 列为 tmpfs,那它上限就是内存配额,不是磁盘容量。
- 典型表现:
df -h /tmp显示只有 1.5G,但df -h /显示还有 50G 剩余 - 根本原因:Oracle 安装包(尤其是
linuxx64_19c_database.zip)解压后内容超 3GB,runInstaller还需额外空间做编译缓存、JNI 构建、JRE 提取等 - 注意:
rm -rf /tmp/*通常无效——因为/tmp是空的,真正占满的是安装进程在/tmp/OraInstall*下创建的千级子目录与临时文件,且进程退出前不会自动清理
设置 TMPDIR 环境变量是最稳妥的绕过方式
Oracle 安装器(runInstaller)和底层 JDK 都会优先读取 TMPDIR,其次才是 TEMP 和系统默认 /tmp。只要指向一个真实磁盘路径(非 tmpfs),就能立即生效,无需重启或改系统配置。
- 先创建目标目录(确保有写权限且所在分区剩余 ≥6G):
mkdir -p /home/ora_tmp && chown oracle:oinstall /home/ora_tmp && chmod 1777 /home/ora_tmp - 切换到 Oracle 安装用户(如
oracle),在启动安装前设置:export TMPDIR=/home/ora_tmp - 验证是否生效:
echo $TMPDIR应输出路径;再运行runInstaller,观察日志里OraInstall目录是否出现在新路径下 - 不要只设
TEMP:部分 Oracle 版本(如 19c)对TEMP支持不一致,TMPDIR是更可靠的环境变量
直接扩容 /tmp 的风险与限制
用 mount -o remount,size=4G /tmp 或修改 /etc/fstab 加 size=4G 虽然能解决,但存在明显隐患:
- 如果物理内存 + 交换空间总和小于指定 size(比如设了 4G 但内存仅 2G+swap 1G),
tmpfs会因 OOM 被内核 kill,导致安装中断甚至系统假死 -
remount操作要求/tmp当前未被任何进程占用,而 Oracle 安装过程中很可能已有子进程锁住它,命令会报错busy - 修改
/etc/fstab后必须重启才生效,对生产环境或自动化部署不友好 - 某些云主机(如 AWS EC2)的
/dev/shm或/tmp默认极小(100MB),且无法通过常规 mount 扩容,只能换路径
真正容易被忽略的点是:即使你清空了 /tmp、设置了 TMPDIR,如果 Oracle 用户的 shell 配置文件(如 ~/.bash_profile)里有 unset TMPDIR 或覆盖性 export TMPDIR=/tmp,安装时仍会 fallback 到原路径。务必在执行 runInstaller 前,用 env | grep -i tmp 确认变量值已正确继承。










