【问题标题】:Expdp from Oracle RAC environmentOracle RAC 环境中的 Expdp
【发布时间】:2018-03-21 15:20:34
【问题描述】:

在其中一个 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 命令创建了“测试”目录:

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

您能帮我成功导出数据库吗?

【问题讨论】:

  • /usr/apps/datafiles目录是否已经存在,Oracle账户是否可写?
  • 是的,数据文件已成功创建,并且具有写入权限。
  • datafiledatafiles - 假设这只是评论中的拼写错误?目录中有没有文件;特别是日志文件是否已经存在、由其他人拥有或只读?

标签: oracle


【解决方案1】:

你得到的错误是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。

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

【讨论】:

    【解决方案2】:

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

    logfile=DATA_PUMP_DIR:impdp.log
    

    【讨论】:

      【解决方案3】:

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

      将目录上的读、写权限授予 PUBLIC;

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

      【讨论】:

        【解决方案4】:

        获取 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;
        

        【讨论】:

          【解决方案5】:

          如果你做这个练习是为了练习: Oracle 数据库 11gR2 快速入门指南 第 9 章 第 87 页 (我在 Windows 10 上) ..做完之后

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

          GRANT READ,WRITE ON DIRECTORY exp_dir TO hr;

          --我这里也用过系统

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

          然后它对我有用

          【讨论】:

            猜你喜欢
            • 2012-11-05
            • 1970-01-01
            • 2017-10-01
            • 2016-06-08
            • 2016-03-07
            • 2011-06-19
            • 1970-01-01
            • 2021-07-24
            • 2021-02-19
            相关资源
            最近更新 更多