我一直试图在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()
行,但我无法在此处找出问题所在。
我尝试了各种导入选项,但是都没有帮助。我已经创建了表空间,并且还确保用户具有正确的权限。
非常感谢任何指针。
答案 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)