写点什么

使用 Oracle Data Pump 将数据库迁移到 AWS 的 RDS Oracle 数据库

2019 年 11 月 20 日

使用Oracle Data Pump将数据库迁移到AWS的RDS Oracle数据库
### 1.Oracle数据库的迁移方法


如何将Oracle数据库从数据中心迁移到AWS云上是DBA经常遇到的问题,迁移Oracle数据库有多种方式:
(1)使用AWS DMS服务迁移
(2)使用Oracle SQL Developer迁移
(3)使用Oracle Data Pump迁移
(4)使用Oracle Export/Import迁移
(5)使用Oracle SQL Loader迁移
如果需要了解不同的迁移方法,可以参考 博客《Oracle数据库迁移到AWS云的方案》 。
### 2.使用Oracle Data Pump迁移
本文主要讨论使用Oracle Data Pump将Oracle数据库迁移到RDS数据库。示例数据库的信息如图。


![](https://s3.cn-north-1.amazonaws.com.cn/images-bjs/0929-1.png)下面是模拟在数据中心的Oracle11g源数据库中创建用户和表,并将源数据库迁移到AWS云中RDS Oracle 11g数据库的全过程。
#### 步骤一:初始化源数据库并使用Data Pump导出
(1)使用SQL Plus登录源Oracle数据库
sqlplus / as sysdba
(2)创建用户test
create user test identified by welcome1;
(3)为新创建用户grant权限(实际使用请给用户grant合适的权限)
grant dba to test;
(4)为用户test创建表
create table test.aa(id varchar(20) not null primary key,name varchar2(30));
(5)为表插入数据并commit
SQL> insert into test.aa values(‘1111′,’1111name’);
1 row created.
SQL> insert into test.aa values(‘2222′,’2222name’);
1 row created.
SQL> commit;
Commit complete.
(6)在源数据库所在的Linux上逐级创建下面文件目录
mkdir /home/oracle/datapump/datafiles
(7)在SQLPlus中创建数据库Directory
create directory dpump_dir as ‘/home/oracle/datapump/datafiles’;
grant read,write on directory dpump_dir to test;
(8)使用expdp命令导出test用户的所有表
expdp test1/welcome123 directory=dpump_dir dumpfile=test.dmp
expdp test1/welcome123 directory=dpump_dir dumpfile=test1.dmp
#### 步骤二:使用SQL Plus连接RDS数据库,并创建数据库目录对象
(1)在源数据库上配置RDS数据库的tnsnames
cd $ORACLE_HOME/network/admin
vi tnsnames.ora
输入tnsnames的内容如下:
ORARDS=(description=(address_list=(address = (protocol = TCP)(host = RDS_HOST_NAME)(port = RDS_PORT)) )(connect_data =(SID=RDS_SID)))
(2)使用SQLPLUS连接远程RDS数据库
sqlplus oracle/welcome1@ORARDS
(3)使用tnsping检查RDS连接信息
如果连接有错误,可以使用下面命令查看通讯是否正常
tnsping “(description=(address_list=(address = (protocol = TCP)(host = RDS_HOST_NAME)(port = RDS_PORT)))(connect_data =(SID= RDS_SID)))”
tnsping应该返回“OK (xx msec)”类似文字。
如果tnsping不通请检查RDS对应的security group,RDS的security group中应当允许当前服务器通过TCP协议访问RDS数据库的端口。
(4)创建目标RDS的directory对象
exec rdsadmin.rdsadmin_util.create_directory(‘dpump_dir1’);
创建成功后退出连接RDS的SQL Plus客户端。
**步骤三:将源数据库Data Pump导出的文件上传到RDS数据库**
(1)连接源数据库并创建database link
create database link to_rds connect to oracle identified by welcome1 using ‘(description=(address_list=(address = (protocol = TCP)(host = RDS_HOST_NAME)(port = RDS_PORT)))(connect_data =(SID=RDS_SID)))’;
(2)运行DBMS_FILE_TRANSFER包将数据传输到RDS服务器的目录
BEGIN
DBMS_FILE_TRANSFER.PUT_FILE(
source_directory_object => ‘dpump_dir1’,
source_file_name => ‘test.dmp’,
destination_directory_object => ‘dpump_dir1’,
destination_file_name => ‘test.dmp’,
destination_database => ‘to_rds’
);
END;
**步骤四:通过impdp命令将远程的RDS数据库文件导入**
(1)在源数据库服务器上运行impdp命令导入数据
impdp oracle@ORARDS dumpfile=test.dmp directory=dpump_dir1 full=y
执行完毕检查test用户和相关的表。
### 3. 总结
从上面的过程我们可以看到,将一个Oracle数据库迁移到RDS的过程并不复杂,如果源数据库很大,由于需要导出数据、将数据上传到RDS的Data Pump目录、导入数据,迁移的过程也会比较长。上述过程假设了我们生产数据库的业务有足够的停机时间,在迁移过程中数据不会变化。如果迁移过程中,源数据库会发生变化,那么我们就需要同步数据中心和RDS数据库间的日志了。
如果源数据库很大,我们也可以在AWS上启动一台中间服务器,并在中间服务器上安装Oracle的客户端软件,将源数据库的Data Pump导出文件分片然后scp复制、Tsunami UDP加速上传等方式将文件上传到中间服务器,然后上传到RDS的Data Pump目录,这样能加速迁移的过程。
#### 作者介绍:
![](https://s3.cn-north-1.amazonaws.com.cn/images-bjs/Lan+Yong-mini.jpg)
蓝勇
AWS解决方案架构师,负责基于AWS的云计算方案架构的咨询和设计,同时致力于AWS云服务在国内的应用和推广,在DR解决方案、数据仓库、RDS服务、企业应用、自动化运维等方面有着广泛的设计和实践经验。在加入AWS之前,在甲骨文中国担任资深售前工程师,负责售前方案咨询和架构设计,在数据库,中间件,大数据及企业应用方面有丰富经验。
复制代码


TAGS:


Amazon RDS


,


Oracle数据库


,


大咖专栏


,


数据库


,


迁移


本文转载自 AWS 技术博客。


原文链接:


https://amazonaws-china.com/cn/blogs/china/oracle-data-pump-rds-oracle/


2019 年 11 月 20 日 08:00232

欲了解 AWS 的更多信息,请访问【AWS 技术专区】

评论

发布
暂无评论
发现更多内容

如何评估 Serverless 服务能力?这份报告给出了 40 条标准

Serverless Devs

云计算 云原生 Forrester Wave #Serverless

Bugless 异常监控系统 (iOS端)

37手游iOS技术运营团队

ios iOS Developer 崩溃分析 bugless

MeterSphere | 超好用的开源测试平台

Python测试和开发

签约计划

现货量化交易系统开发源码,倍投马丁策略交易软件搭建

WX13823153201

腾讯游戏运营总监酒后吹批:运维工程师这些知识点都不会?赶紧找个地埋了吧!

代码熬夜敲

Java Python 网络安全 渗透测试 linux运维

Vue-1-初识

Python测试和开发

签约计划

百余大企业共赴新文明之约:2021 DEMO WORLD 世界创新峰会拉开帷幕

创业邦

创新

40K成功入职:六年开发终获小米Offer(附面经+面试题+答案详解)

Java架构师迁哥

论证:iOS安全性,为什么需要审核?

37手游iOS技术运营团队

ios SIP Sandbox iOS Developer ios安全

阿里架构师梳理4万字长篇Java程序员必备核心面试知识,进入大厂不是梦

Crud的程序员

Java 程序员 架构

太强了!阿里大牛整理的1000道Java面试题必考题,不知道又有多少人靠着它成功上岸?

神奇小汤圆

Java 程序员 架构 面试

涵盖了所有计算机底层知识总结与操作系统的实战教程,建议收藏

周老师

Java 编程 程序员 架构 面试

编曲新手可以用什么编曲软件?

奈奈的杂社

编曲 编曲宿主 编曲软件

牛x运维常用的工具系列-1

运维研习社

运维 工具分享 5月日更

禁欲28天!一宅男居然肝出如此详细Web安全学习笔记,学妹看完直接抽搐了!(第二弹)

代码熬夜敲

Java Python 网络安全 Web linux运维

MPP大规模并行处理架构详解

五分钟学大数据

大数据 MPP 5月日更

公安情报研判管理分析平台开发,重点人员监控预警系统建设

WX13823153201

中国呼叫中心与卓越客服产业峰会,百度智能客服再提行业创新

百度大脑

解决方案 行业创新

牛掰!“基础-中级-高级”Java程序员面试集结,看完献出我的膝盖

Crud的程序员

Java spring 架构 编程语言 JVM

🔎【Java源码探索】深入浅出的分析HashMap(JDK8)

李浩宇/Alex

Java 源码 源码分析 hashmap 5月日更

备战金九银十,腾讯T4梳理2020年最全999道Java岗必备面试题答案

周老师

Java 编程 程序员 架构 面试

我厂与张家港市达成全面战略合作,共推数据中心和城市智能化转型

百度大脑

数据中心 城市智能化

服务可达,达者为先,产品发布会嘉宾精彩观点分享!

博睿数据

博睿数据 数据链DNA 服务可达

从零开始学习ThingJS之创建App对象

森友小锘

可视化 3D可视化 数字孪生

ARM和X86云服务器的算力对比

Python测试和开发

签约计划

面阿里P7,竟问这么简单的题目?

Java架构师迁哥

Fabric | 自动化神器

Python测试和开发

签约计划

走向机器智能时代:移动机器人的困局与创新

晨山资本

机器人 移动机器人 AMR

1小时内被全网疯转 29.8w 次,最终被所有大V协力封杀!

Java架构师迁哥

IGS大会回顾|穿越火线手游背后的数据库TcaplusDB

数据人er

数据库 nosql tencentdb TcaplusDB igs大会

公安局重点人员研判分析系统解决方案

13823153121

使用Oracle Data Pump将数据库迁移到AWS的RDS Oracle数据库-InfoQ