【发布时间】:2017-09-15 12:32:44
【问题描述】:
我正在尝试使用 expdp 对我的 Oracle DB 的某些表执行导出
我的代码:
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) 上
- 我可以从提供 Windows 凭据的 Oracle 机器访问 DUMP_DIR
- 我用上面写的 expdp 命令在 Win_machine1 中启动了一个 .bat 文件
Q1:Oracle机器通过Win Server授权?我想Oracle使用AAA访问数据库并执行导出操作,但是哪个用户访问目录DUMP_DIR?当我在 CentOS 中找到它时,它要求我提供凭据(我告诉它记住),但我不知道它是否存储了它们,或者 expdp 是否使用它们。 (AAA 不是域用户)
可能是这个问题还是我应该检查其他东西?
谢谢, 马塞洛
【问题讨论】:
-
Oracle 软件所有者访问操作系统目录,而不是运行导出的用户。您可能需要从该帐户访问共享,保存凭据,但前提是这样做是有效/安全的(谁的凭据?)。我不确定 Oracle 是否知道如何处理
smb://路径格式;如果不能,您可以挂载它,以便参考正常的本地挂载点路径吗? -
共享位于我执行 expdp 的同一台服务器中,因此登录 Win_machine1 的 Windows 用户与有权打开共享的相同。我不知道如何翻译 smb:// 路径或者是否可能......但我认为我必须使用 CentOS 位置,因为 DB 安装在那里。
-
不确定你的意思。 Linux 机器上的 Oracle 用户正在通过目录对象访问共享 - 该用户(而不是您在 Linux 机器上运行 expdp 的任何人)必须能够访问该共享。您是否以该 Oracle 用户身份验证了访问权限?
-
Oracle用户可以访问共享,但是需要windows认证。问题是我可以通过 Linux 访问共享,但它似乎无法通过 expdp 执行相同的操作。我想我可以使用其中一种方法来解决它,你同意吗? 1. 将 smb 转换为 windows 路径 2. 提供 expdp windows 凭据
-
也许 (1) 虽然我假设您的意思是 Linux 路径,通过固定挂载,但不是 (2) - 您将如何提供 Windows 凭据?您传递的用户名和密码是数据库凭据。只是为了好玩,您能否从目录定义中的路径中删除最后一个
/,如果它以一个结尾(如您的问题所示)?
标签: oracle oracle11g expdp oracle-dump