首页 > 解决方案 > oracle 数据泵在 Windows 10 上导入 ORA-39002 和 ORA-39070、ORA-29283 等

问题描述

我正在使用数据泵对 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 新手,找不到有用的解决方案。

尽管我使用的是 oracle 12c,但我正在执行这里的导入。

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

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

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

我也运行了这个命令

... logfile=file_name.log

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

我发现了这一点- 它与导出和 linux 上的错误集完全相同。在答案的末尾有一句话“如果我们在 Windows 机器上,那么我们需要确保侦听器和数据库都已使用完全相同的用户名启动。” 这在导入的情况下有用吗?如果是 - 这究竟是什么意思?

标签: oracleoracle12cdatapump

解决方案


这里有一个很好的简短答案,基本上是“数据库无法写入日志文件位置”。

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

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 输出,因为它不会保存在其他任何地方。


推荐阅读