Tapdata 技术博客
Tapdata 技术博客

高效数据移动指南 | 如何快速实现数据库 Oracle 到 Dameng 的数据同步?

2024-09-14 15:32 TapData

在现代企业中,数据无处不在,贯穿于各个业务环节和系统之间。无论是跨系统的数据集成、多地域的数据协同,还是实时应用的数据同步,数据的一致性和及时性都至关重要。在数字化转型的过程中,如何确保不同系统、地域、设备之间的数据同步,成为了企业面临的重要挑战。


本专题将基于实践经验,从常见需求入手,为大家介绍热门数据源与数据目标之间的数据同步(全量/增量)如何实现?了解如何快速搭建数据管道,实现数据的高效迁移与无缝同步。


>>> 本文教程为:Oracle → Dameng 的数据同步任务。


在实际应用中,数据同步涉及诸多场景,如容灾备份、应用改造/替代、数据库版本升级/回退、数据库替代、业务分流等,不同的场景在数据流向、同步需求、数据处理等方面会有不同的需求,需要针对性地选择迁移工具和方案。


以 Oracle 到 Dameng(DM) 的数据同步需求为例,随着国家对自主可控的日益重视,目前在各个行业和区域中面临越来越多的国产化,采用有自主知识产权的国产数据库将成为主流。DM   数据库以其丰富的产品架构、优异的性能表现、绝对的安全保证适应各种应用场景需求得到了众多客户的信任。DM 数据库针对 Oracle 数据库可以做到完全替代,但仍需特别关注数据类型的兼容性、存储过程和触发器的调整、同步工具的选择、性能优化以及安全性和合规性。同时,建议在同步完成后进行数据一致性校验,以确保源数据库与目标数据库之间的数据准确无误,从而保障数据相关项目的平稳顺利实施。

一、什么是 Oracle?

Oracle RDBMS 是由甲骨文公司推出的一款关系型数据库管理系统。它是数据库领域一直处于领先地位的产品,具有强稳定性和可移植性,适用于各类大、中、小微机环境。Oracle 数据库系统是世界上流行的关系数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品;作为分布式数据库它实现了分布式处理功能。


优势

  • 高性能:具有高度优化的 SQL 引擎,能够处理大量数据和复杂查询。

  • 可扩展性:支持分布式数据库架构,可以轻松地将数据分布在多个服务器上,以提高性能和可靠性。

  • 安全性:提供了严格的访问控制和加密技术,确保数据的安全性和隐私。

  • 兼容性:支持多种操作系统和硬件平台,可以在各种环境中运行。

  • 可靠性:具有高度可靠的故障恢复功能,可以在系统故障时保护数据的完整性和一致性。

  • 并发控制:支持多用户并发访问,可以有效地处理多个事务的同时进行。

  • 大型数据处理:可以处理大量数据,支持分区表、分区索引等特性,以提高数据处理效率。

二、什么是 Dameng?

Dameng 是新一代大型通用关系型数据库,全面支持 SQL 标准和主流编程语言接口/开发框架。行列融合存储技术,在兼顾 OLAP 和 OLTP 的同时,满足 HTAP 混合应用场景。凭借其丰富的产品架构、优异的性能表现、绝对的安全保证适应各种应用场景需求得到了众多客户的信任,不仅在国产数据库市场中成功占有一席之地,成为国产化替代的常见选项,也逐渐成为国际竞争中的一股重要力量。

优势

  • 自主研发: 拥有完全自主知识产权,符合国家信创工程的战略需求。

  • 跨平台: 支持多种操作系统,如 Windows、Linux 以及国产操作系统。

  • 高性能: 优化了查询和数据处理能力,适合处理大规模复杂数据。

  • 兼容性强: 兼容主流数据库,如 Oracle、MySQL,便于数据迁移。

  • 安全性: 已通过公安部安全四级评测,是安全等级最高的商业数据库之一。

三、方案选择:如何实现 Oracle → Dameng 的数据同步?

实现 Oracle 到 Dameng 的数据同步的常见方式包括,手动构建数据管道或使用自动化工具:


手动构建数据管道

这种方式适合对数据同步流程有高度自定义需求的场景。开发团队可以通过编写脚本或使用编程语言(如 Python、Java 等)连接 Oracle 数据库和 Dameng 数据库,逐步提取、转换、加载(ETL)数据。在此过程中,需要仔细处理数据类型转换、主键/外键关系的维护,以及增量数据同步的实现。此外,可能还需要开发日志和错误处理机制,以确保数据同步的可靠性。


