ogg主庫更新從庫沒有該記錄的處理辦法

2022-06-21 15:42:10 字數 1885 閱讀 9473

目的庫複製程序引數如下:

replicat repep

userid goldengate, password goldengate

gettruncates

allownoopupdates

assumetargetdefs

dboptions suppresstriggers

dboptions deferrefconst

map ora12cpdb1.hxl.tb_test,target hxl.tb_test;

map ora12cpdb1.hxl.tb_test01,target hxl.tb_test01;

map ora12cpdb1.hxl.tb_test02,target hxl.tb_test02;

ddlerror 10655 ignore

ddlerror 10636 ignore

源庫進行更新操作

update hxl.tb_test t

set t.name='hxlname1111'

where id=11;

複製程序報出現absend,錯誤如下:

oci error ora-01403: no data found, sql

aborting transaction on /u01/ogg/dirdat/ep beginning at seqno 0 rba 6340

原因是:目的庫沒有id=11的記錄導致的;

在複製程序引數加上handlecollisions後,程序可以正常啟動,但是id=11的記錄不會同步過去,我們要想實現更新的時候發現不存在的記錄做insert寫入操作,

可以針對每個maping加上resolveconflict處理,如下配置

replicat repep

userid goldengate, password goldengate

gettruncates

allownoopupdates

assumetargetdefs

dboptions suppresstriggers

dboptions deferrefconst

--handlecollisions

map ora12cpdb1.hxl.tb_test,target hxl.tb_test

resolveconflict (updaterowmissing, (default, overwrite));

map ora12cpdb1.hxl.tb_test01,target hxl.tb_test01;

map ora12cpdb1.hxl.tb_test02,target hxl.tb_test02;

ddlerror 10655 ignore

ddlerror 10636 ignore

這個要是更新的不是主鍵的話,需要在主庫為每個列加上補充日誌,如下:

alter database add supplemental log data (all) columns或是

alter table hxl.tb_test add supplemental log data(all) columns;

備註resolveconflict的常見使用:

map hxl.tb_test, target hxl.tb_test,

comparecols (on update all, on delete all),

resolveconflict (updaterowexists, (default, usemin (last_time))),

resolveconflict (deleterowexists, (default, overwrite)),

resolveconflict (deleterowmissing, (default, discard));

向資料庫中插入一條記錄,有重複值則更新,沒有則插入

根據主鍵判斷是否有該條記錄,如果有,則將對應屬性改變,沒有則直接插入 案例 表 team info id,team name project id,leader 其中id 為key 假設表中已經存在一條記錄 fd15ee77 dae4 4a64 ad15 9ae540823b8f 哈哈 1 張三 1...

資料庫中有則更新,沒有就插入的sql語句

話不多多說,直接上 這是自己親手查得,找了好久也是,然後才寫好,寫一下記錄著吧 存在即更新,不存在就插入 根據id insert into vclb mm inventory id stock id item id amount values 489734716803514367 倉庫一 水杯 44...

從大庫中找到目標內容並複製該內容到新的資料夾中

給出乙個例子 在乙個資料夾中有100首歌曲,根據txt檔案中的59個歌曲名字去從中找到目標歌曲並將其複製到新的資料夾中。檔案列表包含 1個txt文件,包含59首歌曲名字的資訊 1個python檔案 兩個資料夾 sourse songs資料夾為全部的1000首歌曲,songs 59為空資料夾 目的資料...