根本原因是Oracle安装器通过localhostC$以SMB协议访问临时目录失败,而非路径不存在;具体表现为Server服务未运行、C$共享缺失或权限不足、TMPDIR配置不当或路径含空格/超长。

为什么Oracle安装报“找不到指定的临时目录”不是路径不存在
根本原因不是C:WindowsTemp或%TEMP%不存在,而是Oracle安装器(OUI)在尝试通过\localhostC$访问该路径时被系统拒绝——它走的是SMB共享协议,不是直接文件IO。哪怕目录真实存在、权限也给了,只要Server服务没开、C$共享没配对、或Everyone没读取权,就会卡在INS-30131。
Windows下必须检查的三个共享与服务项
别急着改环境变量或注册表,先确认这三项是否生效:
-
services.msc里Server服务状态为“正在运行”,启动类型设为“自动” -
compmgmt.msc→ 共享文件夹 → 共享 → 确认列表中有C$,且“共享权限”中Administrators或当前用户有“读取”以上权限(Everyone在域环境下常失效) - 命令行执行
net use \localhostC$,返回“命令成功完成”才算真正通路;若报错“找不到网络路径”,说明共享未就绪
Linux下TMPDIR设置为何总不生效
Oracle 12c+只认TMPDIR,TEMP或TEMPDIR基本被忽略。但设了≠生效,常见断点:
-
mkdir -p /home/ora_tmp后必须chmod 1777 /home/ora_tmp(少一位都不行) -
su - oracle后执行export TMPDIR=/home/ora_tmp,再echo $TMPDIR验证输出 - 确保该路径不在
tmpfs挂载点上:df -T /home/ora_tmp应显示ext4或xfs,不能是tmpfs - 安装日志里搜
OraInstall,确认解压目录出现在/home/ora_tmp下,而非/tmp
路径长度和空格才是静默失败的真凶
报错文字里从不提“路径太长”,但setup.exe一闪而逝、事件查看器出现0xc0000142,90%是Windows MAX_PATH限制触发——Oracle内部会拼出类似C:WindowsTempOraInstall2026-07-20_11-30-45PMStage...这种超长路径。
- 解压包所在路径总长≤80字符:用
C:oc或D:oh,别用C: oolsoracleclientc - 绝对不用快捷方式双击
setup.exe:快捷方式属性里的“起始位置”若含空格,照样截断 - 别在
Downloads或桌面解压:这些路径本身已含用户名(可能含中文/空格) - 正确姿势:
cmd.exe管理员运行→cd /d D:oh→setup.exe -ignoreSysPrereqs
临时目录问题最麻烦的点在于:它常和其他错误并发,比如注册表HKEY_LOCAL_MACHINESOFTWAREOracle缺失,其实是因临时目录不可写导致OUI中途退出,根本没走到写注册表那步。先让TMPDIR或C$通了,再查其他。


















