【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

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

  • 2019-11-20
  • 本文字数:2182 字

    阅读完需:约 7 分钟

使用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:00706

评论

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

Spring Cloud Alibaba 生态学习

风翱

spring cloud alibaba 5月日更

技术笔记(语音识别-语音噪声分类)

攻城先森

噪声 5月日更 技术笔记

⚓【Java知识晚餐】精心准备的JVM分析工具⚓

洛神灬殇

Java JVM 5月日更 JVM分析工具

快速搭建接口自动化测试框架

夏兮。

Java JUnit 接口测试 rest-assured

客制化:定制专属于你的产品和服务

石云升

产品 用户 职场经验 5月日更

防治肥胖,AI转向

脑极体

Gradle学习笔记

ES_her0

5月日更

华为云PB级数据库GaussDB(for Redis)揭秘第十期:GaussDB(for Redis)迁移系列(上)

华为云开发者联盟

数据仓库 华为云 数据迁移 GaussDB(for Redis) PB级数据库

「技术人生」专题第1篇:什么是技术一号位?

阿里巴巴中间件

这个云原生开发的痛点你遇到了吗?

阿里巴巴中间件

由高频护网设备漏洞引发的供应链浅思

Thrash

安全

零基础学习NLP-DAY2

Qien Z.

nlp 5月日更

将自媒体玩得风生水起的不一定是前总统,还有可能是艺术家

zhoo299

艺术 自媒体 5月日更

Windows自带的功能这么好用,还装什么第三方软件?

彭宏豪95

windows 5月日更

流量变现业务概论——Linkedmall流量变现业务初步分析及系统设计概要

关贺宇

MySQL 到 ClickHouse 的高速公路

青云技术社区

MySQL 数据库 Clickhouse

传统BI如何转大数据数仓

数据社

大数据 BI 5月日更

你认识镜子里的那个自己吗?

小天同学

原则 认知 5月日更

网络协议之HTTP:HTTP 1.1与HTTP 2

程序员架构进阶

HTTP2.0 28天写作 HTTP协议 5月日更

Ansible AD-Hoc

耳东@Erdong

ansible 5月日更

人证一体机产品设计

lenka

5月日更

学习笔记:02 | 第一个程序:教你输出彩色的文字

Nydia

学习

编程思考路径2条

顿晓

5月日更 思考路径

源码解析之Seata项目中的分布式ID生成算法

Coder的技术之路

分布式 分布式ID

关于组件,你真的了解么?

架构精进之路

组件化 5月日更

微软为什么要对jdk下手?阿里对JDK的理解又是什么样的?

Java架构师迁哥

网络攻防学习笔记 Day11

穿过生命散发芬芳

5月日更 网络攻防

【图片旋转】十五分钟挑战鸿蒙Codelab组件

liuzhen007

鸿蒙 5月日更

再学习一个 Golang 专栏

escray

学习 极客时间 Go 语言 5月日更

NumPy之:理解广播

程序那些事

Python Numpy 程序那些事

【LeetCode】子数组异或查询Java题解

Albert

算法 LeetCode 5月日更

使用Oracle Data Pump将数据库迁移到AWS的RDS Oracle数据库_其他_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章