oracle 数据泵在 Windows 10 上导入 ORA-39002 和 ORA-39070、ORA-29283 和其他

5 oracle datapump oracle12c

我正在使用数据泵对 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
Run Code Online (Sandbox Code Playgroud)

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

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

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

impdp user/pass@db_name directory=DUMP_DIR dimpfile="file_name.dmp" schemas=schema_name content=all parallel=4
Run Code Online (Sandbox Code Playgroud)

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

我也运行了这个命令

... logfile=file_name.log
Run Code Online (Sandbox Code Playgroud)

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

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

kfi*_*ity 6

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

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

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;
/
Run Code Online (Sandbox Code Playgroud)

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

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

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