總結一下Oracle數據庫表級別的復制同步
一.通過觸發器進行表的復制
-
原理,是監聽表上都某一字段進行的DML操作,然后得到DML操作的數據,重新在另一個表上執行DML操作。
-
優點: 簡單,編寫一個觸發器就可以,不需要過多的配置。 易修改,遇到了問題很好定位。
-
缺點:表大的話是有性能問題,如果表中含有blob列,是無法監聽到其改變的,而且整個insert 必須先insert 一個空的blob,再進行update操作,而且很有可能出現數據不為空,blob為空的情況。
二.通過Stream進行表同步
-
原理,Stream的功能很強大的,主要是進行多個數據庫之間的同步,在原庫和目的庫,分別啟動捕獲隊列,捕獲進程和加載進程和加載隊列,捕獲進程通過捕獲進行DML操作的REDO log日志,所以對數據的性能不造成什么影響。
-
優點: 性能好,對原數據庫結構沒有侵入。對BLOB支持也很好。
-
缺點: 配置很復雜,原庫和目的庫通過DBLINK進行通信,配置的工作量大。如果隊列出現問題,整個同步將無法進行。
三.通過MV進行表同步
原理,物化視圖 (MV)在一個段中存儲查詢結果,並且能夠在提交查詢時將結果返回給用戶,從而不再需要重新執行查詢 — 在查詢要 執行幾次時(這在數據倉庫環境中非常常見),這是一個很大的好處。物化視圖可以利用一個快速刷新機制從基礎表中全部或增量刷新。利用物化視圖的增量刷新功能來進行同步的。
-
優點: 性能不錯,
-
缺點: 需要對原有結構改動較大,一般只在數據倉庫中使用,存在一個刷新的時間窗。
四.通過CDC進行同步
-
原理,也是一種進行數據同步捕獲的技術,主要通過觸發器+臨時表+捕獲標識來實現的。
-
優點:如果作為一種ETL手段還可
- 缺點:同觸發器
五.通過GoldenGate進行同步
沒什么好說的,基本上,以上幾種方式都可作。但是要收費的。