通过数据订阅功能,您可以实时订阅源库的增量数据,轻松帮助业务实现轻量级缓存更新、业务异步解耦、含ETL逻辑的数据实时同步等场景。本文为您介绍如何创建Oracle数据订阅通道。

前提条件

  • 自建Oracle数据库的版本为9i、10g、11g或12c版本。
  • 自建Oracle数据库已开启Supplemental Logging,且要求supplemental_log_data_pk,supplemental_log_data_ui已开启,详情请参见Supplemental Logging
  • 自建Oracle数据库已开启ARCHIVELOG(归档模式),设置合理的归档日志保持周期且归档日志能够被访问,详情请参见ARCHIVELOG

注意事项

在订阅通道运行过程中,请勿使用gh-ost或pt-online-schema-change等类似工具执行在线DDL变更,否则可能导致订阅失败。

源库支持的实例类型

进行数据订阅操作的Oracle数据库支持以下实例类型:

  • 有公网IP的自建Oracle数据库
  • ECS上的自建Oracle数据库
  • 通过专线/VPN网关/智能网关接入的自建Oracle数据库

本文以ECS上的自建Oracle数据库为例介绍配置流程,其他实例类型的Oracle数据库配置流程与该案例类似。

准备工作

登录待迁移的Oracle数据库,创建用于数据订阅的数据库账号并授权。

#创建用于数据订阅的数据库账号,名称为dtstest 密码为Dts123456
create user dtstest IDENTIFIED BY Dts123456;
grant create session to dtstest;
grant connect to dtstest;
grant resource to dtstest;
grant execute on sys.dbms_logmnr to dtstest;
grant select on v_$logmnr_contents to dtstest;
grant select on v_$log to dtstest;
grant select on v_$logfile to dtstest;
grant select on v_$archived_log to dtstest;
grant select on v_$logmnr_logs to dtstest;
grant select on v_$parameter to dtstest;
grant select on v_$database to dtstest;
grant select on all_objects to dtstest;
grant select on all_tab_cols to dtstest;
grant select on dba_registry to dtstest;
grant select any table to dtstest;
grant select any transaction to dtstest;
grant select on v$active_instances to dtstest;
grant select on v$instance to dtstest;
grant select on sys.USER$ to dtstest;
grant select on SYS.OBJ$ to dtstest;
grant select on SYS.COL$ to dtstest;
grant select on SYS.IND$ to dtstest;
grant select on SYS.ICOL$ to dtstest;
grant select on SYS.CDEF$ to dtstest;
grant select on SYS.CCOL$ to dtstest;
grant select on SYS.TABPART$ to dtstest;
grant select on SYS.TABSUBPART$ to dtstest;
grant select on SYS.TABCOMPART$ to dtstest;
grant select on gv_$listener_network to dtstest;
说明 如果您的Oracle数据库为12c版本,则需追加下述命令。
grant LOGMINING TO dtstest;
grant EXECUTE_CATALOG_ROLE to dtstest;
grant LOGMINING TO dtstest;

操作步骤

  1. 购买数据订阅通道,详情请参见购买数据订阅通道
    说明 购买时选择订阅实例类型Oracle并选择源实例所属的地域。
  2. 登录数据传输控制台
  3. 在左侧导航栏,单击数据订阅
  4. 数据订阅列表页面上方,选择订阅通道所属地域。
    选择地域
  5. 定位至已购买的数据订阅通道,单击配置订阅通道
  6. 配置数据订阅的源库信息和网络类型。
    配置源库信息和网络类型
    类别 配置 说明
    订阅名称 - DTS会自动生成一个订阅名称,建议配置具有业务意义的名称(无唯一性要求),便于后续识别。
    源库信息 实例类型 根据源实例的类型进行选择,本案例选择ECS上的自建数据库
    数据库类型 固定为Oracle,不可变更。
    实例地区 购买数据订阅通道时选择的源实例地域,不可变更。
    ECS实例ID 选择自建Oracle数据库所属的ECS实例ID。
    端口 填入自建Oracle数据库的服务端口。
    SID 填入自建Oracle数据库的SID信息。
    数据库账号 填入自建Oracle的数据库账号。
    说明 创建及授权方法请参见准备工作
    数据库密码 填入该数据库账号对应的密码。
    消费网络类型 -

    设置数据订阅实例所属的网络类型。

    说明
    • 建议配置同部署数据订阅客户端的ECS实例属于同一网络。例如ECS是专有网络,那么此处的网络类型选择为专有网络并指定ECS所属的专有网络虚拟交换机
    • 通过内网地址进行数据订阅时,网络延迟最小。
    • 经典网络

      如果设置为经典网络,无需其他配置。关于经典网络介绍请参见经典网络

    • 专有网络

      如果设置为专有网络,您还需要选择专有网络虚拟交换机。关于专有网络介绍请参见专有网络

  7. 上述配置完成后,单击授权白名单并进入下一步,详细说明请参见下表。
    源库实例类型 说明
    ECS上的自建Oracle数据库 此步骤会将DTS服务器的IP地址自动添加至ECS实例的内网入方向规则中,用于保障DTS服务器能够正常连接源实例。
    • 有公网IP的自建Oracle数据库
    • 通过专线/VPN网关/智能网关接入的自建Oracle数据库
    如果源库具备白名单安全设置,您需要将DTS服务器的IP地址加入至自建数据库的白名单安全设置中,详情请参见迁移/同步/订阅本地数据库时需添加的IP白名单
  8. 配置需要订阅的数据类型和订阅对象。
    选择订阅类型和对象
    配置 说明
    需要订阅的数据类型
    • 数据更新

      订阅已选择对象的增量数据更新,包含数据的INSERT、DELETE和UPDATE操作。

    • 结构更新

      订阅整个实例所有对象的结构创建、删除及修改,您需要使用数据订阅客户端过滤所需的数据。

    说明
    • 如果选择整个库作为订阅对象,那么该库中新增对象的增量数据也可以被订阅到。
    • 如果选择某个表作为订阅对象,那么只有这个表的增量数据可以被订阅到。此时如果需要加入一个新的表作为订阅对象,您需要将其加入至订阅对象中,详情请参见修改订阅对象
    订阅对象

    订阅对象框中将想要订阅的对象选中,单击向右小箭头移动到已选择对象框。

    说明 订阅对象支持选择的粒度为库、表。
  9. 上述配置完成后,单击页面右下角的保存并预检查
    说明
    • 在订阅任务正式启动之前,会先进行预检查。只有预检查通过后,才能成功启动订阅任务。
    • 如果预检查失败,单击具体检查项后的提示,查看失败详情。根据提示修复问题后,重新进行预检查。
  10. 预检查对话框中显示预检查通过后,关闭预检查对话框。
    配置完成后,数据订阅通道会进入初始化阶段,该阶段一般会持续1分钟左右。初始化完成后即可进行新增消费组与消费订阅数据的操作。

后续步骤

  1. 新增消费组
  2. 使用Kafka客户端消费订阅数据