278
阿里云
Oracle到PPAS不停机数据迁移__数据迁移_用户指南_数据传输-阿里云
使用数据传输DTS可以将本地的Oracle的数据迁移至RDS For PostgreSQL Plus Advanced Server。同时,DTS提供的增量数据迁移功能,可以实现Oracle在提供服务的过程中,进行数据迁移,当Oracle跟PPAS两边数据达到动态同步过程中,将业务切换到PPAS,使得依赖Oracle的应用停机时间最短。
本小节简单介绍使用DTS进行Oracle->RDS For PostgreSQL Plus Advanced Server不停机数据迁移的任务配置流程。
为便于编写,下文用 RDS For PPAS表示 RDS For PostgreSQL Plus Advanced Server。
迁移类型简介
Oracle->RDS For PPAS的迁移,支持结构迁移、全量数据迁移及增量数据迁移。各个迁移阶段的支持范围如下:
结构迁移
DTS将迁移对象的结构定义迁移到目标实例。目前DTS支持的对象包括:表、视图、同义词、触发器、存储过程、存储函数、包、自定义类型。
全量数据迁移
DTS将源数据库迁移对象的存量数据迁移到目标实例。
如果未选择增量数据迁移,那么Oracle数据库有数据写入的话,新增增量数据不一定能够被迁移到PPAS中。所以,如果要保证迁移数据一致性,那么尽量选择在业务低峰期进行停机迁移。
增量数据迁移
增量数据迁移会将迁移过程中,源Oracle实例的增量变更数据同步到目标PPAS实例,增量数据迁移可以实现Oracle实例在迁移过程中产生的增量数据被实时同步到目标库,最终Oracle同目标RDS PPAS实例进入动态数据同步的过程。
迁移限制
- 迁移过程中,不支持DDL操作
- 不支持物化视图的迁移
- 结构迁移时,reverse index迁移到RDS For PPAS中,存储成普通索引
- 结构迁移时,位图索引迁移到RDS For PPAS,存储成普通索引
- 结构迁移时,分区索引迁移到RDS For PPAS,在每个分区上创建独立的索引
- 增量数据迁移只支持有主键,或有非空唯一索引的表
- 增量数据迁移不支持long类型
迁移权限要求
当使用DTS进行Oracle->RDS For PPAS迁移时,不同迁移类型,对源及目标数据库的迁移帐号权限要求如下:
迁移类型 | 结构迁移 | 全量迁移 | 增量数据迁移 |
---|---|---|---|
本地Oracle实例 | schema的owner | schema的owner | SYSDBA |
目的RDS for PPAS实例 | schema的owner | schema的owner | schema的owner |
迁移前置条件
- Oracle版本为10g,11g,12c
- Oracle 开启supplement log,且要求 supplemental_log_data_pk,supplemental_log_data_ui 开启
- Oracle要求开启archive log
数据类型映射关系
由于Oracle跟RDS For PPAS的数据类型不是一一对应的,所以数据传输服务在进行结构迁移时,会根据两种数据库类型的数据类型定义,进行类型映射,下表为数据传输服务定义的数据类型映射关系。
Oracle数据类型 | PPAS数据类型 | 数据传输服务是否支持 |
---|---|---|
varchar2(n [char/byte]) | varchar2[(n)] | 支持 |
nvarchar2[(n)] | nvarchar2[(n)] | 支持 |
char[(n [byte/char])] | char[(n)] | 支持 |
nchar[(n)]] | nchar[(n)] | 支持 |
number[(p[,s])] | number[(p[,s])] | 支持 |
float(p)] | double precision | 支持 |
long | long | 支持 |
date | date | 支持 |
binary_float | real | 支持 |
binary_double | double precision | 支持 |
timestamp[(fractional_seconds_precision)] | timestamp[(fractional_seconds_precision)] | 支持 |
timestamp[(fractional_seconds_precision)]with time zone | timestamp[(fractional_seconds_precision)]with time zone | 支持 |
timestamp[(fractional_seconds_precision)]with local time zone | timestamp[(fractional_seconds_precision)]with time zone | 支持 |
clob | clob | 支持 |
nclob | nclob | 支持 |
blob | blob | 支持 |
raw | raw(size) | 支持 |
long raw | long raw | 支持 |
bfile | — | 不支持 |
interval year(year_precision) to mongth | interval year to mongth | 不支持 |
interval day(day_precision) to second[(fractional_seconds_precision)] | interval day to second[(fractional_seconds_precision)] | 不支持 |
由于RDS For PPAS不支持数据类型timestamp[(fractional_seconds_precision)]with local time zone,所以数据传输服务在迁移这种类型的数据时,会将其转换成UTC时区后,存入RDS For PPAS的数据类型timestamp[(fractional_seconds_precision)]with time zone中.
迁移步骤
下面详细介绍下使用DTS将Oracle数据库迁移到RDS for PPAS的任务配置流程。
迁移帐号创建
迁移任务配置,需要提供Oracle数据库及目标RDS实例的迁移账号。迁移账号所需权限详见上文的 迁移权限要求。
如果您的Oracle实例的迁移账号尚未创建,那么您可以参考 Oracle Grant语法说明,创建满足要求的迁移账号。
RDS For PPAS 迁移账号的创建及授权操作如下:
迁移任务配置
当上面的所有前置条件都配置完成后,就可以开始正式的数据迁移了。下面详细介绍迁移任务配置流程。
- 使用目标RDS实例所属阿里云账号登陆数据传输DTS控制台,点击右上角的创建迁移任务,开始迁移任务配置。
Oracle实例及目标RDS实例连接信息配置。
这个步骤主要配置 迁移任务名称,Oracle连接信息及目标RDS实例连接信息。其中:
任务名称
DTS为每个任务自动生成一个任务名称,任务名称没有唯一性要求。您可以根据需要修改任务名称,建议为任务配置具有业务意义的名称,便于后续的任务识别。
源实例信息
- 实例类型:选择 有公网IP的自建数据库
- 数据库类型: 选择 Oracle
- 主机名或IP地址: 配置Oracle访问地址,这个地址必须为公网访问方式
- 端口:Oracle实例的监听端口
- SID:Oracle实例的SID
- 数据库账号:Oracle实例的连接账号
- 数据库密码:上面Oracle连接账号对应的密码
目标实例信息
- 实例类型:选择 RDS实例
- RDS实例ID: 配置迁移的目标RDS实例的实例ID。 DTS支持经典网络、VPC网络的RDS实例
- 账号:RDS实例的连接账号
- 密码:上面RDS实例连接账号对应的密码
当配置完连接信息后,点击右下角 授权白名单并进入下一步 进行白名单授权。这个步骤DTS会将DTS服务器的IP地址添加到目标RDS实例的白名单中,避免因为RDS实例设置了白名单,导致DTS服务器连接不上RDS实例导致迁移失败。
迁移对象及迁移类型配置。
迁移类型DTS支持 结构迁移、全量数据迁移、增量数据迁移。
如果需要进行不停机迁移,那么需要选择:结构迁移+全量数据迁移+增量数据迁移。
如果只进行全量迁移,那么需要选择:结构迁移+全量数据迁移。
迁移对象
迁移对象,需要选择您要迁移的对象。迁移对象选择的粒度可以为:库、表、列三个粒度。默认情况下,对象迁移到RDS For PPAS实例后,对象名跟本地Oracle实例一致。如果您迁移的对象在源实例跟目标实例上名称不同,那么需要使用DTS提供的对象名映射功能,详细使用方式可以参考库表列映射。
当配置完迁移对象及迁移类型后,即进入任务启动前的预检查步骤。
预检查。
在迁移任务正式启动之前,会先进行前置预检查,只有预检查通过后,才能成功启动迁移。
如果预检查失败,那么可以点击具体检查项后的按钮,查看具体的失败详情,并根据失败原因修复后,重新进行预检查。
当修复完成后,可以在任务列表中,选择这个任务,重新启动预检查。
购买实例并启动任务。
当预检查通过后即进入迁移实例购买清单确认界面。请根据业务压力选择具体的规格并同意产品服务条款后,启动迁移任务。
当任务启动后,可以到任务列表中查看任务具体的迁移状态及进度。
增量数据迁移是个动态同步的过程,所以建议在增量迁移达到无延迟状态时,在目标数据库上进行业务验证,如果验证成功,那么可以停掉迁移任务,然后将业务切换到目标数据库。
至此,完成本地Oracle数据库到RDS for PPAS实例的不停机数据迁移的任务配置。
附:预检查内容
DTS在启动迁移之前,会进行前置预检查,本小节简单介绍Oracle->RDS For PPAS的预检查内容:
预检查项 | 检查内容 | 备注 |
---|---|---|
源库连接性检查 | 检查DTS服务同Oracle实例的连通性 | (1) 填写信息是否有误?如果填写信息有误,请修改后重新预检查 (2) 检查Oracle是否开启监听端口 |
目的库连接性检查 | 检查DTS服务同目的RDS For PPAS实例的连通性 | 检查填写信息是否有误,如果有误请先修改后重新预检查 |
源库版本检查 | 检查Oracle实例的版本,DTS是否支持 | DTS目前只支持10g,11g,12c三个版本 |
源库权限检查 | 检查Oracle实例访问账号的权限是否满足要求 | 如果权限不足,请参照上面的权限要求一节授权后,重新预检查 |
目的库权限检查 | 检查RDS For PPAS实例访问账号的权限是否满足要求 | 如果权限不足,请参照上面的权限要求一节授权后,重新预检查 |
同名对象存在性检查 | 检查待迁移对象在目标RDS For PPAS是否已经存在 | 如果检查失败,请将目标库中这些已经存在的对象删除后,重新进行预检查 |
源端同名对象存在性检查 | 检查待迁移对象中,要迁入目标同一个schema的对象是否同名 | 如果检查失败,可以参考 库表列映射 将重名对象进行重命名 |
源库日志模式检查 | 检查源库是否开启archive log | 如果未开启,请启用后,重新预检查 |
约束完整性检查 | 检查待迁移对象依赖的父对象是否迁移 | 如果检查失败,那么可以修改迁移对象,同时迁移依赖的父对象后,重新预检查 |
DBLINK存在性检查 | 检查源库是否存在DBLINK | 如果存在,那么需要修改迁移对象,不选择DBLINK |
增量拓扑冲突检查 | 检查同一个迁移对象是否已经存在迁移链路 | 如果存在冲突链路,那么需要删除掉冲突链路后,重新预检查 |
字段类型检查 | 检查待迁移表的是否存在数据类型为long类型的字段 | 如果存在那么对应的表只能进行全量数据迁移,不能选择增量数据迁移 |
表是否存在主键或者唯一性非空索引检查 | 检查待迁移表是否包含主键或非空唯一键 | 如果存在那么对应的表只能进行全量数据迁移,不能选择增量数据迁移 |
补偿日志开启检查 | 检查是否开启supplemental_log | 如果未开启,请启用后,重新预检查 |
最后更新:2016-11-23 16:03:55
上一篇:
SQL Server不停机迁移__数据迁移_用户指南_数据传输-阿里云
下一篇:
本地PostgreSQL迁移至RDS for PostgreSQL__数据迁移_用户指南_数据传输-阿里云
快速搭建移动应用直传服务__移动应用端直传实践_最佳实践_对象存储 OSS-阿里云
云服务器 ECS 申请解锁
阿里云如何成为智慧环保的“天眼”和“大脑”?
查询路由表列表__路由表相关接口_API 参考_云服务器 ECS-阿里云
使用金融云VPC__使用金融云产品_金融云-阿里云
CNAME回源___产品功能说明_产品常见问题_DDoS 高防IP-阿里云
AWS、阿里云等诸强竞争下,百度云能否用ABC战略突围?
MergeShards__日志库相关接口_API-Reference_日志服务-阿里云
设置页面优化__配置操作接口_API 手册_CDN-阿里云
创建授权__资源授权接口_Open API_消息队列 MQ-阿里云
相关内容
常见错误说明__附录_大数据计算服务-阿里云
发送短信接口__API使用手册_短信服务-阿里云
接口文档__Android_安全组件教程_移动安全-阿里云
运营商错误码(联通)__常见问题_短信服务-阿里云
设置短信模板__使用手册_短信服务-阿里云
OSS 权限问题及排查__常见错误及排除_最佳实践_对象存储 OSS-阿里云
消息通知__操作指南_批量计算-阿里云
设备端快速接入(MQTT)__快速开始_阿里云物联网套件-阿里云
查询API调用流量数据__API管理相关接口_API_API 网关-阿里云
使用STS访问__JavaScript-SDK_SDK 参考_对象存储 OSS-阿里云