我在EC2实例上有一个现有的.dmp
文件,可以访问在AWS上运行Oracle 11g的RDS实例。
我已阅读Importing Data in AWS RDS,似乎AWS不支持此类直接转移。
确实需要Source Oracle DB
,您必须创建/导出.dmp
文件,然后通过建立数据库链接将其传输到destination RDS instance
。
我的问题是,有没有办法将现有的.dmp
文件传输/导入到RDS实例上的DATA_DUMP_DIR
?
有什么建议吗?
答案 0 :(得分:1)
禁止对RDS实例进行文件访问。 仅通过db_link访问DATA_PUMP_DIR目录并使用DBMS_FILE_TRANSFER包。
您可以使用EC2实例上的旧exp实用程序导出数据,此实用程序还会创建导出文件.dmp
,但格式不同。格式与impdp expdp
不兼容。
exp imp
实用程序可以通过SQL * NET网络作为客户端 - 服务器连接到目标数据库。该实用程序已过时且性能较低。运行实用程序dmp
时,不会在服务器上创建expdp
文件。 dmp
文件写在运行实用程序exp
的一侧(服务器或客户端)
$ORACLE_HOME/bin/exp parfile=parfile_exp_full FILE=export.dmp LOG=export.log
然后使用imp
到RDS实例进行数据导入。
$ORACLE_HOME/bin/imp parfile=parfile_imp_full FILE=export.dmp LOG=import.log
您可以使用实用程序$ORACLE_HOME/bin/sqlplus -s user/pass@ec2 @csv2.sql
将数据导出为CSV文件。
set heading off
set termout OFF
SET FEEDBACK OFF
SET TAB OFF
set pause off
set verify off
SET UNDERLINE OFF
set trimspool on
set echo off
set linesize 1000
set pagesize 0
set wrap off
spool test2.csv
select code||','||name||','||code_rail from alexs.all_station;
spool off
exit;
然后使用实用程序sqlldr
将数据导入RDS实例。
答案 1 :(得分:1)
最终,我不得不启动另一个AWS实例,在其上安装Oracle XE,然后将我的转储文件放在DATA_PUMP_DIR
&然后按照AWS RDS Data Import
指南进行操作。
令人讨厌的是,没有其他方法可以做到这一点。没有SSH访问RDS实例只是加起来! 此外,AWS Doc不清楚详情。
答案 2 :(得分:0)
自2019年2月起,您现在可以导入i
个文件from S3 buckets。
这是我花了数年时间阅读AWS文档后采取的步骤。
.dmp
添加到组中(选择组,然后单击S3_INTEGRATION
)ADD OPTION
按照AWS RDS docs中所述的sqlplus
过程进行操作(直接转到步骤#4)
import
替换为存储桶的实际名称mys3bucket
p_s3_prefix
保留不变,除非您要覆盖默认位置。要跟踪任务进度,请输入
DATA_PUMP_DIR
用您的实际任务ID代替SELECT text FROM table(
rdsadmin.rds_file_util.read_text_file('BDUMP','dbtask-YOUR_TASK_ID.log')
);
:)
通过键入以下内容来检查YOUR_TASK_ID
的内容:
DATA_PUMP_DIR
这应该列出您位于S3中的所有select * from table(RDSADMIN.RDS_FILE_UTIL.LISTDIR('DATA_PUMP_DIR')) order by mtime;
文件...