有疑问请联系作者微信qw596583587
DMT 工具是DMS 服务的前身,
她是安装在Windows 上的一个软件,迁移前只需要获取得到DMT 工具的AMI,然后
简单的配置后,就可以进行数据迁移了。本文主要讨论如何使用DMT 将Oracle 迁
移到Amazon RDS 数据库,示例的场景如下图所示:
下面会通过这个场景,详细介绍DMT 迁移工具的配置、安装和迁移。
使用DMT 迁移主要有下面几个步骤:
(1)获取DMT 的AMI
(2)启动DMT 的AMI
(3)登陆DMT 服务器
(4)配置服务器
(5)访问DMT 工具
(6)迁移数据
1.获取DMT 的AMI
如果您有数据库数据需要导出或者导入到AWS 北京区域中,首先您需要获取DMT
的AMI 镜像,然后根据镜像启动EC2 服务器。获取DMT 的镜像有两种方式:
(1)和支持您当前AWS 账号的商务人员联系,他能帮您在后台申请访问DMT AMI
的权限。
(2)您也可以自己在Support Center 中开case。在AWS Console 中访问访问
Support Center 的方式如下图所示:
2.启动DMT 的AMI
当您有能访问DMT AMI 以后,登陆您的AWS 账号,进入Services->EC2->AMI 的界
面,选择”Private images”列表,就可以看到有一个
Amazon_RDS_Migration_Tool 的记录,这就是最新的迁移工具了,如下图所示:
选择DMT 点击上方的”Lunch”按钮,启动一个已经安装好DMT 工具的服务器。点
击Lunch 后,出现如下界面:
根据您要复制的数据库大小和期望的复制速度,选择一个合适大小的实例。如果希
望迁移速度快,可以选择一个性能高的实例,完成迁移后,只需删除相应的实例,
就不会有相关费用。选择好实例后的下一步,显示如下界面:
在配置界面,您需要选择DMT 服务器所在的VPC,尽量选择源或者目标数据库所在
的VPC 创建DMT 的服务器,这样能加快迁移的速度。完成数据库配置后,下一步显
示如下界面:
在此页面需要为DMT 服务器增加相应的存储,由于DMT 实际并不存储所有迁移中间
数据,因此选择100G-500G 左右的EBS 卷。下一步界面如下:
在此步骤只需要给服务器打一个Tag。下一步界面如下:
在此步骤中,需要配置安全组,安全组应该允许RDP 协议和https 协议。由于DMT
服务器是Windows server 服务器,因此您需要使用Windows 远程桌面连接访问,
此时需要RDP 协议,source 指定当前需要连接客户端的IP 或者IP 段。
DMT 工具可以通过浏览器来访问,因此需要设置https 协议的安全组。下一步的界
面如下所示:
在此步骤中review DMT 的配置,然后就可以启动DMT 服务器了。启动后,需要下
载用于访问服务器的私钥。如下图所示:
3.登陆DMT 服务器
启动DMT 服务器,并下载私钥后,就可以登陆DMT 服务器了,如下图所示,当您的
服务器状态显示为running,并且通过健康检查后,您的服务器就可以正常访问
了。如下图所示:
选择您的DMT 服务器,然后点击Connect,显示如下界面:
在此步骤中,您需要根据下载的私钥获取登陆Windows 的密码。点击 get
Password,显示如下图所示界面:
输入您前面下载的私钥的文件全部内容,点击 Decrypt Password 后,你在界面上
可以看到Administrator 的密码,请记录下这个密码。下面就可以登陆服务器了。
本例中是使用MAC 的Windows 远程终端软件来访问DMT 服务器,如果您使用
Windows 客户端,访问过程类似,输入远程DMT 服务器的DNS 名称,输入用户名和
密码并连接。
连接上DMT 终端后,您会看到windows server 2012 的桌面如下图所示,桌面上有
DMT 工具。
连接到远程终端后,您可以根据需要修改访问Windows 的密码,修改密码可以在控
制面板中完成,界面如下:
4. 配置服务器
登陆到DMT 服务器后,在界面上有Database Migration Tool Documentation 的目
录,进入目录并下载QuickStart Guide.下载过程中如果出现如下错误,请添加授
信站点或者配置服务器解决错误。
下载Quick Start Guide 和PDF 阅读软件。
打开QuickStart Guide 如下图所示,您可以按照您数据库的类型(Oracle, MYSQL
等)选择相应的驱动程序。
本例中由于迁移的是Oracle 数据库,安装Oracle 的驱动和客户端相对复杂,下面
会详细解释如何安装Oracle 驱动,其他驱动的安装请参考文档。点击Quick
Start Guide 中的Oracle Instant Client 后面的链接后,出现如下界面(需要您
有Oracle 账号才能下载软件):
下载Instant Client Package-Basic: All files required to run OCI….的文
件,也就是上图第一个黄色方框中的文件。
下载Instant Client Package-ODBC 驱动,如上图第二个黄色方框。由于DMT 安装
在Windows Server 上,因此有很多安全的限制,如果遇到禁止下载的错误,可以
参照下图:
选择Internet,然后点击Customer level。
选择Downloads,然后Enable 下载,就可以正常下载Oracle 的软件了。
下载完成后,basic 和odbc 的包如上图所示。
创建 c:\oracle 目录,将目录作为解压的目录,选中 basic-windows 的文件,然
后解压到oracle 目录,如下图示:
选中odbc 的压缩包,然后解压到c:\oracle
解压后的文件目录结构大致如下:
选中 odbc_install.exe 并运行,如下图:
选择run,默认没有反应是正常状态 。
将变量 C:\oracle\instantclient_12_1 添加到Path 变量中,如下图所示:
增加TNS_ADMIN 变量如下图所示:
在本例中,增加的变量TNS_ADMIN 和变量Path 的值相同。
5.访问DMT 工具
先使用界面上的工具Stop Amazon RDS Migration Service 停止DMT 服务。这样避
免刚才设置的环境变量没有应用DMT 工具中。
在点击在桌面点击下面图标启动DMT 服务。
启动后,如果见到下面的窗口:
表示启动成功。
下图所示:
见到Console 的界面,表示DMT 服务启动成功.DMT 的console 可以在服务器上访
问,也可以在客户端访问,在外网访问只需要获取到DMT 服务器的Public DNS,
使用下面格式URL 从外网访问DMT console。
https://your-public-dns/AmazonRDSMigrationConsole
访问console 后,会弹出如下界面,输入访问windows 的用户名和密码。
输入登陆系统的用户名和密码并登陆,显示如下界面:
在界面中使用Manage Database 创建Source 和Target 数据库,创建Task 就可以
开始迁移您的数据库了。
6.使用DMT 迁移数据
当您通过前面的步骤能够正确地访问DMT 工具,说明配置基本成功,下面就可以通
过DMT 迁移您的数据库了。
Step1: 配置源数据库连接信息
点击上图中的Manage Databases->Add Database,输入数据库类型为Oracle,填
好具体URL 及数据库的Role 的信息,示例信息如下:
参数说明:
Name:给需要迁移的数据库定义一个名称,可以根据需要定义。
Description:给需要迁移的数据库一个详细的描述。
Role:需要迁移数据库的角色,如果是迁移中的源数据库,则选择SOURCE,如果是
迁移中的目标数据库,则选择TARGET.
Connection String:对于传统Oracle 数据库的格式为 ip:port/sid
User name:数据库连接的用户名
Password:数据库连接的密码
Step2: 配置目标RDS 数据库连接信息
配置目标RDS 数据库信息如下:
RDS 的Connection String 的格式为:
Step 3:检查Source 和Target 数据库的归档模式和Supplemental Log
由于DMT 工具可以捕捉数据库日志,将源数据库的变化复制到目标数据库去,这种
复制方式要求源和目标数据库都是归档的数据库,并且需要Supplemental Log 的
设置。
使用SQL PLUS 连接源数据库,如果数据库处于非归档模式,则将数据库改为归档
模式。
并运行下面语句,修改Log 设置:
SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
Database altered.
使用Oracle SQL Developer 或者其他客户端工具连接RDS 目标数据库,运行下面
的语句:
exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD');
Step 4:创建Task
在主界面上点击“New Task”,如下图所示:
Task options: 定义复制的类型,Full Load 表示将当前的表和数据拷贝到目标数
据库。Apply Changes 表示将当前时刻到停止复制前的日志变化同步到目标数据
库。
如果两个都选择,表示同步数据,并将捕捉到的数据库变化复制到目标数据库。
Step 5:定义Task
将Source 和Target 数据库的图标,拖入到左边的流程图中,如下图所示,我们定
义了将OracleSourceDB 复制到RDSDatabase 中。
定义好流程后,点击Table Selection 选择需要复制哪些表。如下图所示:
在此图中,我们复制的是TEST.T_USERS 表。您也可以使用Patterns 的方式匹配表
名。
点击Task 中的Run 按钮,很快数据库就开始迁移了。
7. 错误诊断
(1)如果在测试数据库时出现oci.dll 无法加载的错误,如下图所示:
这个错误一般说明你没有将instance client 的路径配置到path 变量中去。此时
只需要配置好变量,然后停止并启动DMT 服务就可以了。
(2)ORA-12170: TNS: Connect timeout occurred [122307] OCI error.
如果出现此错误,说明DMT 工具连接数据库超时,此时请检查RDS 数据库的
Security Group 是否开启了DMT 服务器的1521 端口的访问,或者检查数据库的防
火墙等网络设置,确保DMT 服务器能够正常访问Oracle 服务器。