这种发发通常耗时较长,其间涉及详细的需求分析、复杂的脚本开发、数据转换和映射,以及增量同步的实现。此外,测试、验证和后续运维工作也耗费大量时间,整体过程可能需要数周甚至数月才能完成,并且需要持续维护以确保数据的准确性和实时性。


自动化工具

例如选择使用 TapData 这样的自动化数据集成平台,只需三步就可以在几分钟内开启所需的数据同步任务:

  • 将 Oracle 设置为源连接

  • 将 Dameng 设置为目标连接

  • 定义要传输的数据以及传输频率

TapData 内置 100+ 数据连接器,提供了友好的用户界面和强大的实时同步功能,无需编写复杂的代码即可轻松实现数据的迁移和同步。这样不仅节省了大量的时间和人力成本,还能保障数据同步过程的稳定性和可靠性。对于那些希望快速、高效地完成 Oracle 到 Dameng 数据同步的企业和开发者来说,这样的便捷工具无疑是一个理想的选择。

四、TapData 高效同步完整教程

完成 TapData Agent 部署后,即可跟随以下教程在 TapData 中添加源与目标的数据连接(支持版本:Oracle 9i、10g、11g、12c、18c、19c+;DM 7.x、8.x),并快速构建数据管道。(*涉及工具版本为 TapData 本地部署版)

版本指路

>>> 点击登录 TapData Cloud

>>> 申请试用 TapData 本地部署版

① 准备工作(作为源库)

数据源:Oracle

1. 以具有 DBA 权限的用户身份登录 Oracle 数据库。

2. 依次执行下述格式的命令,创建用于数据复制/转换任务的用户。

  • Oracle 标准模式

1   CREATE USER username IDENTIFIED BY password; 
  • username:用户名,当 Oracle 处于多租户模式下时,用户名需增加 C## 前缀。

  • password:密码。

  • Oracle 多租户模式

1   -- 切换至根容器
2   ALTER SESSION SET CONTAINER=cdb$root;
3
4   -- 创建用户
5   CREATE USER username IDENTIFIED BY password CONTAINER=all;
  • username:用户名,当 Oracle 处于多租户模式下时,用户名需增加 C## 前缀。

  • password:密码。

3. 为刚创建的账号授予权限,您也可以基于业务需求自定义权限控制。当需要读取全量+增量数据时:

1   -- 替换下述命令中的 username 为真实的用户名
2   GRANT CREATE SESSION,
3      ALTER SESSION,
4      EXECUTE_CATALOG_ROLE,
5      SELECT ANY DICTIONARY,
6      SELECT ANY TRANSACTION,
7      SELECT ANY TABLE
8   TO username;

*提示:当 Oracle 版本为 12c 及以上时,您还需要执行 GRANT LOGMINING TO username; 格式的命令授予 LOGMINING 权限。


4. 如果您需要获取源库的数据变更以实现增量同步,您还需要以 DBA 身份登录数据库完成下述数据库设置。


    a. 开启数据库归档模式(ARCHIVELOG),由于涉及重启数据库,请在业务低峰期操作。


*提示:您也可以执行 SELECT log_mode FROM v$database; 命令来查看是否已开启该功能,返回结果为 ARCHIVELOG 表示已开启,可跳过本步骤。

1 -- 关闭数据库
2 SHUTDOWN IMMEDIATE;
3
4 -- 启动并挂载数据库
5 STARTUP MOUNT;
6
7 -- 开启归档并打开数据库
8 ALTER DATABASE archivelog;
9 ALTER DATABASE OPEN;

    b. 开启补充日志(Supplemental Logging)。
1 -- 为库级开启主键补充日志,如需关闭,将 ADD 替换为 DROP
2 ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;
3
4
5 -- 为单个表开启主键补充日志,需替换命令中 Schema 名称和 表名称
6 ALTER TABLE Schema名称.表名称 ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;

*提示:如日志磁盘存储空间相对充裕,可执行 ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS; 命令开启库级的全补充日志,简化操作流程。


    c. 如存在无主键表,您还需要选择执行下述命令,为单个表或所有表开启全补充日志(full supplemental logging)。

1 -- 为单个表开启,需替换命令中 Schema名称和表名称
2 ALTER TABLE Schema名称.表名称 ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
3
4 -- 为所有表开启
5 ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;

*提示:如果 Oracle 处于多租户模式,推荐为指定的容器开启,即在执行上述命令前先执行 ALTER SESSION SET CONTAINER=PDB名称; 格式的命令,将更改应用于容器。


    b. 提交更改。

