1、Job+DBLink
Oracle 中實現數據同步的技術很 多,Job + DBLink 的方式是比較原始的一種,同時也是實現 2 個數據庫連接的簡單方式,可實現同步和定時刷新。當兩個庫做非實時數據同步時,DBLink 是個不錯 的選擇,例如:在庫 A 中有 t_user 表,在庫 B 中有 t_history_user 表,業務要求將每天產生在庫 A 中的數據都同步到庫 B 中的 t_history_user 表中。此時可以通過 DBLink 在以 job 調度相關過程實現。
2、物化視圖 (Materialized View)
Materialized View (物化視圖) 是包括一個查詢結果的數據庫對像,它是遠程數據的的本地副本,或者用來生成基于數據表求和的匯總表。物化視圖存儲基于遠程表的數據,也可以稱為快照.。物化視圖可以用來同步數據,一般采用主鍵同步或者是 ROWID 同步。通過使用物化視圖 + Job 的方式可以實現雙向的表同步。物化視圖有增量刷新和完全刷新兩種模式,都是非實時的數據同步。
3、DataGuard
DataGuard 是 Oracle 數據庫自帶的數據同步功能,基本原理是將日志文件從原數據庫傳輸到目標數據庫,然后在目標數據庫上應用這些日志文件,從而使目標數據庫與源數據庫保持同步。
DataGuard 數據同步技術的優勢主要在于它是 Oracle 數據自身內置的功能,與每個 Oracle 新版本都完全兼容,且不需要另外付費;其配置管理也較為簡單,不需要 熟悉其他第三方的軟件產品,便于 DBA 的運維管理。當然,DataGuard 也存在一些不足,比如它對于網絡傳輸的帶寬要求較高,并且備庫是以只讀方式打 開,也不支持異構環境,需要相同的操作系統版本和數據庫版本。DataGuard 技術是 Oracle 推薦的用于高可用災難恢復環境的數據同步技術。
4、高級復制 (Advanced Replication)
Oracle 高級復制,也稱為對稱復制,名列前茅次是在 Oracle7.1.6 中出現的,主要是為了應對在分布式數據庫系統的多個數據庫中復制和維護數據庫對象的需求。我們可以利用高級復制實現內外網數據的同步,保證每個節點的數據保持一致。
Oracle 高級復制雖然功能強大,但是配置管理較復雜,且對源數據庫性能影響較大,從 Oracle10g 后已經逐步被 Streams 所替代,而 Streams 后來又漸漸被 GoldenGate 所取代。
5、Streams
Streams 是從版本 Oracle 9i 才開始具有的數據同步功能,是為提高數據庫的高可用性和數據的分發和共享功能而設計的,Streams 利用高級隊列技術,通過用 LogMiner 挖掘 日志文件生成變更的邏輯記錄,然后將這些變更應用到目標數據庫上,從而實現數據庫之間或一個數據庫內部的數據同步。
Streams 支持一 對多,多對一和雙向同步,可用于數據分發和共享 (和 OGG 類似),這是 DataGuard 所不具備的。同時 Streams 也是 Oracle 內置功能,不需 要額外付費,同時其配置方式也比較靈活。但是 Streams 跟高級復制一樣也存在配置維護復雜,而且對源數據庫壓力較大,對網絡帶寬要求也較高,還不能保 證數據的零丟失。
在 Oracle 收購了 GoldenGate 之后,由于其可以跨平臺,跨數據庫。且性能更優于 Streams,Streams 也被邊緣化了,面臨高級復制的命運,只提供支持,不再開發。
6、GoldenGate
GoldenGate 于 2009 年被 Oracle 收購之后,GoldenGate 軟件被集成到到 Oracle“融合(Fusion)” 中間件中,與 Oracle 數據庫更緊密地 集成。GoldenGate 可以用于多種不同的操作系統平臺(Unix、Linux、Windows)和多種不同數據庫系統(如 Oracle、SQL Server、MySQL、DB2 等)之間的數據同步,是極優異的數據集成產品。
GoldenGate 是 Oracle 在數據遷移和數據同步方面要重點發展的產品,功能強大,可以跨平臺,跨數據庫。應用場景很多:可以做數據庫同步;容災備份;實現讀寫分離,實時數據庫倉庫供給,負載均衡等等。
相 比 DataGuard 傳輸整個日志文件相比,GoldenGate 傳輸的數據量大大降低;同時,目標數據庫是出于 Open 狀態,所占系統資源較少,對網絡 帶寬要求更低;與 Streams 相比,GoldenGate 也支持一對多,多對一,雙向復制等,不說支持異構平臺,GoldenGate 的性能較之 Streams 更為卓越,抗壓性強,不管數據量多少,GoldenGate 都是遠高于 Streams 方式的。
GoldenGate 重要性日益增強,是 Oracle 戰略上高層次的產品,這點上 DataGuard 也無法與之相較。但盡管如此,GoldenGate 但也不會取代 DataGuard,二者定位不同。事實上,ataGuard 已經很成熟,但也在不斷發展,二者都有廣闊的發展空間。
7、CDC
Oracle CDC(變更數據捕獲)是一種有效識別和捕獲已添加到、更新或從 Oracle 表中刪除的數據并使變更數據可供目標應用程序使用的技術。當應用程序執行事務并保存時,可以捕獲對 Oracle 表的相應插入、更新或刪除。相反,如果事務沒有保存,則不會捕獲此更改數據。
8、logical standby
在Oracle數據庫中,Logical Standby是Oracle Data Guard的一種模式,它可以通過將Redo日志傳輸到Standby數據庫來實現數據保護和故障恢復。與Physical Standby不同,使用Logical Standby可以實現更高靈活度的數據管理和更完整的數據恢復能力。
具體來說,Logical Standby模式允許應用在Standby數據庫上創建其他的表、索引、觸發器以及其他的數據庫對象,這些對象在主庫上并不存在。此外,在Logical Standby模式下,也允許在Standby數據庫上修改已存在的表結構、觸發器等,并將這些更改反饋回到主庫,實現了Primary與Logical Standby數據庫的雙向同步。
在Logical Standby模式下,Redo日志會被解析成SQL語句,然后在Standby數據庫上重新執行。這意味著Logical Standby數據庫可以有不同于主庫的物理結構,并且對于某些不需要保護的數據,可以選擇不在Logical Standby中進行同步。此外,Logical Standby還支持應用程序查詢,即可以在Standby數據庫上進行查詢操作。
9、Database Change Notification
Database Change Notification(DCN)是Oracle數據庫提供的一種異步通知機制,可以在指定的查詢條件或對象有所變化時向客戶端發送通知。該機制可以讓應用程序實時感知數據庫中數據變化,從而及時做出響應。
延伸閱讀1:Database Change Notification三步驟
注冊:指定數據庫要監聽的查詢。通知:一旦數據庫中的數據發生變化,數據庫將自動發出通知。響應:執行程序中定義事件處理操作。