我创建了一个目录:
SQL> create or replace directory dir as '/home/oracle12c/Desktop/latest_exp.dmp';
我正在尝试运行导入,如sysdba:
impdp \'/as sysdba\' full=Y directory=dir dumpfile=importDump.dmp logfile=import.log;
我收到了这些错误:
Connected to: Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics, and Real Application Testing options
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用户应该拥有这些文件。 我尝试导入的文件的权限如下所示:
-rw-r--r-- 1 oracle12c root 2201247744 Feb 21 16:51 latest_exp.dmp
这里有什么问题,我该如何克服它?当文件的所有者是oracle12时是否有问题?互联网上的一些解决方案说文件必须由试图访问文件的用户拥有,在我的例子中是sysdba。但我无法将所有者更改为我的文件sysdba,因为我的Ubuntu上不存在该用户。
另外,我们指定了dumfile和logfile,但是我们没有指定位置。它会在哪里创建这些位置?我假设它会在这里寻找它们:/u01/app/oracle/oradata/orcl$
其中orcl是我的SID
在Google和Oracle Doc的帮助下,我无法解决我的问题。
我在Ubuntu上运行。
答案 0 :(得分:2)
Oracle目录对象应指向操作系统目录,而不是文件;而不是:
create or replace directory dir as '/home/oracle12c/Desktop/latest_exp.dmp'
它应该只是:
create or replace directory dir as '/home/oracle12c/Desktop'
转储文件应该位于该目录中,默认情况下也会在那里创建日志和坏文件。
目前,您要求它在/home/oracle12c/Desktop/latest_exp.dmp
目录下创建日志文件,即/home/oracle12c/Desktop/latest_exp.dmp/import.log
- 这显然不是有效的完整路径;并且还要在该非目录下查找文件importDump.dmp
。
您的命令行看起来有错误的名称:
impdp ... directory=dir dumpfile=latest_exp.dmp logfile=import.log