使用impdp方式导入dmp文件,需要指定一个directory,来告诉oracle你的dmp文件和log文件的存放路径.而这个小小的directory是一个躲不开的天坑....
一般的导入前准备工作:
查看现有directory:select * from dba_directories;
创建(存在则替换)directory:create or replace directory dmp_dir as 'D:\xxxx\dmp';
路径授权:grant read,write on directory dmp_dir to user_name;
impdp user/passwd@ORCL DIRECTORY=dmp_dir DUMPFILE=xxxx.DMP REMAP_SCHEMA=source:target REMAP_TABLESPACE=source:target logfile=dmp_dir:xxxx.log;
执行时经常会碰到下面的错误:
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
常见原因一般归为2中:
1.权限不够,首先检查是否使用grant授权,再查看目录的访问权限.
2.路径问题,这个是很坑人的,具体编码原因不去做深究,虽然在dos窗口下你查看带有汉字的路径并无异样,但很多时候路径中有空格,汉字等等都有可能导致上面的错误,所以,重要的事情说3遍:
请使用纯英文路径.
请使用纯英文路径.
请使用纯英文路径.