在其中一个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';
请帮我成功导出数据库吗?
答案 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)当侦听器和数据库在不同的帐户下运行时会出现问题(例如grid
和oracle
,grid
用户无法访问操作系统目录 - 以该用户重复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”目录
然后它对我有用