我正在使用数据泵对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机器上,那么我们需要确保监听器和数据库都使用完全相同的用户名启动。'这是否适用于导入?如果是的话 - 究竟是什么意思?
答案 0 :(得分:0)
有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输出,因为它不会在其他地方保存。< / p>
答案 1 :(得分:0)
您遇到的问题是您的Oracle无法写入您指定的DIRECTORY(DUMP_DIR)。 在Windows 10中,它的行为异常。解决方案
CREATE OR REPLACE DIRECTORY DUMP_DIR_2 AS 'C:\Users\Public\<name>
赠款GRANT READ, WRITE ON DIRECTORY DUMP_DIR_2 TO schema_name;
将转储文件复制到新创建的文件夹。