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