当前位置: 首页 > news >正文

Oracle到DM实时数据同步实施方案

目录

1 项目概述

2 需求分析

3 实施操作

3.1 历史数据全量同步

3.2 增量数据实时同步

4 问题总结

4.1 字符型非空约束

4.2 字符型唯一索引尾部空格


1 项目概述

将Oracle 11g RAC生产环境数据同步到DM8分析环境,Oracle数据库大小1.5T,日增归档100G,DM数据库为新建库。

初始同步表数70多张,其中10张表记录数过千万,最大表记录数上亿,后续根据需要增加其它同步表。

数据同步正常延时不超过5秒。

2 需求分析

数据同步涉及已有历史数据一次性同步和新增数据实时同步两项内容。

历史数据同步通过BeeDI的ETL功能实现,BeeDI从源表读取数据,然后将读取的数据批量写入目标表。

增量数据同步采用BeeDI日志捕获功能实现,BeeDI通过SCN获取日志增量记录,还原日志记录对应的DML操作数据,然后依据DML类型(ins、del、upd)对目标库执行相应数据操作。

DM库中对应的目标表,无需手工创建,可通过BeeDI的模式映射功能在同步数据时自动创建。

同步表大多包含时间戳信息,之所以弃用时间戳同步方式,原因在于当写入记录的时间序列与对应记录的提交时间序列不一致时,采用时间戳进行实时同步会出现丢失数据的情况。

3 实施操作

3.1 历史数据全量同步

针对需要同步的每一张表,单独配置全量同步任务,操作如下:

1) 新建ETL任务,任务名称对应表名。

2)配置Oracle和DM数据库连接。

3)从Oracle接口窗口拖拽表节点到DM接口。

4)调整装载组件属性,勾选[是否清空]复选框,装载模式选择[批量]。 

5)启动任务,观察任务运行状况,如果任务运行出错,需要分析错误原因,解决错误后重新启动任务,直到任务成功结束。 

重复以上操作,直到所有需要同步的表对应的同步任务配置完成。

记录以上最先运行任务的开始时间,该时间将作为实时同步任务的日志捕获起点。

3.2 增量数据实时同步

对于需要同步的所有表,集中配置一个实时同步任务,操作如下:

1)新建ETL任务,指定实时任务名称。

2)配置Oracle和DM数据库连接。

3)从Oracle窗口拖拽将要同步的表节点到模板空白处创建对应源表的抽取组件。

4)在DM窗口通过 [装载] 快捷命令创建对应目标表的装载组件。

5)建立抽取组件到装载组件的数据流映射。

6)重复以上3)、4)、 5)步骤,直到所有需要同步的表对应的抽取组件和装载组件完成映射。

7)使用快捷命令[自动排列]格式化组件显示。

8)从上到下依次调整各个抽取组件的[增量抽取]属性,勾选[增量抽取]复选框,在弹出的[增量抽取设置]对话框中选择[日志]增量模式,在逻辑主键窗口通过快捷命令[主键]或[唯一索引]设置增量同步逻辑主键。

9)所有抽取组件启用日志增量同步后,任意调整某个抽取组件的增量抽取属性,将解析点时间设置为最先运行全量同步任务的开始时间,确定后在提示框[是否选择更新多表捕获关联抽取组件属性?]出现时选择[是]。

10)设置任务定时自动启动,观察任务运行状况,如果任务运行出错,需要分析错误原因,解决错误后重新启动任务,直到任务成功结束。 

4 问题总结

4.1 字符型非空约束

在Oracle中,非空列允许存入长度为0的字符串(空串),而在DM中长度为0的字符串不允许写入非空列,由此导致部分非空列包含空串的数据无法同步写入DM库。

在BeeDI中调整对应表的数据流映射,通过decode函数判定对应列输入数据是否为空串,是则输出一个预定义的默认值,否则原样输出数据。

4.2 字符型唯一索引尾部空格

在Oracle中进行数据唯一性效验时,将对字符型唯一索引字段值的全部内容进行查重,而在DM中将去除字符型唯一索引字段值的尾部空格进行查重,由此导致同样的数据在Oracle中可以写入,而在DM中由于唯一索引冲突无法写入。

在BeeDI中调整对应表的数据流映射,通过自定义函数替换对应列尾部空格为其它字符。

相关文章:

Oracle到DM实时数据同步实施方案

