oracle impdp 数据迁移 至RDS 亚马逊云

背景:

公司年底打算将aws rds11.2.0.4 oracle 数据库升级到19c,所以需要进行升级测试,所以需要我把线上的库数据迁移到一台测试的rds oracle 亚马逊云的数据库中,然后升级这一台oracle数据库,测试升级时间,云上和linux服务器操作其实真的不太一样,经过封装后的Oracle。

环境:

源端:

windows 2012 oracle 11.2.0.4

目标端:

rds 11.2.0.4

迁移操作步骤:

首先我是把线上的rds数据库 通过dblink1导到源端,然后通过源端 dblink2, DBMS_FILE_TRANSFER.PUT_FILE命令传到亚马逊服务器,后面通过在源端执行语句,导入到亚马逊测试服务器上。

线上导出语句比较简单,由于要准确的估计升级时间,我找的线上数据量最大的一个数据库,然后导出全部业务数据;

导出语句如下:

set NLS_LANG=AMERICAN_AMERICA.AL32UTF8
set dd=%date:~8,2%
set mm=%date:~5,2%
set yy=%date:~0,4%
set Tss=%TIME:~6,2%
set Tmm=%TIME:~3,2%
set Thh=%TIME:~0,2%
set Thh=%Thh: =0%

expdp USERNAME/XXX directory=EXPDP_DUMP network_link=RDS_CLD_8 dumpfile=RDS_CLD_8_%yy%%mm%%dd%_%Thh%%Tmm%.dmp logfile=RDS_CLD_8_%yy%%mm%%dd%_%Thh%%Tmm%.log schemas=racttfc compression=ALL

由于 db_link中RDS_CLD_8 为源端到线上数据库(数据量最大的数据库),现在需要把导到源端的dmp文件传到亚马逊服务器,需要配置db_link,以及目标RDS数据库中创建directory对象

配置源端连接test rds的tns(次步骤省略),创建源端到test rds 的db_link:

create database link RDS_19CUPGRADE
connect to  username identified by "XXXX"
using '(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = hostname)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = xx)
)
)';

test rds 创建目录:

exec rdsadmin.rdsadmin_util.create_directory('dpump_dir');

需要上传的文件:

BEGIN
DBMS_FILE_TRANSFER.PUT_FILE(
source_directory_object => 'EXPDP_DUMP',    --源端目录
source_file_name => 'RDS_CLD_8_20200828_1939.DMP',   --源端导出的文件名
destination_directory_object => 'dpump_dir', --目标端目录
destination_file_name => 'RDS_CLD_8_20200828_1939.DMP', --目标端上传后的文件名
destination_database => 'RDS_19CUPGRADE');  --DBLINK的名称
END;
/

导出的压缩的文件16G,大约5分钟,还是比较的快。

后面进行导入语句,源端执行的,比较简单:

 

 

impdp username/XXX@19cupgrade directory=dpump_dir dumpfile=RDS_CLD_8_20200828_1939.DMP logfile=19c.log remap_Schema=racttfc:racttfc

导入相对就慢了……

 

posted @ 2020-08-29 15:32  翰墨文海  阅读(588)  评论(0编辑  收藏  举报