【问题标题】:oracle data pump import ORA-39002 with ORA-39070, ORA-29283 and others on Windows 10oracle 数据泵在 Windows 10 上导入 ORA-39002 和 ORA-39070、ORA-29283 等
【发布时间】:2018-11-27 03:13:30
【问题描述】:

我正在使用数据泵对 4 个 .dmp 文件执行导入,并继续收到如下错误集:

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

我是 Oracle 新手,找不到有用的解决方案。

我正在像here 一样执行导入,尽管我使用的是 oracle 12c。

我在 windows 命令中运行的命令如下所示:

impdp user/pass@db_name directory=DUMP_DIR dimpfile="file_name.dmp" schemas=schema_name content=all parallel=4

在 oracle 中创建了 DUMP_DIR,并授予了适当的权限。

我也用

运行了这个命令
... logfile=file_name.log

在最后添加,但我不确定日志文件是否已创建或保存在何处。

我找到了this - 它几乎是完全相同的一组错误,但在导出和 linux 上。在答案的最后有一句“如果我们在 Windows 机器上,那么我们需要确保侦听器和数据库都已使用完全相同的用户名启动。”这在导入的情况下有用吗?如果是 - 究竟是什么意思?

【问题讨论】:

  • “dimpfile”是一个错字,还是它在你的命令中所说的?

标签: oracle oracle12c datapump


【解决方案1】:

a great short answer here,基本上是“数据库无法写入日志文件位置。”

上面的链接建议了一个简单的测试来解决问题。

declare
  f utl_file.file_type;
begin
  f := utl_file.fopen ('DUMP_DIR', 'test.txt', 'w');
  utl_file.put_line(f, 'test');
  utl_file.fclose(f);
end;
/

如果失败,Oracle 根本无法写入该目录,可能是因为 Windows 文件权限。检查 Oracle 服务以哪些 Windows 用户身份运行,并更改文件夹权限以允许他们进行写访问。

如果这有效,那是 impdp 特有的问题。您可以尝试更改您的命令字符串 - 一种选择可能是将您的日志文件专门写入不同的 Oracle 目录,例如logfile=DATA_PUMP_DIR:file_name.log

如果这些选项都不起作用,您也可以使用 NOLOGFILE=Y 完全禁用日志文件,但您必须在控制台上监控 impdp 输出,因为它不会保存在其他任何地方。

【讨论】:

    【解决方案2】:

    您遇到的问题是您的 Oracle 无法写入您指定的 DIRECTORY (DUMP_DIR)。 在 Windows 10 中,它的行为不可预测。解决方案

    1. 最好在 C:\Users\Public\ 文件夹中创建另一个 Oracle 目录,您可以 100% 确保访问不会出现问题。 CREATE OR REPLACE DIRECTORY DUMP_DIR_2 AS 'C:\Users\Public\<name>
    2. 给予资助GRANT READ, WRITE ON DIRECTORY DUMP_DIR_2 TO schema_name;

    3. 将转储文件复制到新创建的文件夹。

    4. 触发您的导入命令

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-03
      • 2019-10-13
      • 1970-01-01
      • 1970-01-01
      • 2011-08-26
      • 1970-01-01
      • 2016-09-25
      相关资源
      最近更新 更多