1 ALTER SYSTEM SWITCH LOGFILE;
    e. 如果 Oracle 处于多租户模式,您还需要执行下述命令打开可插拔数据库。
1 ALTER PLUGGABLE DATABASE ALL OPEN;

数据目标:Dameng

在连接 DM 之前,还需完成数据库账号的授权等准备工作。TapData 同时支持 DM 作为源或目标,当 DM 作为目标库时,准备工作包括:


1. 以拥有 DBA 权限的身份登录达梦数据库。

2. 依次执行下述格式的命令,创建用于数据复制/转换任务的用户。

1 CREATE USER username IDENTIFIED BY "password" DEFAULT TABLESPACE table_space_name;
  • username:用户名

  • password:密码

  • table_space_name:表空间名称

3. 为刚创建的账号授予权限,也可以基于业务需求自定义权限控制。

1 -- 替换下述命令中的 username 为真实的用户名
2 GRANT CREATE TABLE, DELETE TABLE, INSERT TABLE, SELECT TABLE, UPDATE TABLE, CREATE INDEX TO username;

② 创建 Oracle 的连接

  1. 进入 TapData 控制台,在左侧导航栏,单击连接管理

  2. 单击页面右侧的创建,在弹框中,搜索并选择 Oracle。

  3. 在跳转到的页面,根据下述说明填写 Oracle 连接信息:

2-1.png

  • 连接信息设置

    • 连接名称:填写具有业务意义的独有名称。

    • 连接类型:支持将 Oracle 作为源或目标库。

    • 连接方式:可选择通过 SID 或 Service Name 连接。

    • 数据库地址:数据库连接地址。

    • 端口:数据库的服务端口。

    • SID/Service Name:填写 SID 或 Service Name 信息。

    • Schema:Schema 名称,即一个连接对应一个 Schema,如需连接多个 Schema 则需创建多个数据连接。

    • 其他连接串参数:额外的连接参数,默认为空。

    • 账号:数据库的账号。

    • 密码:数据库账号对应的密码。

    • 日志插件:基于业务需求选择,默认为 logMiner,相关介绍,见增量日志获取方式介绍

  • 高级设置

    • 加载表注释:选择是否加载表注释信息(默认关闭),帮助快速识别表的业务意义,当表注释较多时可能影响模型加载效率。

    • 多租户模式:如 Oracle 为多租户模式,需打开该开关并填写 PDB 信息。

    • 使用 SSL:选择是否开启 SSL 连接数据源,可进一步提升数据安全性,开启该功能后还需要上传 SSL 证书文件并填写证书密码,相关文件已在开启 SSL 连接中获取。

    • 时间类型的时区:默认为 0 时区,您也可以根据业务需求手动指定,当配置为其他时区时,会影响不带时区的字段,例如 DATE、TIMESTAMP。

    • 套接字超时时长:设置此参数,以重试机制来避免 LogMiner 执行自动挖掘增量变更时,因意外情况(如套接字交互超时)而形成的僵尸连接,默认值为 0 表示不设置。

    • 共享挖掘挖掘源库的增量日志,可为多个任务共享同一源库的增量日志采集进程,从而避免重复读取,从而最大程度上减轻增量同步对源库的压力,开启该功能后还需要选择一个外存用来存储增量日志信息。

    • 包含表:默认为全部,您也可以选择自定义并填写包含的表,多个表之间用英文逗号(,)分隔。

    • 排除表:打开该开关后,可以设定要排除的表,多个表之间用英文逗号(,)分隔。

    • Agent 设置:默认为平台自动分配,您也可以手动指定 Agent。

    • 模型加载时间:如果数据源中的模型数量少于10000个,则每小时更新一次模型信息。但如果模型数量超过10000个,则刷新将在您指定的时间每天进行。

4. 单击连接测试,测试通过后单击保存


2-2.png


*提示:如提示连接测试失败,请根据页面提示进行修复。

③ 创建 Dameng 的连接

1. 参照 Oracle 连接创建流程,完成 DM 连接配置信息填写,添加数据目标:


2-3.png


2. 测试 DM 的连接:


2-4.png

④ 创建数据复制/开发任务

1. 左侧导航栏点击数据复制,并点击右侧创建:


2-5.png


2. 进入 DAG 页面,构建数据复制任务,通过拖拉拽的方式添加源与目标节点,并连接源与目标


2-6.png


3. 单击源与目标节点,即可按需对二者进行设置:


2-7.png


4. 保存任务

2-8.png

⑤ 任务启动与监控

1. 启动任务,任务全量同步正常运行:


2-9.png


2. 增量同步开启


2-10.png


推荐阅读