跳到主要内容

Oracle 迁移到 HashData

NineData 数据复制支持 Oracle 到 HashData 数据源的数据迁移与同步

前提条件

  • 已将源数据源和目标数据源添加至 NineData。如何添加,请参见添加数据源

  • 源数据源为 Oracle,版本为 23ai、21c、19c、18c、12c、11g 其中之一。

  • 目标数据源为 HashData。

  • 您必须拥有源数据源和目标数据源的如下权限:

    复制类型
    源数据源
    目标数据源
    结构复制
    • select connect
    • select any dictionary
    • select any table
    • select_catalog_role
    Schema Owner
    全量复制
    • select connect
    • select any dictionary
    • select any table
    • select_catalog_role
    Schema Owner
    增量复制请参见本文附录 3:Oracle 增量复制账号权限说明Schema Owner
  • 如需进行增量复制,请确保源数据源中已进行如下配置:

    • Oracle 的日志模式已设置为 ARCHIVELOG 模式(默认情况下为 NOARCHIVELOG)。

      验证当前的日志模式:SELECT log_mode FROM v$database;
      如果日志模式为 NOARCHIVELOG,执行下列步骤:
      1. 关闭数据库:SHUTDOWN IMMEDIATE;
      2. 启动并装载数据库:STARTUP MOUNT;
      3. 执行开启归档命令:ALTER DATABASE ARCHIVELOG;
      4. 启动数据库:ALTER DATABASE OPEN;
    • 已开启 Supplemental Log,即附加日志(默认情况下不开启)。

      验证附加日志是否开启:SELECT supplemental_log_data_all allc FROM v$database;
      如果返回 NO,执行开启附加日志命令:
      - ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
      //在数据库级别启用附加日志,对所有的表和所有的列生效,将占用较多资源。
      - ALTER TABLE <database_name>.<table_name> ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
      - ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
      //在特定的表上启用附加日志,对该表中所有的列生效。
  • 如果源和目标数据源在录入到 NineData 时选择了不同地域,还需要将各自所属 NineData 服务器的 IP 地址加入到对方的数据源白名单中。您可以在创建复制任务时,于数据源与目标节点页面查看两者的 IP 地址。

使用限制

  • 执行数据同步前需评估源数据源和目标数据源的性能,同时建议业务低峰期执行数据同步。否则全量数据初始化时将占用源数据源和目标数据源一定的读写资源,导致数据库负载上升。
  • 需要确保同步对象中的每张表都有主键或唯一约束、列名具有唯一性,否则可能会重复同步相同数据。

操作步骤

查看同步结果

  1. 登录 NineData 控制台

  2. 在左侧导航栏单击数据复制 > 数据复制

  3. 数据复制页面单击目标同步任务的任务 ID,页面说明如下。

    result

    序号
    功能
    说明
    1同步延迟源数据源和目标数据源之间的数据同步延迟,0 秒表示两端之间没有延迟,此时您可以选择将业务切换到目标数据源,实现平滑迁移。
    2配置告警配置告警后,系统会在任务失败时通过您选择的方式通知您。
    3更多
    • 暂停:暂停任务,仅状态为运行中的任务可选。
    • 类似创建:创建一个和当前任务配置相同的新复制任务。
    • 终止:结束未完成或监听中(即增量同步中)的任务,终止任务后无法重启任务,请谨慎操作。如果同步对象中包含触发器,会弹出触发器复制选项,请按需选择。
    • 删除:删除任务,任务删除后无法恢复,请谨慎操作。
    4结构复制(包含结构复制的场景下显示)展示结构复制的进度和详细信息。
    • 单击页面右侧的日志:查看结构复制的执行日志。
    • 单击页面右侧的refresh:查看最新的信息。
    • 单击列表中目标对象右侧操作列的查看 DDL:可以查看 SQL 回放。
    5全量复制(包含全量复制的场景下显示)展示全量复制的进度和详细信息。
    • 单击页面右侧的监控:查看全量复制过程中的各监控指标。全量复制过程中,还可以单击监控指标页面右侧的限流设置,限制每秒写入到目标数据源的速率。单位为行/秒。
    • 单击页面右侧的日志:查看全量复制的执行日志。
    • 单击页面右侧的refresh:查看最新的信息。
    6增量复制(包含增量复制的场景下显示)展示增量复制的各项监控指标。
    • 单击页面右侧的查看线程:查看当前复制任务正在执行中的操作,包含:
      • 线程号:复制任务分多个线程执行复制操作,展示当前进行中的线程号。
      • 执行 SQL:当前线程正在执行中的 SQL 语句详情。
      • 提交响应时间:当前线程的响应时间,如果该数值变大,则代表当前线程可能由于某些原因卡住。
      • 事件时间:当前线程开启的时间戳。
      • 状态:当前线程的状态。
    • 单击页面右侧的限流设置:限制每秒写入到目标数据源的速率。单位为行/秒。
    • 单击页面右侧的日志:查看增量复制的执行日志。
    • 单击页面右侧的refresh:查看最新的信息。
    7修改对象展示同步对象的修改记录。
    • 单击页面右侧的修改同步对象,可对同步对象进行配置
    • 单击页面右侧的refresh:查看最新的信息。
    8数据对比展示源数据源和目标数据源之间对比的结果。如果您未开启数据对比,请单击页面中的开启数据对比
    • 单击页面右侧的重新对比:对当前源和目标两端数据重新发起对比。
    • 单击页面右侧的停止:对比任务开始后,可单击该按钮立即停止对比任务。
    • 单击页面右侧的日志:查看一致性对比的执行日志。
    • 单击页面右侧的监控(仅数据对比显示):查看对比 RPS(每秒对比的记录数)的走势图。单击详情可以查看更早之前的记录。
    • 在对比列表右侧操作列单击details数据页签下只在不一致情况下显示):查看源端和目标端的对比详情。
    • 在对比列表右侧操作列单击sql(不一致情况下显示):生成变更 SQL,您可以直接复制该 SQL 到目标数据源执行,修改不一致的内容。
    9展开展示当前复制任务的详细信息。常用选项:
    • 导出表配置:导出当前任务的库表配置,可在新建复制任务时快速导入,以快速创建多条相同复制对象的复制链路。
    • 告警规则:配置当前任务的告警策略。

附录 1:预检查项一览表

检查项检查内容
源数据源连接检查检查源数据源网关状态、实例是否可达、用户名及密码准确性
目标数据源连接检查检查目标数据源网关状态、实例是否可达、用户名及密码准确性
目标库权限检查检查目标数据库的账号权限是否满足要求
源库权限检查检查源数据库的账号权限是否满足要求
目标数据源触发器检查检测目标数据库的触发器是否存在
目标库数据存在性检查检查待复制对象在目标数据库中是否已存在数据
目标库同名对象存在性检查检查待复制对象在目标数据库中是否已存在
源库日志归档模式检查源库日志归档模式是否是 ARCHIVELOG
源库附加日志检查源库附加日志必须开启,并且设置为 ALL

附录 2:Oracle 增量复制账号权限说明

指定一个 DBA 权限用户,用于 Oracle 为源的增量数据复制任务。

-- 创建 NineData 同步账号
CREATE USER test_dba IDENTIFIED BY "ninedatasync";
-- 授予该账号 DBA 权限
GRANT dba to test_dba;

相关文档

数据复制简介