来自Oracle RAC环境的Expdp

时间:2012-08-09 07:28:26

标签: oracle

在其中一个RAC实例上运行以下命令

expdp system/password@orcl DIRECTORY=Test DUMPFILE=user1.dmp owner=user1 LOGFILE=log1.log

我正面临以下错误:

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

我在同一个RAC实例上使用以下SQL命令创建了'Test'目录:

CREATE DIRECTORY Test AS '/usr/apps/datafiles';

请帮我成功导出数据库吗?

5 个答案:

答案 0 :(得分:3)

您收到的错误是ORA-29283

> oerr ora 29283
29283. 00000 -  "invalid file operation"
*Cause:    An attempt was made to read from a file or directory that does
           not exist, or file or directory access was denied by the
           operating system.
*Action:   Verify file and directory access privileges on the file system,
           and if reading, verify that the file exists.

因此,/usr/apps/datafiles目录不存在,或Oracle进程所有者无法写入(例如oracle帐户);或者可能(但不太可能)您指定的日志文件已存在且无法覆盖。

由于您说它存在,请查看目录的完整权限(例如ls -ld /usr/apps/datafiles,检查Oracle进程所有者的所有者和组(例如id -a)以比较权限该目录及其父目录。如果一切正常,则以Oracle进程所有者身份登录时检查是否可以在目录下创建文件,例如:

touch /usr/apps/datafiles/test_file
ls -l /usr/apps/datafiles/test_file
rm -f /usr/apps/datafiles/test_file

如果所有这些都有效,我想这可能是您的评论,那么由于您使用的是RAC,您可能需要参考支持说明1305166.1。

首先要做的是在没有expdp的情况下进行@orcl,因为看起来(a)当侦听器和数据库在不同的帐户下运行时会出现问题(例如gridoraclegrid用户无法访问操作系统目录 - 以该用户重复touch测试以查看是否属于这种情况);或者(b)如果别名是负载平衡的,并且它最终在不具有该目录的不同节点上运行。

答案 1 :(得分:3)

您可以将日志文件更改为任何其他默认目录,例如DATA_PUMP_DIR,这样即使它在任何其他节点上执行,因为默认目录将在所有节点上可用。

logfile=DATA_PUMP_DIR:impdp.log

答案 2 :(得分:0)

用户可能没有权限使用该目录。 您需要以sysdba身份登录并提供必要的权限

授予读取权限,将目录写入PUBLIC;

然后尝试使用数据泵导出,这应该可以解决您的问题。

答案 3 :(得分:0)

获得ORA-39002;运行expdp时,ORA-39070和ORA-39087。

例如:

$ expdp dbschema/dbpassw DIRECTORY=DATA_PUMP_DIR DUMPFILE=Test1.dmp logfile=Test1.log SCHEMAS=dbschema

Export: Release xx.x.x.x.x – xxbit Production on Tuesday, xx xxxxxxxx, xxxx xx:xx:xx

Copyright (c) 2003, 2007, Oracle. All rights reserved.

Connected to: Oracle Database 11g Enterprise Edition Release xx.x.x.x.x – xxbit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
ORA-39002: invalid operation
ORA-39070: Unable to open the log file.
ORA-39087: directory name DATA_PUMP_DIR is invalid

解决方案:

grant read, write on directory DATA_PUMP_DIR to system, dbschema;

答案 4 :(得分:0)

如果您正在进行以下练习: Oracle Database 11gR2 Jumpstart指南 第9章第87页 (我在Windows 10上) ..做完之后

  

创建或替换DIRECTORY目录exp_dir AS'c:\ oraclexe \ exp_dumps';   --i还看到了一个链接,表示要在此路径的末尾添加\   --so'c:\ oraclexe \ exp_dumps \'    - 我不确定这是否也解决了我的问题所以我包括这个

  

GRANT READ,写入目录exp_dir TO hr;

- 我刚刚在这里使用了系统

下一个 只需转到该父目录并手动手动创建“exp_dumps”目录

然后它对我有用