Oracle12c安装程序因设计限制,仅接受本地物理路径,无法识别映射网络驱动器或UNC路径。因此必须将临时目录和安装介质存放于本地磁盘,例如设置TEMP为C:\oracle_temp,并从本地路径启动安装程序以避免安装失败。
为什么Oracle 12c安装程序无法识别映射网络驱动器?
时间:2026-07-20
浏览:358
文章目录
为什么Oracle 12c安装程序不能识别映射的网络驱动器?这个问题在实际部署中非常常见,但很多用户第一次遇到时都会感到困惑——明明在命令行中可以正常访问Z:盘或者\\server\share,为什么Oracle安装器却无法识别?
直接给出结论:Oracle 12c安装器无法识别映射的网络驱动器,包括\\server\share这类UNC路径以及Windows中的Z:盘符。这与权限配置或路径写法是否规范无关,完全是安装器自身的设计限制——它只接受本地物理路径作为临时目录(TEMP/TMP)和安装介质路径。

Oracle安装器对临时目录的硬性要求
在安装流程启动之前,Oracle的prereq检查会调用系统API读取TEMP和TMP环境变量指向的路径,并立即验证其是否满足以下条件:
- 必须是本地文件系统上的绝对路径,例如
/tmp或C:\Temp - 不能是UNC路径,例如
\\nas\oracle\temp - 不能是映射驱动器盘符,例如
Z:\temp——即使该Z:盘底层指向的是本地磁盘,仍然不被接受 - 路径必须可读写,且剩余空间至少为2GB
一旦检测到路径中包含\\,或者驱动器盘符不是本地物理盘(例如通过SMB映射的Z:),prereq检查会直接失败,报错信息类似“无法访问临时位置”或“INS-32037”,且不会提示具体原因。
为什么映射驱动器在命令行能使用,但Oracle却不行?
这一现象背后的原因值得注意:
- Windows命令行(cmd、PowerShell)和大多数GUI工具通过Win32 API的
GetLogicalDrives和GetDriveType判断盘符类型。映射驱动器返回DRIVE_REMOTE,但许多工具仍允许访问。 - Oracle安装器(
runInstaller)则使用更底层的JNI调用,或直接检查GetVolumeInformation返回的文件系统标识。对于DRIVE_REMOTE类型的路径,安装器直接拒绝访问。 - 即使将
TEMP环境变量设置为Z:\temp,安装器启动后首先调用类似isLocalPath()的逻辑,一旦发现路径不符合要求,立即退出。
正确设置临时目录的实操步骤
以Windows为例,绕过映射驱动器问题只需三步:
- 在本地系统盘(如
C:)上新建目录:C:\oracle_temp - 设置环境变量——必须在启动
setup.exe之前生效:set TEMP=C:\oracle_tempset TMP=C:\oracle_temp - 确认设置生效:
echo %TEMP%输出应为C:\oracle_temp,且该目录确实存在、可写。
Linux下的操作同理:确保$TMPDIR或/tmp是本地ext4或xfs分区,而非NFS挂载点。可使用df -T /tmp验证文件系统类型。
安装介质路径也不能使用映射驱动器
若将Oracle安装包解压到Z:\database,然后双击Z:\database\setup.exe,同样会失败——安装器会尝试从该路径读取stage/目录下的响应文件和组件清单,而Z:盘不被信任。
- 正确做法:将整个
database文件夹复制到本地盘,例如C:\oracle_install\database - 然后从本地路径启动:
C:\oracle_install\database\setup.exe - 若必须从网络共享部署,建议先用
robocopy或rsync同步到本地,再运行安装程序。
此限制在Oracle 12c的所有版本(包括12.1.0.2、12.2.0.1)中保持一致。这不是bug,而是一个设计决策——目的是避免因网络抖动、权限继承异常或SMB版本兼容性问题,导致安装过程中途静默失败。
实用工具推荐
绿化、压缩、噪点和虚拟水印,自由调节做旧程度。
选择画质和输出格式,预览压缩前后的大小。