我正在尝试使用 expdp 对我的 Oracle 数据库的某些表执行导出
我的代码:
expdp AAA/***@xxx schemas=AAA include=TABLE:\"= \'TBL001\'\" directory=DUMP_DIR dumpfile=dmpfile.dmp logfile=lgfile.txt
这是我得到的:
ORA-39002: invalid operation
ORA-39070: unable to open the log file.
ORA-29283: invalid file operation
ORA-06512: at "SYS.UTL_FILE", line 536
ORA-29283: invalid file operation
网上查了一下,估计是跨操作系统和/或授权的问题
这是我的情况:
- 装有 CentOS 7 的 Linux 机器上的 Oracle DB
- directory=DUMP_DIR 是 DB 上的一个目录对象。它是在我看到通过 Linux Machine = smb://Win_machine1/dump_oracle/的路径时创建的
- DUMP_DIR 位于 Windows Server 2008 R2 (Win_machine1) 上
- 我可以从 Oracle 机器访问 DUMP_DIR,提供 Windows 凭据
- 我使用上面编写的 expdp 命令在 Win_machine1 中启动一个 .bat 文件
Q1:Oracle Machine通过Win Server授权?我想 Oracle 使用 AAA 访问 DB 并执行导出操作,但是哪个用户访问目录 DUMP_DIR?当我在 CentOS 中找到它时,它要求我提供凭据(我告诉它要记住),但我不知道它是否存储了它们或者 expdp 是否使用它们。 (aaa不是域用户)
可能是这个问题还是我应该检查其他东西?
谢谢, 马塞洛
最佳答案
我找到了解决方案:
在 Linux 中使用 mkdir 在/mnt/下创建目录
cd /mnt
mkdir mydir
然后使用mount挂载
mount -t cifs -o username,password //servername/sharename /mnt/mydir/
其中用户名和密码是 Windows 用户能够访问共享 //servername/sharename 是我共享的路径(如果无法解析 DNS,servername = IP 地址)
然后在Oracle DB上创建目录
CREATE OR REPLACE DIRECTORY DUMP_DIR AS '/mnt/mydir'
expdp 正常工作
expdp AAA/***@xxx schemas=AAA include=TABLE:\"= \'TBL001\'\" directory=DUMP_DIR dumpfile=dmpfile.dmp logfile=lgfile.txt
关于oracle - 使用 Oracle-Linux expdp 到 windows 网络驱动器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43493011/