阿里云RDS中DTS使用指导及总结

本文转自阿里云RDS迁移文档 点击查看原文,本文主要目的是讲述作者在使用RDS的DTS(数据迁移服务时)遇到的问题,多次通过工单与阿里云工程师交流,如果你在使用前阅读本文,可能会少走些弯路,节省时间,我会把遇到的问题标注在本帮助文档的相应位置。(总结在文章最后)

Oracle迁移至RDS

使用DTS(http://dts.aliyun.com)将本地的Oracle迁移至RDS for PPAS实例中,可以进行结构定义迁移及全量数据迁移。迁移过程中,对本地的Oracle数据库没有影响。

  • 结构迁移
    DTS会将迁移对象的结构定义迁移到目标实例。目前DTS支持结构迁移的对象有:表、视图、同义词、触发器、存储过程、存储函数、包、自定义类型
  • 全量迁移
    DTS会将源数据库迁移对象在的数据全部迁移到目标实例。如果迁移过程中,本地Oracle库有数据写入的话,那么这些增量数据不一定能够被迁移到PPAS中。所以,如果要保证数据一致性,那么尽量选择在业务低峰期进行全量迁移
  • 迁移过程中,不支持DDL操作
  • 不支持物化视图的迁移
  • 结构迁移时,会将reverse index迁移成普通索引
  • 结构迁移时,会将位图索引迁移成普通索引
  • 结构迁移时,会将分区索引迁移成,在每个分区上单独创建自己的索引

当使用DTS进行Oracle迁移时,在不同迁移类型情况下,源跟目标数据库的迁移帐号权限要求如下:

迁移类型 结构迁移 全量迁移
本地Oracle实例 create session
select any directory
create session
select any directory
select any table
目的RDS for PPAS实例 create
connect
schema的owner

##此处描述不够明确,本次做的是结构迁移,作者误认为本地Oracle实例用户(源库)只需要上述2个权限就可以完成迁移,并且新建立了一个独立只读账户专门用于本次DTS,但是失败了,最后发起工单,工程师反馈最好是使用表的owner进行迁移,读者请注意。

下面详细介绍下用户如何使用DTS将本地的Oracle迁移到RDS for PPAS上的流程

在正式迁移之前,需要确认目标RDS实例中是否已经创建好了需要迁入的数据库,如果没有创建的话,需要先在目标PPAS实例中创建数据库。

在正式迁移之前,需要先在本地Oracle数据库及云上PPAS实例中创建迁移帐号,并将要迁移的库表的相关权限授权给上面创建的帐号。

当上面的所有前提条件都配置完成后,就可以开始正式的数据迁移了。下面详细介绍下具体的迁移步骤。
1)进入DTS控制台,点击创建迁移任务,正式开始任务创建

DTScreateoracle2ppas1

2) 填写本地Oracle跟目标RDS实例的连接信息

DTScreateoracle2ppas2

这里面源实例类型要选择有公网IP的自建数据库

3)选择迁移对象及迁移类型

DTScreateoracle2ppas3

默认情况下,迁移对象迁移到目标库后,对象名跟源库一致。如果用户想修改对象在目标库上的名字时,可以直接修改已选择的对象名。

DTScreateoracle2ppas5

当点击编辑后,即进入对象名称修改页面:

DTScreateoracle2ppas6

修改了对象名后,目标实例的对象名即为修改后的对象名。

4)启动预检查
在数据正式迁移之前,会先进行基础预检查,只有预检查通过后,才能启动迁移

DTScreateoracle2ppas7

如果预检查失败,那么可以查看具体的失败详情,根据失败原因修复后,重新进行预检查

DTScreateoracle2ppas8

当点击查看后,可以查看到具体的预检查失败原因:

DTScreateoracle2ppas9

当修复完成后,可以在任务列表中,选择这个任务,然后重新启动预检查

DTScreateoracle2ppas11

5)启动迁移任务
当预检查通过后,我们可以启动迁移任务,任务启动后,可以到任务列表中查看具体的迁移状态及进度

DTScreateoracle2ppas12

至此,完成将本地Oracle数据库迁移到RDS for PPAS实例的数据迁移工作。

##与阿里云工程师大战2天后总结:

1、做DTS迁移源库工程师建议使用对象的owner账户进行迁移,说明文档说上需要2个权限是不正确的。

2、预检查成功通过,不代表你可以成功迁移,笔者就遇到了oracle使用的sys_guid 在PPAS中是不存在的,也是通过工单系统工程师后台通过基于UUID的功能手工建立的sys_guid同名函数解决的。官方文档http://www.postgresql.org/docs/9.4/static/uuid-ossp.html,这块耗时比较长,可能是工程师和后台的DBA在沟通协调。

3、源库含有DBLINK的,是无法迁移的。

4、xmax这个列名在PPAS数据库中属于系统列名,会造成冲突,如果你使用了,建议提前改列名。

5、在打算迁移前,最好了解或是已经掌握了postgresql数据库使用技巧,以免造成使用上的不习惯和麻烦。

发表评论