2017-04-19 133 views
0

我试图用EXPDP对一些表执行导出我的Oracle DB使用Oracle Linux的EXPDP到Windows网络驱动器

我的代码:

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

这是我得到

ORA-39002:无效操作

ORA-39070:无法打开日志文件。

ORA-29283:无效的文件操作

ORA-06512:在 “SYS.UTL_FILE”,线路536

ORA-29283:无效的文件操作

我网上查了,我想这是corssing不同的操作系统和/或授权的问题

这是我的情况:

  • 使用CentOS 7的Linux计算机上的Oracle DB
  • directory = DUMP_DIR是DB上的目录对象。它的建立,因为我通过Linux计算机= SMB看到的路径:// Win_machine1/dump_oracle/
  • dump_dir中位于在Windows Server 2008 R2(Win_machine1)
  • 我可以从Oracle机给Windows凭据达到dump_dir中的
  • 我在Win_machine1中启动一个.bat文件,上面写有expdp命令

Q1:Oracle Server通过Win Server授权?我想Oracle使用AAA访问数据库并执行导出操作,但是哪个用户访问目录DUMP_DIR?当我位于它的CentOS它问我要证件(我告诉它记得了),但我不知道是否它存储他们,如果EXPDP使用它们。 (AAA不是域用户)

难道是这个问题,或者我应该检查别的东西?

谢谢 马塞罗

+0

Oracle软件所有者访问OS目录,而不是运行导出的用户。您可能需要从该帐户访问共享,以保存凭据,但前提是这是一个有效/安全的事情(其凭据?)。我不确定Oracle是否知道如何处理'smb://'路径格式;如果不是,你可以装载,以便你可以参考一个正常的本地挂载点路径? –

+0

共享位于执行expdp的同一台服务器上,因此登录Win_machine1的Windows用户与具有打开共享权限的用户相同。 我不知道如何翻译smb://路径,或者如果可能......但我认为我必须使用CentOS位置,因为DB安装在那里。 –

+0

不确定你的意思。 Linux上的Oracle用户通过目录对象访问共享 - 该用户(不是你在Linux机器上运行expdp的人)必须能够访问该共享。您是否以Oracle用户的身份验证了访问权限? –

回答

0

我找到了解决办法:

下使用的/ mnt在Linux的/的mkdir

CD创建/ mnt目录

的mkdir mydir的

然后挂载使用它安装

安装-t CIFS -o的用户名,密码//服务器/共享名到/ mnt/MYDIR/

其中用户名和密码是Windows的用户能够访问共享 和/ /服务器名/共享名是我的共享路径(服务器= IP地址,如果不能够解决DNS)

然后在Oracle数据库

CREATE OR REP创建目录LACE DIRECTORY dump_dir中AS '到/ mnt/MYDIR'

EXPDP工作正常

EXPDP AAA/*** @ XXX模式= AAA包括= TABLE:\“= \ 'TBL001 \' \ “directory = DUMP_DIR dumpfile = dmpfile.dmp logfile = lgfile.txt