基于湖库一体架构,统一管理结构化、半结构化与非结构化等多模态数据,一个系统承载事务处理、实时分析与 AI 工作负载。
Oracle 数据库的前镜像不包含所有 UK 值
更新时间:2023-11-16 04:11
本文为您介绍 Oracle 数据库的前镜像出现不包含所有 UK 值情况的解决方法。
适用场景
适用于源端为 Oracle 数据库,并同步源端更新数据的数据迁移项目。
适用版本
适用于 OceanBase 迁移服务(OceanBase Migration Service,OMS)全部版本。
问题描述
数据迁移项目出现 workerNum 为 1、Sink RPS 低、Store 位点不延迟、Connector 位点延迟或位点推进慢等问题。
可能原因
同一张表的 UPDATE 前镜像值相同,Connector 的处理逻辑会判断这些数据只能串行执行,则产生 Oracle 数据库的前镜像不包含所有 UK 值的情况。
您可以通过以下操作确认是否包含多组 UK。
进入目标项目的详情页面。
登录 OMS 控制台。
在左侧导航栏,单击 数据迁移。
在项目列表页面,单机目标项目的名称,进入详情页面。
单击页面右上角的 查看组件监控。
在 查看组件监控 对话框,单击 Incr-Sync 增量同步组件 后的 查看日志,默认进入 connector.log 页签。
在 *connector.log 页签,搜索
conflict关键字,查看冲突的表的源端表结构(例如下图的mock_database.update_test)。
解决方法
如果确认包含多组 UK,您需要将多组 UK 涉及的列均添加至补偿日志。
添加具体列至补偿日志的方式,示例如下:
ALTER TABLE <table_name> ADD SUPPLEMENTAL LOG GROUP <table_name_group> (c1, c2) ALWAYS;
添加完成后,您可以单击目标项目详情页面右上角的 查看组件监控,进入 Incr-Sync 增量同步组件 > 查看日志 > msg/metrics.log 页签,确认 workerNum、Sink RPS 比之前有所提高,位点推进变快。