数据同步中的误导

简介: 今天同事让我帮一个忙,说现在有两个环境中的一张表数据不一致,已经造成了一些数据问题,他们已经排查了一圈,最后发现是一张表的数据问题导致,希望我来帮忙协助一下。 他们提供了详细的源库,目标库的链接,看起来一起都明确了,那DBA需要做的事情就很明朗了。
今天同事让我帮一个忙,说现在有两个环境中的一张表数据不一致,已经造成了一些数据问题,他们已经排查了一圈,最后发现是一张表的数据问题导致,希望我来帮忙协助一下。
他们提供了详细的源库,目标库的链接,看起来一起都明确了,那DBA需要做的事情就很明朗了。
本来以为数据访问结构图是下面的形式,即两个不同的数据库环境,彼此都有对应的属主用户和连接用户,彼此之间独立。那么同步数据就需要考虑是否是全量,增量等等。

但是查看了一圈,发现结构比自己想象要复杂一些。类似下面的形式
左边是源库,源库中存在属主用户和连接用户,分别对应表和同义词,
右边是目标库,里面存在属主用户和连接用户,分别对应的是物化视图和同义词,这一点有一些奇怪的是,目标库中是通过db link来访问源库的同义词创建了物化视图。

如果这样来看,两边的数据应该很可能是一致的,如果不一致,那就应该是物化视图没有刷新同步导致的。
带着疑问查看了源库的数据条数
> select count(*)from testtype;
  COUNT(*)
----------
       709
在目标库中查看,发现确实不匹配。
> select count(*)from testtype;
  COUNT(*)
----------
       731
那么如此来看确实是数据不同步导致的,那么我们就来刷新一下物化视图来修复这个问题。
SQL> exec dbms_mview.refresh('TESTTYPE','C');
按照开发同事提供的思路,这是一个很自然的过程。
但是查看刷新后的数据情况,还是731条,这个时候感觉应该是哪里出现了问题,唯一的可能就是物化视图了。
结果一看物化视图的ddl语句。
原来是类似这样的结构
select xxxxx from testtype where xxxx
union all
select xxxxx  from testtype where xxxxx;
这样来看,确实很可能两边的数据不一致了。那么这样一来,问题看起来就可能不是单纯的数据不一致的问题造成的了。这种数据的变化应该就是希望根据业务来定制出来的,所以在目标库做了集合运算。那么怎么来说服开发同事呢,有一个办法,就是从数据字典里抓出来这个物化视图的定义,一看都是好几年前的了,如果出问题早就出了。也不在最近才有这种事情。
OWNER                OBJECT_NAME                    OBJECT_TYPE          STATUS  CREATE_DAT
-------------------- ------------------------------ -------------------- ------- ----------
TESTAGENT            TESTTYPE                       MATERIALIZED VIEW    VALID   2013-12-24
这个问题和开发同事进行了沟通,解释的也还算顺利,看来他们又得说服自己来处理这种数据的不一致了。
通过这个案例可以看到,很多时候我们都得说服自己,可能有些问题最开始方向就是错的,我们得严密的进行论证,要不就会错上加错。

目录
相关文章
|
4月前
|
消息中间件 SQL 分布式计算
一篇文章搞定数据同步工具SeaTunnel
一篇文章搞定数据同步工具SeaTunnel
520 0
|
1月前
|
数据库
阿里云DTS数据迁移和数据同步的差异性分析
阿里云DTS作为一款常用的数据库表迁移工具,提供了功能非常类似的两个功能:数据迁移、数据同步。阿里云DTS产品官网对这两个功能模块进行了简单的区分: 场景1:存量数据批量迁移,建议使用数据迁移功能。 场景2:增量数据实时同步,建议使用数据同步功能。 实际上,无论是数据迁移还是数据同步,都可以做 “结构初始化”+“全量数据迁移”+“增量迁移”,因此两者功能差异并不明显。笔者在多个项目实践DTS数据迁移,在简单需求场景下,将DTS的数据迁移、数据同步进行对比和总结。
|
16天前
|
监控 NoSQL Redis
RedisShake如何处理数据同步过程中的冲突和一致性问题
RedisShake保障数据同步一致性,支持全量和增量同步,处理并发冲突(利用乐观锁机制),并进行数据校验。遇到故障能自动恢复和重试,保证不间断同步。同时,提供监控和日志功能,便于识别和解决问题,确保数据完整性。
13 0
|
8月前
|
缓存 人工智能 关系型数据库
数据库主从延迟导致查询不准确的解决思路
实现固然重要,但更为重要的是思路;很多底层的原理与思想是通用的
422 5
|
9月前
主从同步数据的流程
主从同步数据的流程
63 0
|
NoSQL 网络协议 Redis
主从复制-数据同步阶段注意事项|学习笔记
快速学习主从复制-数据同步阶段注意事项
68 0
|
NoSQL Redis 开发者
主从复制-工作流程(2)数据同步与命令传播阶段(全)|学习笔记
快速学习主从复制-工作流程(2)数据同步与命令传播阶段(全)
71 0
主从复制-工作流程(2)数据同步与命令传播阶段(全)|学习笔记
|
NoSQL 数据库 Redis
主从复制-工作流程(2)数据同步阶段(简)|学习笔记
快速学习主从复制-工作流程(2)数据同步阶段(简)
63 0
主从复制-工作流程(2)数据同步阶段(简)|学习笔记
|
前端开发 大数据 关系型数据库
一次做数据报表的踩坑经历,让我领略了数据同步增量和全量的区别
嗨喽,大家好,我是创作新人,新时代新的农民工小赵,在今年的七月结束了大学生活,目前在一家大数据公司做开发。对于初入职场的同学来说,在实际的工作开发中会遇到各种各样问题,将问题沉淀、输出、总结,才会让后面的路走的越来越轻松。那么,接下来我会通过以下几个方面进行分享。
一次做数据报表的踩坑经历,让我领略了数据同步增量和全量的区别

热门文章

最新文章