本文介绍使用数据库和应用迁移服务ADAM(Advanced Database & Application Migration)帮助您完成数据库的结构迁移与订正,然后使用数据传输服务DTS(Data Transmission Service)将自建Oracle的数据迁移至POLARDB兼容Oracle语法引擎的集群。

前提条件

  • 自建Oracle数据库的版本为9i、10g或11g版本。
  • 自建Oracle数据库已开启ARCHIVELOG(归档模式),设置合理的归档日志保持周期且归档日志能够被访问,详情请参见ARCHIVELOG
  • 自建Oracle数据库已开启Supplemental Logging,且已开启supplemental_log_data_pk,supplemental_log_data_ui,详情请参见Supplemental Logging
  • 自建Oracle数据库中的待迁移表需具备主键或非空唯一索引。
  • POLARDB兼容Oracle语法引擎的集群(以下简称为POLARDB集群)的polar_comp_redwood_raw_names参数已设置为off,详情请参见设置集群参数

背景信息

ADAM是阿里云结合阿里巴巴多年的内部业务系统和数据库异构迁移经验(例如Oracle迁移至MySQL/PPAS/PostgreSQL/POLARDB)研发的,可帮助企业数据库和应用业务系统高效、轻松上云的产品,能够为迁移Oracle数据库到阿里云相关数据库提供全生命周期支持。

采用ADAM+DTS执行数据迁移的方案优势如下:

  • 在迁移前采集待迁移的Oracle数据库信息,然后对采集到的数据进行评估分析,最后得出分析报告集(包含专家意见)。报告集的内容包括目标数据库方案、源库不同类型对象的兼容度和不兼容原因、迁移后风险对象及SQL、应用相关的改造建议、迁移方案的成本等。此外,分析结果还包括目标数据库迁移计划。
  • 使用ADAM将源库的Schema对象迁移至目标库,其中完全兼容和改造后兼容的对象在迁移过程中自动完成改造。对于不兼容对象,您可以根据ADAM STUDIO的提示来做改造并验证正确性。
  • 使用DTS执行全量数据迁移+增量数据迁移,实现平滑迁移上云。

费用说明

  • ADAM:使用ADAM STUDIO工具需要申请License授权(目前免费),您可以联系客户经理或提交工单申请。
    说明 您也可以使用数据库专家服务,由阿里云数据库专家为您提供应用架构和数据库架构治理、评估选型、制定数据库平滑迁云迁移方案,费用说明请参见计费方式与价格
  • DTS:仅在增量数据迁移正常运行期间计费(包含增量数据迁移暂停期间),详情请参见产品定价

操作概览

从自建Oracle迁移至POLARDB(兼容Oracle语法引擎)_数据迁移_兼容Oracle数据库用户指南_云数据库PolarDB 阿里云技术文档 第1张
操作步骤 说明
步骤一 采集数据库结构信息 数据库采集器包含结构采集模块和数据打包模块,主要用于采集数据库结构性信息(例如Schema、SQL、存储过程、事务、触发器等)并自动脱敏。
步骤二 分析数据库画像 将采集到的数据库结构性信息上传至阿里云ADAM平台并进行自动分析,帮助您从规模、会话、风险、热点、复杂度、负载等维度全面了解自建Oracle数据库。
步骤三 评估数据库迁移项目 帮助您全面评估目标库的兼容性、规格与可能存在的迁移风险,提供相应的解决方案。
步骤四 生成迁云计划 获取迁云计划用于步骤五 使用ADAM STUDIO迁移结构信息
步骤五 使用ADAM STUDIO迁移结构信息 ADAM STUDIO是ADAM产品的业务割接平台,提供场景化、流程化、自动化的数据库和应用的迁移服务,帮助您完成迁云上云。
步骤六 使用DTS执行数据迁移 使用DTS执行全量数据迁移+增量数据迁移,平滑数据库迁移上云。

