首页
下载应用
提交文章
关于我们
🔥 热搜 🔥
1
微信公众平台
2
知乎
3
dnf私服
4
贴吧
5
whatsapp web
6
baidu
7
1
8
微 信 freewechat
9
百度
10
自由 微 信
分类
社会
娱乐
国际
人权
科技
经济
其它
首页
下载应用
提交文章
关于我们
🔥
热搜
🔥
1
微信公众平台
2
知乎
3
dnf私服
4
贴吧
5
whatsapp web
6
baidu
7
1
8
微 信 freewechat
9
百度
10
自由 微 信
分类
社会
娱乐
国际
人权
科技
经济
其它
反向激励,在加速这个社会的黑化
刚刚,司法部原副部长,在公安部工作过28年的省公安厅原厅长被查
观察|实验室被强行关闭,病毒学家在门口过夜?
把病毒学家逼成流浪汉,就不怕实验室里的病毒也流浪上海吗?
把病毒学家逼成流浪汉,就不怕实验室里的病毒也流浪上海吗?
生成图片,分享到微信朋友圈
查看原文
其他
手把手教你上云 | 使用Oracle Data Pump将数据库迁移到AWS的RDS Oracle数据库
2016-09-27
蓝勇
AWS
作者简介
蓝勇
AWS解决方案架构师
负责基于AWS的云计算方案架构的咨询和设计,同时致力于AWS云服务在国内的应用和推广,在DR解决方案、数据仓库、RDS服务、企业应用、自动化运维等方面有着广泛的设计和实践经验。在加入AWS之前,在甲骨文中国担任资深售前工程师,负责售前方案咨询和架构设计,在数据库、中间件、大数据及企业应用方面有丰富经验。
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数据库。示例数据库的信息如图:
下面是模拟在数据中心的Oracle 11g源数据库中创建用户和表,并将源数据库迁移到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目录,这样能加速迁移的过程。
您可能也对以下帖子感兴趣
{{{title}}}
文章有问题?点此查看未经处理的缓存