不同Oracle資料庫之間的資料同步

御前提筆小書童發表於2017-04-19

方法一:通過快照來實現

1 建立dblink 2 建立快照


Oracle快照原理及實現總結
Oracle資料庫的快照是一個表,它包含有對一個本地或遠端資料庫上一個或多個表或檢視的查詢的結果。對於中大型資料庫,業務資料庫裡所有的資料同步到另外一個處理伺服器上最佳的選擇還是使用SnapShot方式,即快照的方式。

Oracle資料庫的快照是一個表,它包含有對一個本地或遠端資料庫上一個或多個表或檢視的查詢的結果。也就是說快照根本的原理就是將本地或遠端資料庫上的一個查詢結果儲存在一個表中。
以下是我建立的Snapshot,目的是從業務資料庫上將資料Copy到處理資料庫上,是不同的兩個伺服器之間對資料copy。
第一步:在處理伺服器上的Oracle終端,建立database link,業務資料庫伺服器SID為TEST
create database link TEST_DBLINK.US.ORACLE.COM
connect to AMICOS identified by AMICOS
using 'test';
第二步:在業務資料庫上對應的表建立快照日誌
Create snapshot log on A_Table;
第三步:建立Snapshot 快照名稱為:Test_SnapShot
Create snapshot Test_SnapShot
REFRESH COMPLETE START WITH SYSDATE NEXT SYSDATE+1/24
as select * from A_Table@TEST_DBLINK
說明:REFRESH是重新整理方法
重新整理方式有:COMPLETE和FAST兩種,而START WITH是說明開始執行的時間。
Next是下次執行的時間
而AS以後是構成快照的查詢方法。
相關的方法:
更改快照
ALTER SNAPSHOT Test_SnapShot
REFRESH COMPLETE START WITH SYSDATE NEXT SYSDATE+1/2;
手動重新整理快照 在命令介面執行:
EXEC DBMS_SNAPSHOT.REFRESH('Test_SnapShot ','C');
第一個引數是要重新整理的快照名
第二個引數是重新整理的方式,F----FAST, C---COMPLETE
檢視快照最後重新整理的日期
SELECT NAME,LAST_REFRESH
FROM ALL_SNAPSHOT_REFRESH_TIMES;
最後非常的方案:
1:為需要做Snapshot的表建立Snapshot日誌
create snapshot log on t1 with rowid; 這裡使用ROWID建立日記的引數
2:採用Fast的方式建立快照,使用rowid做為參考引數
create snapshot fb_test_b refresh fast with rowid start with sysdate next sysdate+1/1440 as select * from fb_test_b@my_dblink;
最好能按照rowid來建立快照。要不然就必須要為表建立Primary Key。

方法二:通過dataguard來實現

全庫同步,並且備庫不能進行操作


DataGurd:

主要備庫的方式,就是資料庫對資料庫的備份方式,主要是解決容災的。

流複製:

主要是利用ORACLE的歸檔日誌,進行增量備份來實現的,不僅可以配置只複製某些表,還可以配置僅複製某些表上的ddl或dml。可以複製到表,使用者,資料庫級別。

高階複製:

主要是基於觸發器的原理來觸發資料同步的,因此,高階複製無法實現使用者,資料庫級別的物件複製,只能做些表、索引和儲存過程的複製。

如果出於容災整個資料庫的考慮,高階複製相當複雜,而且並不一定能做好,流複製的配置相對簡單。流複製是後來產生的複製技術,是基於日誌挖掘技術實現的,對資料庫的影響較低。但在穩定性方面較差,實時性沒有高階複製強(因為高階複製是基於觸發器的)。如果系統意外的話,流複製的恢復將會需要較長時間,特別是意外時間越長,恢復時間成倍增長。
從ORACLE9i開始,Oracle standby database改成DATA GUARD,在這種模式中,開始支援三種不同的資料保護模式,並開始採用LGWR 對資料的傳送而不是以往的ARCH,而且增加了一個新的後臺程式叫DMON 監控資料的同步,在11g之前最多支援9個節點的同時複製,從Oracle 9.2.0開始,開始支援邏輯standby。
11g能夠支援多少備庫,通過下面的sql你就能知道了:
SQL> show parameter log_archive_dest
Data guard是軟體級別的冗餘,不需要額外購買任何元件,因此能在對主資料庫影響很小的情況下,實現主備資料庫的同步,而主備機的資料差異只在線上日誌部分,所以被不少企業作為了資料容災方案。到了oracle 11g版本,備庫可以直接已read only方式開啟。 這樣可以做一些查詢工作,減輕出庫的壓力。
使用Data Guard技術有如下好處:
(1)DG是一種有效的disaster recovery 和high availability的解決方案。 可以很容易的在主庫和備庫之間進行switchover 和 failover的切換。 如果主庫出現特殊情況,也能將停機時間降到最小。
(2)在最大保護的級別下,可以做到零資料丟失的保護,即使是一些不可預知的災難。 並且standby 資料庫也可以提供一種預防data corruption 和使用者誤操作的安全保護。
(3)DG 提供了3種級別的保護:maximum protection,maximum availability,maximum performance。 使用者可以根據資料保護級別的需要和效能需求綜合考慮選擇對應的模式。
(4)如果主庫和備份之間的的連線通訊中斷,比如網路故障,那麼主庫的歸檔日誌就不能傳送到備庫。 一旦主備庫之間通訊重新連線,那麼這些丟失的歸檔檔案就是GAP。 DG 會自動檢測GAP,如果發現有GAP,會自動把這些丟失的歸檔傳送到備庫,實現主備庫的同步,這一切操作都不需要DBA的參與,自動實現。
(5)當啟用fast-start failover後,如果primary 出現故障,那麼DG broker會自動把standby 轉換成primary。這個過程自動實現,無需要DBA 干預。