步骤一 采集数据库结构信息

  1. 登录待迁移的Oracle数据库,创建用于采集数据的账号并授权。
    说明 如您已创建包含下述权限的账号,可跳过本步骤。
    #创建用于采集数据的账号,名称为eoa_user,密码为eoaPASSW0RD
    create user eoa_user identified by "eoaPASSW0RD" default tablespace users;
    #授予查询权限
    grant connect,resource,select_catalog_role,select any dictionary to eoa_user;
    #授予DBMS_LOGMNR权限(10g版本的数据库需先执行CREATE OR REPLACE PUBLIC SYNONYM dbms_logmnr FOR sys.dbms_logmnr)
    grant execute on DBMS_LOGMNR to eoa_user;
    #授予DBMS_METADATA权限(查询数据对象DDL语句)
    grant execute on dbms_metadata to eoa_user;
    #授予查询事务权限
    grant select any transaction to eoa_user;
    #授予分析表权限
    grant analyze any to eoa_user;
    #授予产生随机编号权限
    grant execute on dbms_random to eoa_user;
    create user c##eoa_user identified by "eoaPASSW0RD" default tablespace users;
    grant connect,resource,select_catalog_role,select any dictionary to c##eoa_user container=all; grant execute on DBMS_LOGMNR to c##eoa_user container=all;
    grant execute on dbms_metadata to c##eoa_user container=all;
    grant select any table to c##eoa_user container=all;
    grant select any transaction to c##eoa_user container=all;
    grant analyze any to c##eoa_user container=all;
    grant execute on dbms_random to c##eoa_user container=all;
  2. 部署数据库采集器。
    说明

    用于部署数据库采集器的设备需满足下述要求:

    • 性能:CPU核数为2核、内存为8GB、硬盘为500G,您也可以使用更高性能的设备。
    • 网络:可以连通待迁移的Oracle数据库。
    • 操作系统:Linux(64位)或Windows(64位)。
    1. 登录ADAM控制台,单击左侧导航栏的资源下载
    2. 数据库采集器下载区域框,单击下载
      从自建Oracle迁移至POLARDB(兼容Oracle语法引擎)_数据迁移_兼容Oracle数据库用户指南_云数据库PolarDB 阿里云技术文档 第2张
    3. 在弹出的对话框中,根据部署环境下载对应操作系统的安装文件。
      从自建Oracle迁移至POLARDB(兼容Oracle语法引擎)_数据迁移_兼容Oracle数据库用户指南_云数据库PolarDB 阿里云技术文档 第3张
    4. 将下载的数据库采集器复制到待部署的设备上并解压。
  3. 在数据库采集器所部署的设备,打开命令行,进入数据库采集器解压的目录,根据数据库版本和操作系统执行下述语句,以采集数据库结构性数据(数据自动脱敏)。
    #Linux 64位操作系统
    collect_10g.sh  -h ip -u username -p password -d service_name
    #Windows 64位操作系统
    collect_10g.bat  -h ip -u username -p password -d service_name
    #Linux 64位操作系统
    collect_11g.sh  -h ip -u username -p password -d service_name
    #Windows 64位操作系统
    collect_11g.bat  -h ip -u username -p password -d service_name
    #Linux 64位操作系统
    collect_12c.sh –h ip -u username -p password -P port -d service_name -s sid
    #Windows 64位操作系统
    collect_12c.bat –h ip -u username -p password -P port -d service_name -s sid>
    说明
    • ip:Oracle数据库的IP地址。
    • username:登录Oracle数据库的账号。
    • password:该账号对应的密码。
    • port:Oracle数据库提供服务的端口号。
    • service_name:Oracle数据库的服务名。
    • sid:Oracle数据库的sid信息(本参数仅适用于12c版本的Oracle数据库)。

    下述命令以Windows 64位操作系统为例,采集Oracle(11g版本)数据库的结构性数据。

    collect_11g.bat -h  172.16.6.234  -u eoa_user -p eoaPASSW0RD -d oracletestdata
    等待数据采集完成,命令行将提示采集结果导出的文件路径。从自建Oracle迁移至POLARDB(兼容Oracle语法引擎)_数据迁移_兼容Oracle数据库用户指南_云数据库PolarDB 阿里云技术文档 第4张
  4. 可选: 清除用于数据采集的账号。
    drop user eoa_user cascade;
    drop user c##eoa_user cascade;

步骤二 分析数据库画像

  1. 登录ADAM控制台,选择左侧导航栏的数据库迁云 > 画像管理
  2. 单击新建画像,设置画像的基本信息并单击创建
    配置 说明
    画像名 为画像配置具有业务意义的名称便于后续识别。
    类型 固定为Oracle
    报告语言类型 根据需求选择为中文英文
    数据文件
    1. 单击上传按钮。
    2. 选择在步骤一 采集数据库结构信息中采集结果所输出的压缩包文件。
  3. 返回画像列表页面,画像分析完成后,可以从数据库的规模、会话、风险、热点、复杂度、负载等维度分析评估数据库的具体信息。
    说明 更多关于数据库画像的分析解读,请参见数据库画像分析
    从自建Oracle迁移至POLARDB(兼容Oracle语法引擎)_数据迁移_兼容Oracle数据库用户指南_云数据库PolarDB 阿里云技术文档 第5张

