在现代企业中,数据无处不在,贯穿于各个业务环节和系统之间。无论是跨系统的数据集成、多地域的数据协同,还是实时应用的数据同步,数据的一致性和及时性都至关重要。在数字化转型的过程中,如何确保不同系统、地域、设备之间的数据同步,成为了企业面临的重要挑战。
本专题将基于实践经验,从常见需求入手,为大家介绍热门数据源与数据目标之间的数据同步(全量/增量)如何实现?了解如何快速搭建数据管道,实现数据的高效迁移与无缝同步。
本文教程为: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 本地部署版)
① 准备工作(作为源库)
数据源:Oracle
- 以具有 DBA 权限的用户身份登录 Oracle 数据库。
- 依次执行下述格式的命令,创建用于数据复制/转换任务的用户。
-
Oracle 标准模式
CREATE USER username IDENTIFIED BY password;
- username:用户名,当 Oracle 处于多租户模式下时,用户名需增加 C## 前缀。
- password:密码。
-
Oracle 多租户模式
-- 切换至根容器 ALTER SESSION SET CONTAINER=cdb$root; -- 创建用户 CREATE USER username IDENTIFIED BY password CONTAINER=all;
- username:用户名,当 Oracle 处于多租户模式下时,用户名需增加 C## 前缀。
- password:密码。
- 为刚创建的账号授予权限,您也可以基于业务需求自定义权限控制。当需要读取全量+增量数据时:
-- 替换下述命令中的 username 为真实的用户名 GRANT CREATE SESSION, ALTER SESSION, EXECUTE_CATALOG_ROLE, SELECT ANY DICTIONARY, SELECT ANY TRANSACTION, SELECT ANY TABLE TO username;
*提示:当 Oracle 版本为 12c 及以上时,您还需要执行 GRANT LOGMINING TO username; 格式的命令授予 LOGMINING 权限。
- 如果您需要获取源库的数据变更以实现增量同步,您还需要以 DBA 身份登录数据库完成下述数据库设置。
a. 开启数据库归档模式(ARCHIVELOG),由于涉及重启数据库,请在业务低峰期操作。
*提示:您也可以执行 SELECT log_mode FROM v$database; 命令来查看是否已开启该功能,返回结果为 ARCHIVELOG 表示已开启,可跳过本步骤。
-- 关闭数据库 SHUTDOWN IMMEDIATE; -- 启动并挂载数据库 STARTUP MOUNT; -- 开启归档并打开数据库 ALTER DATABASE archivelog; ALTER DATABASE OPEN;
b. 开启补充日志(Supplemental Logging)。
-- 为库级开启主键补充日志,如需关闭,将 ADD 替换为 DROP ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS; -- 为单个表开启主键补充日志,需替换命令中 Schema 名称和 表名称 ALTER TABLE Schema名称.表名称 ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;
*提示:如日志磁盘存储空间相对充裕,可执行 ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS; 命令开启库级的全补充日志,简化操作流程。
c. 如存在无主键表,您还需要选择执行下述命令,为单个表或所有表开启全补充日志(full supplemental logging)。
-- 为单个表开启,需替换命令中 Schema名称和表名称 ALTER TABLE Schema名称.表名称 ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS; -- 为所有表开启 ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
*提示:如果 Oracle 处于多租户模式,推荐为指定的容器开启,即在执行上述命令前先执行 ALTER SESSION SET CONTAINER=PDB名称; 格式的命令,将更改应用于容器。
d. 提交更改。
ALTER SYSTEM SWITCH LOGFILE;
e. 如果 Oracle 处于多租户模式,您还需要执行下述命令打开可插拔数据库。
ALTER PLUGGABLE DATABASE ALL OPEN;
数据目标:Dameng
在连接 DM 之前,还需完成数据库账号的授权等准备工作。TapData 同时支持 DM 作为源或目标,当 DM 作为目标库时,准备工作包括:
-
以拥有 DBA 权限的身份登录达梦数据库。
-
依次执行下述格式的命令,创建用于数据复制/转换任务的用户。
CREATE USER username IDENTIFIED BY "password" DEFAULT TABLESPACE table_space_name;
- username:用户名
- password:密码
- table_space_name:表空间名称
- 为刚创建的账号授予权限,也可以基于业务需求自定义权限控制。
-- 替换下述命令中的 username 为真实的用户名 GRANT CREATE TABLE, DELETE TABLE, INSERT TABLE, SELECT TABLE, UPDATE TABLE, CREATE INDEX TO username;
② 创建 Oracle 的连接
- 进入 TapData 控制台,在左侧导航栏,单击连接管理。
- 单击页面右侧的创建,在弹框中,搜索并选择 Oracle。
- 在跳转到的页面,根据下述说明填写 Oracle 连接信息:
- 连接信息设置
- 连接名称:填写具有业务意义的独有名称。
- 连接类型:支持将 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个,则刷新将在您指定的时间每天进行。
- 单击连接测试,测试通过后单击保存:
*提示:如提示连接测试失败,请根据页面提示进行修复。
③ 创建 Dameng 的连接
- 参照 Oracle 连接创建流程,完成 DM 连接配置信息填写,添加数据目标:
- 测试 DM 的连接:
④ 创建数据复制/开发任务
- 左侧导航栏点击数据复制,并点击右侧创建:
- 进入 DAG 页面,构建数据复制任务,通过拖拉拽的方式添加源与目标节点,并连接源与目标
- 单击源与目标节点,即可按需对二者进行设置:
- 保存任务
⑤ 任务启动与监控
- 启动任务,任务全量同步正常运行:
- 增量同步开启
以上,便是借助 TapData 快速实现数据库 Oracle 到 Dameng 的全、增量同步的模拟教程。
后续,我们还将持续输出本专题内容,欢迎关注 TapData 官方公众号,了解更多。
【推荐阅读】
- 如何高效整合分散数据,构建统一的实时数据平台?
- 流式处理 vs 批处理,新数据时代的数据处理技术该如何选择?
- TapData 医疗美容行业数字化白皮书上线
- 战略资讯 | TapData 牵手思想科技,开启数据管理新篇章!