用dblink同步数据时发现数据重复

a1013911535 2017-08-01 06:02:58
create table tmp_1234 nologging as
select * from res_house@test;

houseid 是主键;
select houseid,count(1)
from tmp_1234
group by houseid
having count(1)>1;


之前一直用的这种方式同步数据,现在突然发现了主键重复数据,去数据源 数据库 查询是没有重复的数据的,
整个表大概有1300W数据,有3000条主键重复的数据;咨询了一下公司的dba,说是一致读可能有问题。

网上查了下其他和我类似的情况,但都没发现原因和解决方案,求助~
...全文
815 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
sz_jack 2017-10-22
  • 打赏
  • 举报
回复
那就可能是数据不一一致问题: 不般不用 create table xxx as select * from yyy ; 建好中间表,再插入!估计快点!看看再用分析函数,在应用端去重!
碧水幽幽泉 2017-09-23
  • 打赏
  • 举报
回复
使用dblink同步的时候,以下语句可以添加下过滤条件,houseid 相同的数据只取一条,这样一来就不会报主键错误了。

create table tmp_1234 nologging as
 select * from res_house@test;
碧水幽幽泉 2017-09-23
  • 打赏
  • 举报
回复
只有当session有多个的时候,才会出现一致读的问题。 如果只有一个session的时候,是不会出现一致读的问题。
「已注销」 2017-09-22
  • 打赏
  • 举报
回复
我遇到过类似的,一般是由于核心数据进行修改,核心数据修改前已经读取了一次,修改后读取了又读取一次,这种可以查询核心系统业务是否进行了操作,增加时间戳来识别
a1013911535 2017-08-02
  • 打赏
  • 举报
回复
引用 2 楼 XLDSsn 的回复:
看是否存在记录全部为空的数据,主键是允许为空的(除非你限定了not null),空的数据不受唯一性影响。
不存在为空的数据
a1013911535 2017-08-02
  • 打赏
  • 举报
回复
引用 1 楼 lantian199003 的回复:
用去重的语法试一试。
查看了重复的2条记录,一般都是有一个字段是不一样的,其它字段都是一模一样
CubDswill 2017-08-02
  • 打赏
  • 举报
回复
看是否存在记录全部为空的数据,主键是允许为空的(除非你限定了not null),空的数据不受唯一性影响。
lantian199003 2017-08-01
  • 打赏
  • 举报
回复
用去重的语法试一试。

3,497

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