步骤三 评估数据库迁移项目

  1. 在ADAM控制台,选择左侧导航栏的数据库迁云 > 项目管理
  2. 单击新建项目,设置项目的基本信息并单击创建
    配置 说明
    项目名 为项目配置具有业务意义的名称便于后续识别。
    项目类型 选择为Oracle_To_PolarDB for Oracle
    目标库版本 选择为PolarDB for Oracle
    报告语言 根据需求选择为中文英文
    选择评估Schema 根据业务需求,选择待评估的Schema信息。
    1. 未选择区域框中,勾选待评估的Schema。
    2. 单击从自建Oracle迁移至POLARDB(兼容Oracle语法引擎)_数据迁移_兼容Oracle数据库用户指南_云数据库PolarDB 阿里云技术文档 第6张将其添加至已选择区域框。
    该项目将创建成功并进入待评估状态。
  3. 启动项目评估。
    1. 返回项目管理页面,找到上一步创建的项目,单击其操作列的详情
      从自建Oracle迁移至POLARDB(兼容Oracle语法引擎)_数据迁移_兼容Oracle数据库用户指南_云数据库PolarDB 阿里云技术文档 第7张
    2. 在页面下方的任务统计区域框中,单击评估技术方案对应的进入
    3. 评估选项页签中,选择目标库最大规格和目标库最大容量。
    4. 单击页面最下方的开始评估,然后在弹出的对话框中单击确定
    5. 系统评估完成后,单击页面上方的评估结果页签,全面评估目标库的兼容性、规格与迁移风险,了解ADAM提供相应的解决方案。
      说明 更多关于评估结果的分析解读,请参见数据库评估。您也可以使用数据库专家服务,由阿里云数据库专家为您提供应用架构和数据库架构治理、评估选型、制定数据库平滑迁云迁移方案。

步骤四 生成迁云计划

  1. 在ADAM控制台,选择左侧导航栏的数据库迁云 > 项目管理
  2. 找到目标项目,单击其操作列的详情
  3. 在下方的任务统计区域框中,单击制作迁云计划对应的进入
    从自建Oracle迁移至POLARDB(兼容Oracle语法引擎)_数据迁移_兼容Oracle数据库用户指南_云数据库PolarDB 阿里云技术文档 第8张
  4. 在页面底部的迁移计划区域框中,单击操作列的下载
    获取到ADAM生成的迁云计划文件,该迁云计划将用于步骤五 使用ADAM STUDIO迁移结构信息中。

步骤五 使用ADAM STUDIO迁移结构信息

下载阿里云_ADAM_Studio用户手册,然后按照手册内容执行结构迁移。

警告 仅使用ADAM STUDIO执行结构迁移,在迁移过程中可评估ADAM STUDIO工具给出的提示,然后执行结构订正以获得更好的兼容性。

步骤六 使用DTS执行数据迁移

