在 oracle 数据库版本 18.3 中,可以使用 unc 路径作为 Windows 中的目录,并使用 impdp 从该目录中抽取数据库泵。
例子:
C:\>sqlplus system/passwd@exampledb
C:\>create directory DUMPS as '\\storage\dir';
C:\>exit
C:\>impdp system/passwd@exampledb directory=DUMPS dumpfile=example.dmp logfile=example-imp.log
... just works as expected
对于 oracle 数据库 19.3 版,相同的 impdp 指令产生以下输出:
c:\>impdp system/passwd@exampledb directory=DUMPS dumpfile=example.dmp logfile=example-imp.log
Connected to: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
ORA-39001: invalid argument value
ORA-39000: bad dump file specification
ORA-39155: error expanding dump file name "\\storage\dir\example.dmp"
ORA-48128: opening of a symbolic link is disallowed
我在 18.3 和 19.3 的示例中使用相同的帐户运行 oracle 数据库服务。因此,我认为网络或凭据问题不能解释我的观察。
这是 Oracle 数据库版本 18.3 和 19.3 之间的更改行为吗?我是否错过了发行说明中对这种更改行为的描述?或者我是否缺少 19.3 中引入的用于在目录中使用 UNC 共享的设置?还是我做错了什么?
我尝试将共享用作驱动器号,如下所示:
C:\>net use p: \\storage\dir /persistent:yes /user:myuser
dir p:
... list of files // network access works well
C:\>sqlplus system/passwd@exampledb
create directory DUMPS as 'P:\';
exit
C:\>impdp system/passwd@exampledb directory=DUMPS dumpfile=example.dmp logfile=example-imp.log
... ORA-39002: invalid operation
ORA-39070: Unable to open the log file.
ORA-29283: invalid file operation
现在 impdp 抱怨日志文件。不使用 impdp logfile= 参数也会出现问题。
您可能会发现以下内容很有趣:
http://christian-gohmann.de/2019/05/19/symbolic-links-in-directory-objects-not-permitted-with-oracle-18c-19c/
长话短说,我遇到了同样的问题,然后在设置下面的参数并重新启动数据库后,Data Pump 能够使用网络共享。
它还取决于 Oracle 数据库以哪个用户身份运行(请参阅名为 OracleServiceXXX 的 Windows 服务 - 其中 XXX 是您的数据库 SID)。数据泵操作在数据库的上下文中运行,因此运行数据库的用户还必须对 UNC 共享具有文件系统权限。有时 Window 服务作为“本地系统”启动,它可能没有很多远程权限。
来这里寻找 Oracle 19.3 中的 ORA-48128
作为上述@“Balazs Papp”答案的后续,您可以获得相同的错误消息,用于安装目录(硬盘驱动器硬安装到
C:\mnt\Datapump
而不是字母),并且作品。
这几乎可以肯定是 Oracle 中的一个错误。