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

oracle数据泵在Windows 10上导入ORA-39002和ORA-39070、ORA-29283等,oracle,oracle12c,datapump,Oracle,Oracle12c,Datapump,我正在使用data pump对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的新手,无法找到有用的解决方案 虽然我使用的是

我正在使用data pump对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
转储目录是在oracle中创建的,并授予了相应的权限

我还使用

... logfile=file_name.log
在末尾添加,但我不确定日志文件是否已创建或保存在何处

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

有,基本上是“数据库无法写入日志文件位置。”

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

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\u PUMP\u DIR:file\u name.log


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

您遇到的问题是您的Oracle无法写入您指定的目录(DUMP\u DIR)。 在Windows10中,它的行为不可预测。解决方案

  • 创建另一个Oracle目录,最好是在C:\Users\Public\文件夹中,在该文件夹中您可以100%确定不会出现访问问题<代码>创建或替换目录DUMP\u DIR\u 2为'C:\Users\Public\
  • 授予Grants
    GRANT READ,在目录DUMP\u DIR\u 2上写入schema\u name

  • 将转储文件复制到新创建的文件夹

  • 启动导入命令
  • “dimpfile”是一个输入错误,还是它在您的命令中是这么说的?