说明 DTS在执行全量数据迁移时将占用源库和目标库一定的读写资源,可能会导致数据库的负载上升。因此您需要在执行数据迁移前评估源库和目标库的性能,同时建议您在业务低峰期执行数据迁移。
  1. 登录待迁移的Oracle数据库,创建用于采集数据的账号并授权。
    说明 如您已创建包含下述权限的账号,可跳过本步骤。
    数据库 结构迁移 全量迁移 增量数据迁移
    自建Oracle数据库 schema的owner权限 schema的owner权限 SYSDBA
    POLARDB集群 schema的owner权限 schema的owner权限 schema的owner权限
  2. 登录数据传输控制台,单击左侧导航栏的数据迁移
  3. 迁移任务列表页面顶部,选择迁移的目标集群所属地域。
    从自建Oracle迁移至POLARDB(兼容Oracle语法引擎)_数据迁移_兼容Oracle数据库用户指南_云数据库PolarDB 阿里云技术文档 第9张
  4. 单击页面右上角的创建迁移任务
  5. 配置迁移任务的源库和目标库连接信息。
    从自建Oracle迁移至POLARDB(兼容Oracle语法引擎)_数据迁移_兼容Oracle数据库用户指南_云数据库PolarDB 阿里云技术文档 第10张
    类别 配置 说明
    任务名称 - DTS会自动生成一个任务名称,建议配置具有业务意义的名称(无唯一性要求),便于后续识别。
    源库信息 实例类型 您可以根据源库部署位置,选择有公网IP的自建数据库ECS上的自建数据库通过专线/VPN网关/智能网关接入的自建数据库

    本文以有公网IP的自建数据库为例介绍配置流程。

    实例地区 当实例类型选择为有公网IP的自建数据库时,实例地区无需设置。
    说明 如果您的自建Oracle数据库具有白名单安全设置,您需要在实例地区配置项后,单击获取DTS IP段来获取到DTS服务器的IP地址段,并将获取到的IP地址段加入自建Oracle数据库的白名单安全设置中。
    数据库类型 选择Oracle
    主机名或IP地址 填入自建Oracle数据库的访问地址。
    说明 本案例的自建Oracle数据库的服务端口已开放至公网,此处填入公网IP地址。
    端口 填入自建Oracle数据库的服务端口,默认为1521
    实例类型
    • 非RAC实例:选择该项后,您需要填写SID信息。
    • RAC实例:选择该项后,您需要填写ServiceName信息。
    数据库账号 填入自建Oracle的数据库账号,权限要求请参见步骤1
    数据库密码 填入该数据库账号对应的密码。
    说明 源库信息填写完毕后,您可以单击数据库密码后的测试连接来验证填入的源库信息是否正确。源库信息填写正确则提示测试通过;如果提示测试失败,单击测试失败后的诊断,根据提示调整填写的源库信息。
    目标库信息 实例类型 选择POLARDB
    实例地区 选择目标POLARDB集群所属地域。
    POLARDB实例ID 选择目标POLARDB集群ID。
    数据库名称 填入待迁入数据的数据库名称。
    数据库账号 填入目标POLARDB集群的数据库账号,权限要求请参见步骤1
    数据库密码 填入该数据库账号对应的密码。
    说明 目标库信息填写完毕后,您可以单击数据库密码后的测试连接来验证填入的目标库信息是否正确。目标库信息填写正确则提示测试通过;如果提示测试失败,单击测试失败后的诊断,根据提示调整填写的目标库信息。
  6. 配置完成后,单击页面右下角的授权白名单并进入下一步
    说明 此步骤会将DTS服务器的IP地址自动添加到目标POLARDB集群的白名单中,用于保障DTS服务器能够正常连接目标POLARDB集群。
  7. 选择迁移类型和迁移对象。
    从自建Oracle迁移至POLARDB(兼容Oracle语法引擎)_数据迁移_兼容Oracle数据库用户指南_云数据库PolarDB 阿里云技术文档 第11张
    配置 说明
    迁移类型 由于已经在步骤五 使用ADAM STUDIO迁移结构信息中完成了结构迁移,此处无需勾选结构迁移。
    • 如果只需要全量迁移,仅勾选全量数据迁移
      警告 为保障数据一致性,全量数据迁移期间请勿在自建Oracle数据库中写入新的数据。
    • 如果需要不停机迁移,同时勾选全量数据迁移增量数据迁移
      说明 增量数据迁移阶段支持同步的SQL操作为:INSERT、UPDATE、DELETE、CREATE TABLE(不支持分区表和包含函数的表)、ALTER TABLE、DROP TABLE、RENAME TABLE、CREATE INDEX、ADD INDEX。
    迁移对象 迁移对象框中选择待迁移的对象(对象的结构须已通过ADAM迁移至POLARDB集群),然后单击从自建Oracle迁移至POLARDB(兼容Oracle语法引擎)_数据迁移_兼容Oracle数据库用户指南_云数据库PolarDB 阿里云技术文档 第12张将其移动至已选择对象框。
    警告 由于已使用ADAM完成了结构迁移,请勿执行对象名映射操作,否则将导致迁移失败。
  8. 完成预检查并启动迁移任务。
    1. 单击页面右下角的预检查并启动
      说明
      • 在迁移任务正式启动之前,会先进行预检查。只有通过预检查,DTS才能迁移数据。
      • 如果预检查失败,单击具体检查项后的从自建Oracle迁移至POLARDB(兼容Oracle语法引擎)_数据迁移_兼容Oracle数据库用户指南_云数据库PolarDB 阿里云技术文档 第13张,查看失败详情。根据提示修复后,重新进行预检查。
    2. 预检查通过后,单击下一步
    3. 在弹出的购买配置确认对话框,选择链路规格并勾选数据传输(按量付费)服务条款
    4. 单击购买并启动,迁移任务正式开始。
  9. 迁移完成后,结束数据迁移任务。
    警告 为尽可能地减少数据迁移对业务的影响,建议参考业务切换流程文档中介绍的流程执行业务切换并建立回退方案(将POLARDB集群的增量数据实时迁移回源Oracle数据库)。如果无需切换业务,则可按照下述步骤结束迁移任务。
    • 全量数据迁移

      请勿手动结束迁移任务,否则可能导致数据不完整。您只需等待迁移任务完成即可,迁移任务会自动结束。

    • 增量数据迁移

      迁移任务不会自动结束,您需要手动结束迁移任务。

      1. 观察迁移任务的进度变更为增量迁移,并显示为无延迟状态时,将源库停写几分钟,此时增量迁移的状态可能会显示延迟的时间。
      2. 等待迁移任务的增量迁移再次进入无延迟状态后,手动结束迁移任务。从自建Oracle迁移至POLARDB(兼容Oracle语法引擎)_数据迁移_兼容Oracle数据库用户指南_云数据库PolarDB 阿里云技术文档 第14张