在Oracle 12g中使用DBMS_DATAPUMP导入Oracle Dump时出错

时间:2018-08-16 13:47:59

标签: oracle amazon-rds

我一直试图在AWS的RDS下将转储文件导入Oracle 12g,并且一直都在错误以下,我无法弄清发生了什么。任何帮助或指针,我们将不胜感激。

这就是我想要做的。

1)我从客户那里获得了一个.dat转储文件(不确定他们是如何从oracle导出此转储的),我的目标是将其导入到AWS oracle RDS实例。

2)按照How to transfer Oracle dump file to AWS RDS instance?

我已经创建了新的EC2实例并安装了Oracle Express版本,然后将.dat文件复制到DATA_PUMP_DIR目录(/u01/app/oracle/admin/XE/dpdump/)。

3)创建到AWS oracle RDS实例的数据库链接,并能够使用DBMS_FILE_TRANSFER.PUT_FILE将其复制到rds实例。

4)我可以在oracle rds实例的DATA_PUMP_DIR路径下看到该文件。

到目前为止一切都很好。

5)现在,我正在尝试使用以下过程将转储文件导入RDS

DECLARE
hdnl NUMBER;
BEGIN
hdnl := DBMS_DATAPUMP.OPEN( operation => 'IMPORT', job_mode => 'SCHEMA', job_name => null);
DBMS_DATAPUMP.ADD_FILE( handle => hdnl, filename => 'sample.dat', directory => 'DATA_PUMP_DIR');
DBMS_DATAPUMP.START_JOB(hdnl);
END;
/  

我一直都遇到错误

DECLARE
*
ERROR at line 1:
ORA-39001: invalid argument value
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 79
ORA-06512: at "SYS.DBMS_DATAPUMP", line 4087
ORA-06512: at "SYS.DBMS_DATAPUMP", line 4338
ORA-06512: at line 5

我知道错误指向第DBMS_DATAPUMP.ADD_FILE()行,但我无法在此处找出问题所在。

我尝试了各种导入选项,但是都没有帮助。我已经创建了表空间,并且还确保用户具有正确的权限。

非常感谢任何指针。

1 个答案:

答案 0 :(得分:0)

1)使用Amazon RDS主用户帐户连接到RDS实例。

2)运行此pl / sql块

impdp RDS_master_user/password@rds_instance DUMPFILE=sample.dmp   DIRECTORY=DATA_PUMP_DIR parfile=import_parfile

3)您可以开始从任何oracle客户端导入。例如,实例EC2。

SCHEMAS =SCHEMA_NAME

import_parfile

for j in range(item.pm):

        con1 = sum(xs[i*(item.vm)+j] * timecap [i+1,tt] /timed[i+1] for tt in range(item.timep)for i in range(item.vm))
        t = con1 <= c[j] * ys[j] 
        prob += t
        print(t)