【问题标题】:Use Oracle-Linux expdp to windows network drive使用 Oracle-Linux expdp 到 windows 网络驱动器
【发布时间】: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


【解决方案1】:

我找到了解决办法:

在 Linux 中使用 mkdir 在 /mnt/ 下创建目录

cd /mnt

mkdir 我的目录

然后使用 mount 挂载它

mount -t cifs -o username,password //服务器名/共享名/mnt/mydir/

其中用户名和密码是能够访问共享的 Windows 用户 并且 //servername/sharename 是我的共享路径(如果无法解析 DNS,则服务器名 = IP 地址)

然后在 Oracle DB 上创建目录

创建或替换 DIRECTORY DUMP_DIR AS '/mnt/mydir'

expdp 工作正常

expdp AAA/***@xxx schemas=AAA include=TABLE:\"= \'TBL001\'\" directory=DUMP_DIR dumpfile=dmpfile.dmp logfile=lgfile.txt

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-19
    • 2015-02-09
    • 1970-01-01
    • 2018-09-20
    • 1970-01-01
    • 2013-01-20
    相关资源
    最近更新 更多