首页 > 解决方案 > Oracle DATAPUMP 导入失败

问题描述

我目前正在尝试DBMS_DATAPUMP使用以下脚本在 PL/SQL 中导入数据库。

DECLARE
    h1 NUMBER; 
BEGIN 
    h1 := DBMS_DATAPUMP.OPEN('IMPORT', 'FULL', NULL, DBMS_SCHEDULER.generate_job_name, 'LATEST'); 
    DBMS_DATAPUMP.ADD_FILE(handle => h1, filename => 'EXAMPLE6.DMP', directory => 'DUMP'); 
    DBMS_DATAPUMP.START_JOB(h1); 
    dbms_datapump.detach(h1);
END;
/

每次执行此代码时,都会收到以下错误消息。

ERROR in line 1:
ORA-39001: invalid argument value
ORA-06512: in "SYS.DBMS_SYS_ERROR", line 79
ORA-06512: in "SYS.DBMS_DATAPUMP", line 4929
ORA-06512: in "SYS.DBMS_DATAPUMP", line 5180
ORA-06512: in line 5

我已经用谷歌搜索了这个错误,但答案主要包括检查目录是否已经创建以及用户是否具有对该目录的读写访问权限。

我还尝试了该impdp工具作为实验,看看我是否可以以这种方式执行导入。

impdp pdb2 directory="DUMP" dumpfile="EXAMPLE6.DMP"

根据我正在执行的用户impdp,我收到不同的错误消息。

作为拥有所有权限的用户:

ORA-39001: invalid argument value
ORA-39000: bad dump file specification
ORA-39155: error expanding dump file name "C:\Users\...\EXAMPLE6.DMP"
ORA-48128: opening of a symbolic link is disallowed

作为 sysdba 用户:

ORA-39002: invalid operation
ORA-39070: unable to open the log file
ORA-39087: directory name DUMP is invalid

正如我已经说过的,该目录确实存在于我的驱动器上,我创建了DUMP在 Oracle 中调用的目录并授予我的用户读写访问权限。

所有帮助将不胜感激,如果我写了一些令人困惑的东西,我很乐意澄清!

编辑: 输出select directory_name, directory_path from dba_directories;

DIRECTORY_NAME
--------------------------------------------------------------------------------
DIRECTORY_PATH
--------------------------------------------------------------------------------
DUMP
C:\Users\Nemanja\Desktop\oraclePLS

我忘了提到,Oracle 服务可以完全访问指定的 Windows 目录。

标签: oracleplsqldatapump

解决方案


推荐阅读