如果使用数据泵,则没有直接方法将转储文件存储在本地计算机上。这就是数据泵的设计方式。
但是,有一种可能的方法可以实现您想要的目标。解决方法有两个步骤:
- Run
expdp
像往常一样,这会在服务器上创建转储文件
- Use
ocp
用于将转储文件从数据库服务器传输到本地计算机(如果需要,也可以返回)的工具。
An ocp
该工具代表“Oracle Copy”,其编写的目的正是为了在数据库服务器之间来回复制转储文件。它可以在这里找到:https://github.com/maxsatula/ocp/releases/download/v0.1/ocp-0.1.tar.gz这是一个源代码发行版,因此下载并解压后,运行./configure && make
(希望你的客户端没有 Windows,因为我从未尝试在那里编译它)
这是一个简单的命令行工具,具有简单的语法。例如,此命令将为您提取一个文件:
ocp <connection_string> DATA_PUMP_DIR:remote_file_name.dmp local_file_name.dmp
该工具使用数据库连接和最小的数据库权限集。
Update:
最后我能够调整源代码并构建ocp
适用于 Windows 32 位的工具:
https://github.com/maxsatula/ocp/releases/download/v0.1/ocp-0.1-win32.zip
使用此处提供的 32 位 Instant Client 11.2.0.4 进行编译/测试:http://www.oracle.com/technetwork/topics/winsoft-085727.html
instantclient-basiclite-nt-11.2.0.4.0.zip(20,258,449 字节)
我相信它也适用于完整的 Oracle 客户端安装(只需注意位,应该是 32),但我自己没有检查。
不幸的是,Windows 版本ocp
文件传输期间没有精美的进度表。那段代码有太多 *nix 特有的东西,所以我不得不把它删掉。
此外,由于它使用 popt 和 zlib 库,这些库被编译为 GnuWin 项目的一部分,并且仅在 32 位中可用,ocp
Windows 也仅限 32 位。希望没有 64 位版本对您来说不是关键任务。
更新2:
Warning!从服务器下载文件时,请确保始终使用专用服务器连接,否则(对于共享服务器)下载的文件副本将被损坏,并且不会出现错误消息!