记录一次实时应用场景下,数仓获取Oracle数据遇到的坑

项目场景:

工厂建设监控大屏,目标是为了总览工厂制造实时动态,其中涉及到实时产量和设备状态等信息数据刷新频次要求较高,涉及到Oracle的 CDC(实时数据变更获取) ,原计划是直接通过logminer解析MES的报表库日志

记录一次实时应用场景下,数仓获取Oracle数据遇到的坑_第1张图片

设备状态

有上位机的设备调用MES Webservice接口,返回的数据写入MES同时也写入数仓;

无上位机的设备,PLC调用PLC接口再调用MES Webservice接口,返回的数据写入MES、数仓。

产量、质量等

1、数据库需要开启Archive log

2、创建kafka所需角色和用户;

3、数据库开启最小附加日志;

4Kafka oracle插件调用Oracle自带Logminer解析Oracle日志发送到数仓;


问题描述

问题一: Logminer 的日志解析速度限制在 1w 条每秒以下

问题二: Logminer 存在锁数据库字典的风险

问题三: 报表库为只读库,不能写入,无法使用 Logminer

(都是DBA告诉我的,啊哈哈哈哈)

不能连报表库,连接主库又怕有风险,还影响性能(做了压力测试,最大CPU占用4.0147%)

也考虑过用OGG,据说性能高于Logminer

但是需要购买 OGG 的 License , 而 OGG 的授权贵到令人发指,, 也难用得令人发指!!!(DBA说的,跟我无关!!!)


解决方案:

临时方案:缩短数仓抽数的时间间隔(太沙雕了),伪实时

后续:在MES系统业务侧进行改造,在做产量等实时场景数据持久化的同时,将数据写入Kafka,避免直接从数据库层面对接(幸好场景不是特别多)

TIPS:管理上真的有这么丝滑(实时)么?

你可能感兴趣的:(工作随笔,oracle,数据库,数据仓库,数据分析,大屏端)