(6)Data Guard broker技術提供了一個使用者圖形介面和命令介面來自動管理和配置DG

方法三:通過godengate來實現

1 兩個資料庫同時安裝godengate軟體 2 配置引數


Oracle Golden Gate軟體是一種基於日誌的結構化資料複製備份軟體,它通過解析源資料庫線上日誌或歸檔日誌獲得資料的增量變化,再將這些變化應用到目標資料庫,從而實現源資料庫與目標資料庫同步。Oracle Golden Gate可以在異構的IT基礎結構(包括幾乎所有常用作業系統平臺和資料庫平臺)之間實現大量資料亞秒一級的實時複製,從而在可以在應急系統、線上報表、實時資料倉儲供應、交易跟蹤、資料同步、集中/分發、容災、資料庫升級和移植、雙業務中心等多個場景下應用。同時,Oracle Golden Gate可以實現一對一、廣播(一對多)、聚合(多對一)、雙向、點對點、級聯等多種靈活的拓撲結構。
和傳統的邏輯複製一樣,Oracle GoldenGate實現原理是通過抽取源端的redo log或者archive log,然後通過TCP/IP投遞到目標端,最後解析還原應用到目標端,使目標端實現同源端資料同步。
利用捕捉程式(Capture Process)在源系統端讀取Online Redo Log或Archive Log,然後進行解析,只提取其中資料的變化如增、刪、改操作,並將相關資訊轉換為GoldenGate TDM自定義的中間格式存放在佇列檔案中。再利用傳送程式將佇列檔案通過TCP/IP傳送到目標系統。捕捉程式在每次讀完log中的資料變化並在資料傳送到目標系統後,會寫檢查點,記錄當前完成捕捉的log位置,檢查點的存在可以使捕捉程式在中止並恢復後可從檢查點位置繼續複製;
目標系統接受資料變化並快取到GoldenGate TDM佇列當中,佇列為一系列臨時儲存資料變化的檔案,等待投遞程式讀取資料;
GoldenGate TDM投遞程式從佇列中讀取資料變化並建立對應的SQL語句,通過資料庫的本地介面執行,提交到資料庫成功後更新自己的檢查點,記錄已經完成複製的位置,資料的複製過程最終完成。
由此可見,GoldenGate TDM是一種基於軟體的資料複製方式,它從資料庫的日誌解析資料的變化(資料量只有日誌的四分之一左右)。GoldenGate TDM將資料變化轉化為自己的格式,直接通過TCP/IP網路傳輸,無需依賴於資料庫自身的傳遞方式,而且可以通過高達9:1的壓縮率對資料進行壓縮,可以大大降低頻寬需求。在目標端,GoldenGate TDM可以通過交易重組,分批載入等技術手段大大加快資料投遞的速度和效率,降低目標系統的資源佔用,可以在亞秒級實現大量資料的複製,並且目標端資料庫是活動的
GoldenGate TDM提供了靈活的應用方案,基於其先進、靈活的技術架構可以根據使用者需求組成各種拓撲結構.
GoldenGate TDM 可以提供可靠的資料複製,主要體現在下面三點:
保證事務一致性
GoldenGate TDM 在災備資料庫應用複製資料庫交易的順序與在生產中心資料庫上的順序相同,並且按照相同的事務環境提交,確保在目標系統上資料的完整性和讀一致性,為實時查詢和事務處理創造了條件。
檢查點機制保障資料無丟失
GoldenGate TDM的抽取和複製程式使用檢查點機制記錄完成複製的位置。對於抽取程式,其檢查點記錄當前已經抽取日誌的位置和寫佇列檔案的位置;對於投遞程式,其檢查點記錄當前讀取佇列檔案的位置。檢查點機制可以保證在系統、網路或GoldenGate TDM程式故障重啟後資料無丟失。
可靠的資料傳輸機制
GoldenGate TDM 用應答機制傳輸交易資料,只有在得到確認訊息後才認為資料傳輸完成,否則將自動重新傳輸資料,從而保證了抽取出的所有資料都能傳送到備份端。資料傳輸過程中支援128位加密和資料壓縮功能。
GoldenGate TDM 可以提供可靠的資料複製,主要體現在下面三點:
保證事務一致性
GoldenGate TDM 在災備資料庫應用複製資料庫交易的順序與在生產中心資料庫上的順序相同,並且按照相同的事務環境提交,確保在目標系統上資料的完整性和讀一致性,為實時查詢和事務處理創造了條件。
檢查點機制保障資料無丟失
GoldenGate TDM的抽取和複製程式使用檢查點機制記錄完成複製的位置。對於抽取程式,其檢查點記錄當前已經抽取日誌的位置和寫佇列檔案的位置;對於投遞程式,其檢查點記錄當前讀取佇列檔案的位置。檢查點機制可以保證在系統、網路或GoldenGate TDM程式故障重啟後資料無丟失。
可靠的資料傳輸機制
GoldenGate TDM 用應答機制傳輸交易資料,只有在得到確認訊息後才認為資料傳輸完成,否則將自動重新傳輸資料,從而保證了抽取出的所有資料都能傳送到備份端。資料傳輸過程中支援128位加密和資料壓縮功能。
Oracle 公司的GoldenGate產品,可以在異構的IT基礎結構之間實現大量資料的秒一級的資料捕捉、轉換和投遞。GoldenGate可以支援幾乎所有常用作業系統如和資料庫平臺.
但是成本相對上面來說比較高,具體的第二和第三種方法的配置等百度上太多就不贅述了.

相關文章