Oracle impdp抛出ORA-39088错误

时间:2012-02-13 08:48:07

标签: oracle import impdp

我正在尝试从Oracle 10g数据泵实用程序创建的转储文件中导入数据。我发出的命令是

impdp \“用户名/密码@DB as sysdba \”remap_schema = SRC_SCHEMA:TARGET_SCHEMA remap_tablespace = source_tablespace:target_tablespace DUMPFILE = db.dmp

我收到以下错误消息:

ORA - 39001: Invalid argument value
ORA - 39000: Bad dump file spcification
ORA - 39088: file name cannot contain a path specification

此错误的原因是什么?

1 个答案:

答案 0 :(得分:8)

来自the documentation

  

ORA-39088:文件名不能包含路径规范
  原因:转储文件,日志文件或sql文件的名称包含路径规范   操作:使用目录对象的名称来指示文件的存储位置。

这表明您显示为DUMPFILE=db.dmp的参数实际上类似于DUMPFILE=C:\some\dir\path\db.dmp,这是不允许的。您必须使用数据库可识别的目录,并使用DIRECTORY参数指定它。


正如@ruffin从该目录参数链接中注意到的,您可以将转储文件放在默认的DATA_PUMP_DIR目录中,您可以从dba_directories视图中找到该目录,或者如果您有权使用该目录对象,all_directories视图。您要导入的用户必须已获得读取和写入权限才能使用它。您还需要能够将转储文件移动到操作系统目录中,因此权限也可能是一个问题。

如果您没有合适的目录对象,并且您具有数据库权限和操作系统访问权限,则需要创建一个并授予适当的权限。这需要由具有适当权限的人员完成,通常为SYS

create directory my_data_pump_dir as 'C:\some\dir\path';
grant read, write on directory my_data_pump_dir to <username>;

然后导入被修改为:

... DUMPFILE=db.dmp DIRECTORY=my_data_pump_dir

请注意,操作系统目录必须可供数据库服务器上的Oracle用户帐户(运行数据库进程的任何人,pmon等)使用。除非本地目录以某种方式安装在远程服务器上,否则无法使用本地文件导入远程数据库。旧imp命令是一个客户端应用程序,经常在服务器上运行但不必执行; impdp是服务器端应用程序。