Oracle 數據同步系列--觸發器

   如今隨着項目集成的愈來愈深刻,異構的數據多起來,數據同步的場景也用的多起來,我甚至在考慮是否忽悠用戶上Oracle GoldenGate了,這樣就能夠不用考慮採用哪一種同步方案了。函數

   簡單的介紹一下咱們數據的業務,與邊界交換網管相關,有兩個表一個是緩衝表,另一個是持久化表。在一個庫類,不一樣的表名,看似很簡單,spa

要否則也不會寫出來,主要是其中有多個blob字段! 這樣有以下個問題code

   1.Blob字段沒法作數據變化監控,只能監控id 和其餘字段的變化blog

   2.Blob字段在入另外表時必須先iNSERT 後 UPDATE,總共在一個事物隔離級別中,進行的。事務

   想了個偷懶的方法同步

   1.經過ID,獲得變化的id,在緩衝表中獲得,觸發的數據,而後經過merge into快速的更新到持久化表。class

   出現的問題監控

    

ORA-04091: 表 ORA-04091: 表 BOCOITMS.ITMS_VES_EPODATA_MEDIASYN 發生了變化, 觸發器/函數不能讀它
ORA-06512: 在 "BOCOITMS.TRIG_VES_EPODATA_MEDIASYN", line 4
ORA-04088: 觸發器 'BOCOITMS.TRIG_VES_EPODATA_MEDIASYN' 執行過程當中出錯
ORA-06512: 在 "BOCOITMS.PROC_MEDIA_SYNC", line 7
. 發生了變化, 觸發器/函數不能讀它

   很眼熟,這就是觸發器中沒法再去回查原來的表。方法

       

         2.經過自治式事務解決以上的問題,可是自治事務是沒法拿到最新的值得。數據

   最後仍是經過老老實實的方法。先插入空的blob,再更新blob的方式解決的 。 

相關文章
相關標籤/搜索