目录 1 项目概述 2 需求分析 3 实施操作 3.1 历史数据全量同步 3.2 增量数据实时同步 4 问题总结 4.1 字符型非空约束 4.2 字符型唯一索引尾部空格 1 项目概述 将Oracle 11g RAC生产环境数据同步到DM8分析环境,Oracle数据库大小1.5T,日增归档10…...

WebRTC | 音视频实时通信的本质

目录 一、音视频实时通信的两种指标 1. 实时通信延迟指标 2. 视频相关的基本概念 3. 音视频服务质量指标 二、解决实时通信的主要矛盾 1. 增加带宽 A. 提供更优质的接入服务 B. 保证云端网络的带宽和质量 C. 更合理的路由调度策略 2. 减少数据量 A. 采用更好的压缩算…...

ApiPost的使用

1. 设计接口 请求参数的介绍 Query:相当于get请求,写的参数在地址栏中可以看到 Body: 相当于 post请求,请求参数不在地址栏中显示。 请求表单类型,用form-data json文件类型,用row 2. 预期响应期望 设置完每一项点一下生成响应…...

6、CCS 配置工程头文件批量添加路径的方法

1、进入到图示的框框里 2、编辑好需要添加的路径,并按ctrl c 3、选中include paths(-I)框框里的最后一条路径 4、然后ctrl v,这样路径就复制到预定义路径里了...

Visual Studio配置PCL库

Visual Studio配置PCL库 Debug和Release配置新建项目配置属性表测试参考 Debug和Release Debug和Release的配置过程一模一样,唯一区别就在于最后一步插入的附加依赖项不同,因此下面以debug为例。 配置新建项目 1、新建一个C空项目,模式设置…...

数据分析 | 为什么Bagging算法的效果优于单个评估器

1. 回归问题如何降低方差 以随机森林为例,假设随机森林中含有n个弱评估器,由于子样本集的相似性以及使用的是同种模型,因此各模型有近似相等的方差和偏差,因此假设任意弱评估器上输出结果为,方差均为,则随机森林的输出…...

mysql架构介绍

1.整体架构图 我们发现整体的体系是由连接层、服务层、引擎层和物理文件存储层组成。 1.连接层 连接层是处理客户端和服务端之间的通信的,比如一些连接处理、授权验证等等。 2.服务层 服务层主要完成核心的功能,如SQL接口,就是用来接收…...

EIK+Filebeat+Kafka

目录 一、Kafka 概述 1)为什么需要消息队列(MQ) 2)使用消息队列的好处 (1)解耦 (2)可恢复性 (3)缓冲 (4)灵活性 & 峰值处理…...

python安装xgboost报错

ERROR: Could not find a version that satisfies the requirement xgboost (from versions: none) ERROR: No matching distribution found for xgboost 解决办法: 换成国内的pip源 pip install xgboost -i http://pypi.doubanio.com/simple/ --trusted-host py …...

语音芯片的型号有哪些?为什么强烈推荐使用flash型可擦写的

一、语音芯片的简介 语音芯片的型号有哪些?为什么强烈推荐使用flash型可擦写的芯片。这里我们简单描述一下如下常见类容: 1、他们都有什么特点?以及发展的历程简介 2、常见的语音芯片有哪些? 3、为什么推荐使用flash型可以重复…...

【OpenCV常用函数:轮廓检测+外接矩形检测】cv2.findContours()+cv2.boundingRect()

