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,說是一致讀可能有問題。
網上查了下其他和我類似的情況,但都沒發現原因和解決方案,求助~
uj5u.com熱心網友回復:
用去重的語法試一試。uj5u.com熱心網友回復:
看是否存在記錄全部為空的資料,主鍵是允許為空的(除非你限定了not null),空的資料不受唯一性影響。uj5u.com熱心網友回復:
查看了重復的2條記錄,一般都是有一個欄位是不一樣的,其它欄位都是一模一樣
uj5u.com熱心網友回復:
不存在為空的資料
uj5u.com熱心網友回復:
我遇到過類似的,一般是由于核心資料進行修改,核心資料修改前已經讀取了一次,修改后讀取了又讀取一次,這種可以查詢核心系統業務是否進行了操作,增加時間戳來識別uj5u.com熱心網友回復:
只有當session有多個的時候,才會出現一致讀的問題。如果只有一個session的時候,是不會出現一致讀的問題。
uj5u.com熱心網友回復:
使用dblink同步的時候,以下陳述句可以添加下過濾條件,houseid 相同的資料只取一條,這樣一來就不會報主鍵錯誤了。
create table tmp_1234 nologging as
select * from res_house@test;
uj5u.com熱心網友回復:
那就可能是資料不一一致問題: 不般不用 create table xxx as select * from yyy ; 建好中間表,再插入!估計快點!看看再用分析函式,在應用端去重!轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/80546.html
標籤:高級技術
