ins-30131错误本质是临时路径不可达而非单纯权限不足:linux需验证tmpdir可写且挂载于真实磁盘(非tmpfs),设对路径、1777权限并用su - oracle -c 'env'确认生效;windows则主因缺失localhost\c$系统共享,须启动server与netbios服务、执行net share c$=c:、验证net use localhost\c$成功。

INS-30131不是权限不足,是路径不可达
这个错误根本不是“没给权限”,而是Oracle安装器根本进不去你指定的临时路径——它试了,失败了,就回退到默认路径(Linux下是/tmp,Windows下是%LOCALAPPDATA%\Temp),再失败就直接报错。所以第一步永远是验证可写性,而不是改chmod或点右键属性。
- Linux:切换到
oracle用户后执行touch $TMPDIR/test(若已设)或touch /tmp/test;失败说明路径不存在、挂载点是tmpfs、磁盘满或权限不对 - Windows:用目标用户(比如
Administrator)登录,手动在%LOCALAPPDATA%\Temp里新建并保存一个文本文件;保存失败,说明UAC、组策略或共享层挡住了 - 无论哪边,该路径所在分区剩余空间必须≥6 GB——Oracle 12c解压时会瞬间写满4 GB以上
Linux下必须用TMPDIR,且得是真实磁盘路径
TEMP或TEMPDIR在Oracle 12c中基本无效,唯一被安装器和底层JDK共同尊重的是TMPDIR。设错路径、权限或调用方式,都会导致静默fallback回/tmp,然后报INS-30131。
- 创建真实磁盘路径:
mkdir -p /home/ora_tmp(不能建在/tmp、/dev/shm或任何tmpfs挂载点上) - 授予权限:
chown oracle:oinstall /home/ora_tmp && chmod 1777 /home/ora_tmp(1777不可省,否则runInstaller拒绝使用) - 切换并设置:
su - oracle后执行export TMPDIR=/home/ora_tmp,再运行./runInstaller - 验证是否真生效:
echo $TMPDIR输出路径 + 安装日志里OraInstall目录出现在/home/ora_tmp下,而非/tmp
Windows下INS-30131主因是C$共享缺失
Windows 10/11的INS-30131绝大多数由“系统默认共享缺失”触发,和UAC关系不大。Oracle安装器内部会尝试通过localhost\C$访问本地C盘临时目录,若该共享不存在,直接报错。
- 启动两个服务:
Server和TCP/IP NetBIOS Helper(仅启用Server不够) - 执行命令验证:
net use localhost\C$;成功返回连接信息才算通过 - 若
C$不存在,运行net share C$=C:创建;不要用图形界面“新建共享”,容易权限配错 - 如果系统已有
C$但被禁用,检查注册表项HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\LanmanServer\Parameters下AutoShareServer和AutoShareWks是否为1
绕过检查只是临时方案,慎用-ignorePrereq
加-ignorePrereq参数能跳过校验,但不解决根本问题。尤其在生产环境,后续可能卡在监听配置、服务注册或数据库启动环节。
- 客户端安装用:
setup.exe -ignorePrereq -J"-Doracle.install.client.validate.clientSupportedOSCheck=false" - 服务端安装用:
setup.exe -ignorePrereq -ignorePrereq -J"-Doracle.install.db.validate.supportedOSCheck=false" - 注意:两次
-ignorePrereq不是笔误,Oracle 12c服务端校验逻辑要求重复传参才生效 - 账户名含中文(如
C:\Users\张三)也会触发INS-30131,此时-ignorePrereq无效,必须换英文账户或改系统用户目录
真正卡住的,往往不是某一步操作没做,而是路径、服务、共享、用户身份这四者没对齐。尤其Windows下localhost\C$连不通,Linux下TMPDIR挂载在tmpfs上,这两类情况最容易反复踩坑。