文章目录 1、cv2.findContours()2、cv2.boundingRect() 1、cv2.findContours() 对具有黑色背景的二值图像寻找白色区域的轮廓,因此一般都会先经过cvtColor()灰度化和threshold()二值化后的图像作为输入。 cv2.findContous(image, mode, method[, contours[, hiera…...

opencv,opengl,osg,vulkan,webgL,opencL,cuda

OpenCV OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux、Windows、Android和Mac OS操作系统上。 它轻量级而且高效——由一系列 C 函数和少量 C 类构成,同时提供了Python、Ruby、MATLAB等…...

golang拥有wireshark数据包解析能力

golang拥有wireshark数据包解析能力 1. 功能和实现 wireshark拥有世界上最全面的协议解析能力并且还在不断更新中,通过调研,没有办法找到与wireshark同水平的解析工具。 为了使得golang语言可以拥有wireshark一样强大的协议解析能力,库 gowir…...

Redis_分片集群

10. 分片集群 10.1简介 业务场景,需要存储50G的数据。对于内存和硬盘配置不足,选用两种方式 一种:纵向扩展:加内存,加硬盘,提高CPU。简单、直接。RDB存储效率要考虑。成本要考虑。二种:横向扩…...

测试提升方向:你选测试开发?还是性能测试?

如果想要在测试领域好好发展,提升自己的测试技术是必不可少的,但是,选对方向更为重要,功能测试、自动化测试、测试开发、性能测试、安全测试、测试管理,每个测试方向都不简单,但是,大环境就是&a…...

无涯教程-Perl - print函数

描述 此函数将LIST中的表达式的值打印到当前的默认输出文件句柄或FILEHANDLE指定的句柄中。 如果设置,则$\变量将添加到LIST的末尾。 如果LIST为空,则打印$_中的值。 print接受一个值列表,列表中的每个元素都将被解释为一个表达式。 语法 以下是此函数的简单语法- print…...

python搜索文件夹内类似的文件名

# codingutf8 __author__ Administrator import os """ #编写函数,计算字符串匹配的准确率 def Rate(origin,userInput): if not (isinstance(origin,str) and isinstance(userInput,str)): print(The two parameters must be strings…...

[保研/考研机试] KY3 约数的个数 清华大学复试上机题 C++实现

题目链接&#xff1a; KY3 约数的个数 https://www.nowcoder.com/share/jump/437195121691716950188 描述 输入n个整数,依次输出每个数的约数的个数 输入描述&#xff1a; 输入的第一行为N&#xff0c;即数组的个数(N<1000) 接下来的1行包括N个整数&#xff0c;其中每个…...

cmake扩展(2)——windows下动态设置输出文件(dll/exe)版本

准备 windows下设置文件的版本需要通过VERSIONINFO接口&#xff0c;详情参考VERSIONINFO resource。这里我们根据模板做了一定的修改。 1 VERSIONINFOFILEVERSION ${GIT_VERSION} //文件版本号&#xff0c;必填。以,分隔&#xff0c;输出以.分隔。这里是取CMakeLists里的GIT_…...

Python-OpenCV中的图像处理-颜色空间转换

Python-OpenCV中的图像处理-颜色空间转换 颜色空间转换获取HSV的值 颜色空间转换 在 OpenCV 中有超过 150 中进行颜色空间转换的方法。但是你以后就会 发现我们经常用到的也就两种&#xff1a; BGR G r a y 和 B G R Gray 和 BGR Gray和BGRHSV。 注意&#xff1a;在 OpenCV 的…...

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇&#xff0c;在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下&#xff1a; 【Note】&#xff1a;如果你已经完成安装等操作&#xff0c;可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作&#xff0c;重…...

网络六边形受到攻击

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 抽象 现代智能交通系统 &#xff08;ITS&#xff09; 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 &#xff08;…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例

使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件&#xff0c;常用于在两个集合之间进行数据转移&#xff0c;如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model&#xff1a;绑定右侧列表的值&…...

剑指offer20_链表中环的入口节点

链表中环的入口节点 给定一个链表&#xff0c;若其中包含环&#xff0c;则输出环的入口节点。 若其中不包含环&#xff0c;则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

Nuxt.js 中的路由配置详解

Nuxt.js 通过其内置的路由系统简化了应用的路由配置&#xff0c;使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...

Psychopy音频的使用

Psychopy音频的使用 本文主要解决以下问题&#xff1a; 指定音频引擎与设备&#xff1b;播放音频文件 本文所使用的环境&#xff1a; Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...

EtherNet/IP转DeviceNet协议网关详解

一&#xff0c;设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络&#xff0c;本网关连接到EtherNet/IP总线中做为从站使用&#xff0c;连接到DeviceNet总线中做为从站使用。 在自动…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)

骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术&#xff0c;它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton)&#xff1a;由层级结构的骨头组成&#xff0c;类似于人体骨骼蒙皮 (Mesh Skinning)&#xff1a;将模型网格顶点绑定到骨骼上&#xff0c;使骨骼移动…...

MySQL中【正则表达式】用法

MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现&#xff08;两者等价&#xff09;&#xff0c;用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例&#xff1a; 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...

【分享】推荐一些办公小工具

1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由&#xff1a;大部分的转换软件需要收费&#xff0c;要么功能不齐全&#xff0c;而开会员又用不了几次浪费钱&#xff0c;借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...