Oracle GoldenGate簡介
Oracle Golden Gate用於源數據庫與目標數據庫的數據復制備份;可以在異構的環境(各種操作系統和數據庫)之間實現數據亞秒級的實時復制備份;以及可以在實時數據倉庫、數據同步、集中/分發、容災、數 據庫升級和遷移等多個場景下應用;同時還可以使用一 對一、廣播(一對多)、聚合(多對一)、雙向、點對點、級聯等多種靈活的拓撲結構。
本章介紹Oracle GoldenGate的基本術語及其處理邏輯和體系結構的功能。
1.1 Oracle GoldenGate 支持的拓撲結構和數據庫
Oracle GoldenGate可以在整個企業范圍內的多個異構平台之間交換和處理數據。它以事務完整性和現有基礎架構的最小開銷移動已提交的事務。其模塊化體系結構使您可以靈活地提取和復制選定的數據記錄,事務性更改以及跨各種拓撲結構更改DDL(數據定義語言)。
Oracle GoldenGate支持的拓撲

“圖1-1 Oracle GoldenGate支持的拓撲”
表1-1支持的處理方式
數據庫 | 基於日志的提取(捕獲) | 非基於日志的提取*(捕獲) | 復制(交付) |
---|---|---|---|
*非基於日志的抽取使用捕獲模塊與Oracle GoldenGate API進行通信,以將更改數據發送到Oracle GoldenGate。 |
|||
DB2 for i |
N / A |
N / A |
X |
DB2 for Linux,UNIX,Windows |
X |
N / A |
X |
DB2 for z / OS |
X |
N / A |
X |
Oracle |
X |
N / A |
X |
MySQL的 |
X |
N / A |
X |
SQL / MX |
X |
N / A |
X |
SQL Server |
X |
N / A |
X |
SYBASE |
X |
N / A |
X |
Teradata DB |
N / A |
X |
X |
TimesTen* |
N / A |
N / A |
X |
有關處理方式,支持的拓撲和功能以及配置要求的完整信息,請參閱數據庫的Oracle GoldenGate文檔。
1.2 Oracle GoldenGate架構
Oracle GoldenGate可以配置為以下用途:
-
從一個數據庫靜態提取數據記錄並將這些記錄加載到另一個數據庫。
-
連續提取和復制事務性數據操作語言(DML)操作和數據定義語言(DDL)更改(用於支持的數據庫)以保持源數據和目標數據的一致性。
-
從數據庫中提取並復制到數據庫外部的文件。
Oracle GoldenGate由以下組件組成:
-
Extract
-
Data pump
-
Replicat
-
Trails or extract files
-
Checkpoints
-
Manager
-
Collector
圖1-2說明了用於初始數據加載和DML和DDL操作同步的Oracle GoldenGate的邏輯體系結構。這是基本配置。根據業務需求推薦此模型的變體。
圖1-2 Oracle GoldenGate邏輯體系結構

“圖1-2 Oracle GoldenGate邏輯體系結構”
1.2.1 Extract 提取
Extract進程是Oracle GoldenGate的Extract(捕獲)機制。根據數據庫和實施要求,Extract可以在源系統或下游數據庫或兩者上運行。
您可以通過以下方式之一配置Extract:
-
初始加載:對於初始數據加載,Extract直接從其源對象中Extract(捕獲)當前靜態數據集。
-
更改同步:為了使源數據與另一組數據保持同步,Extract在初始同步發生后捕獲DML和DDL操作。
從a中Extract捕獲 數據源可以是以下之一:
-
源表,如果運行是初始加載。
-
數據庫恢復日志或事務日志(例如Oracle重做日志或SQL / MX審計Trails)。從日志中捕獲的實際方法因數據庫類型而異。例如,Oracle GoldenGate for Oracle提供了一種集成捕獲模式,Extract可以直接與數據庫登錄服務器交互,從而挖掘Oracle事務流。請參見“關於綜合捕獲”在安裝和配置的Oracle GoldenGate用於Oracle數據庫有關集成捕獲更多信息。
-
第三方捕獲模塊。此方法提供了一個通信層,可將數據和元數據從外部API傳遞到Extract API。數據庫供應商或第三方供應商提供了Extract數據操作並將它們傳遞到Extract的組件。
當配置更改同步時,Extract將捕獲在“抽取”配置中對對象執行的DML和DDL操作。Extract存儲這些操作,直到它收到包含它們的事務的提交記錄或回滾。收到回滾時,Extract將放棄該事務的操作。當收到一個提交時,Extract將該事務持續存儲在一系列名為trail的文件中,在這里它被排隊等待傳播到目標系統。每筆交易中的所有操作都會按順序組織的交易單位寫入線索。這種設計可確保速度和數據完整性。
注意:
即使同一事務也可能包含對“抽取”配置中的對象的操作,Extract將忽略對不在“抽取”配置中的對象的操作。多個Extract進程可以同時在不同的對象上運行。例如,兩個Extract進程可以並行Extract並傳輸兩個Replicat進程(具有兩個持久化Trails),以在數據庫較大時將目標延遲降至最低。要區分不同的Extract進程,請為每個Extract進程分配一個組名(請參見第1.4節“組概述”)。
1.2.2 Data pump數據泵
數據泵是源Oracle GoldenGate配置中的輔助Extract組。如果不使用數據泵,Extract必須將捕獲的數據操作發送到目標上的遠程Trails。然而,在使用數據泵的典型配置中,主要Extract組寫入源系統上的Trails。數據泵讀取此Trails並通過網絡將數據操作發送到目標上的遠程Trails。數據泵增加了存儲靈活性,並且還用於將主要Extract進程與TCP / IP活動隔離。
通常,數據泵可以執行數據過濾,映射和轉換,或者可以在數據泵中進行配置 直通模式,在這種模式下,數據被按原樣被動傳輸,無需操作。直通模式增加了數據泵的吞吐量,因為所有查找對象定義的功能都被忽略。
在大多數商業案例中,您應該使用數據泵。使用數據泵的一些原因包括:
-
防止網絡和目標故障: 在基本的Oracle GoldenGate配置中,只有目標系統上的Trails,源系統上沒有任何地方存儲Extract連續Extract到內存中的數據操作。如果網絡或目標系統不可用,Extract可能會耗盡內存並異常終止。但是,通過源系統上的Trails和數據泵,可以將捕獲的數據移動到磁盤,防止主要Extract的異常結束。當連接恢復時,數據泵從源Trails捕獲數據並將其發送到目標系統。
-
您正在實施數據過濾或轉換的幾個階段。使用復雜的過濾或數據轉換配置時,可以配置數據泵以在源系統或目標系統上執行第一次轉換,或者在中間系統上執行第一次轉換,然后使用另一個數據泵或Replicat組執行第二次轉型。
-
將來自多個來源的數據整合到一個中心目標。同步多個時源數據庫和中央目標數據庫,則可以將Extract的數據操作存儲在每個源系統上,並在每個系統上使用數據泵將數據發送到目標系統上的Trails。划分源系統和目標系統之間的存儲負載減少了目標系統上大量空間的需求,以適應來自多個來源的數據。
-
同步 一個來源與多個目標。將數據發送到多個目標系統時,可以在源系統上為每個目標配置數據泵。如果到任何目標的網絡連接失敗,數據仍然可以發送到其他目標。
1.2.3 Replicat復制備份
Replicat進程在目標系統上運行,讀取該系統上的線索,然后重新構建DML或DDL操作並將其應用於目標數據庫。Replicat使用動態SQL編譯SQL語句一次,然后用不同的綁定變量執行多次。
您可以通過以下方式之一配置Replicat:
-
初始加載:對於初始數據加載,Replicat可以將靜態數據副本應用於目標對象或將其路由到高速批量加載實用程序。
-
更改同步:配置更改同步時,Replicat根據數據庫類型將復制的源操作應用於使用本機數據庫接口或ODBC的目標對象。
您可以使用多個Replicat 並行處理一個或多個Extract進程和數據泵以提高吞吐量。為了保持數據的完整性,每組進程處理一組不同的對象。要區分Replicat進程,請為每個進程分配一個組名(請參見第1.4節“組概述”)。
您可以使用協調或集成模式配置一個Replicat,而不是使用多個Replicat進程。
-
Oracle GoldenGate支持的所有數據庫都支持協調模式。在協調模式下,Replicat是線程化的。一個協調器線程產生並協調一個或多個並行執行復制SQL操作的線程。協調的Replicat使用一個參數文件,並將其作為一個單元進行監視和管理。有關更多信息,請參見第14.7節“創建在線復制組”。
-
Oracle版本11.2.0.4或更高版本支持集成模式。在集成模式下,Replicat利用Oracle數據庫中可用的應用處理功能。在單個Replicat配置中,稱為應用服務器的多個入站服務器子進程並行應用事務,同時保留原始事務的原子性。有關集成模式的更多信息,請參閱安裝和配置Oracle GoldenGate for Oracle數據庫。
您可以延遲Replicat,以便在將復制操作應用到目標數據庫之前等待特定時間。例如,延遲可能是需要的,以防止錯誤SQL的傳播,控制跨越不同時區的數據到達,或者允許其他計划事件發生的時間。延遲的長度由DEFERAPPLYINTERVAL
參數控制。
各種參數控制着Replicat將源事務轉換為目標事務的方式。這些參數包括BATCHSQL
,GROUPTRANSOPS
,和MAXTRANSOPS
。有關這些和其他Replicat參數的更多信息,請參閱適用於Windows和UNIX的Oracle GoldenGate參考。
1.2.4 Trails文件 or extract files
為了支持數據庫更改的連續Extract和復制,Oracle GoldenGate將捕獲的更改的記錄臨時存儲在磁盤中的一系列稱為Trails的文件中。根據您配置Oracle GoldenGate的方式,源系統,中介系統,目標系統或這些系統的任何組合都可能存在Trails。在本地系統上,它被稱為ExtractTrails(或本地Trails)。在遠程系統上,它被稱為遠程Trails。
通過使用存儲Trails,Oracle GoldenGate支持數據准確性和容錯性(請參見第1.2.6節“檢查點概述”)。Trails的使用還允許Extract和復制活動獨立於彼此進行。通過分離這些流程,您可以有更多選擇來處理和交付數據。例如,不是連續Extract和復制更改,而是每當目標應用程序需要它們時,可以連續Extract更改,但將它們存儲在Trails中以便稍后復制到目標。
1.2.4.1寫入和讀取Trails的過程
主要Extract和數據泵Extract寫入Trails。每個在線Extract進程都必須鏈接到一個Trails。只有一個主要Extract進程可以寫入給定的本地Trails。所有本地Trails必須有不同的名稱。
多個數據泵Extract進程可以分別寫入相同名稱的Trails,但物理Trails本身必須駐留在不同的遠程系統上,例如數據分布拓撲中。例如,名為數據泵1pump
和命名的數據泵2pump
都可以駐留在sys01上並寫入到名為的遠程Trails aa。數據泵
1pump
可以通知之后Trails aa
的sys02
,而數據泵2pump
可以通知之后Trails aa
的sys03
。
讀取Trails的過程是:
-
數據泵Extract:從鏈接到前一個Extract(通常是主要Extract)的本地Trails中ExtractDML和DDL操作,如果需要執行進一步處理,並將數據傳輸到由下一個Oracle GoldenGate進程讀取的Trails下游(通常是Replicat,但如果需要可以是另一個數據泵)。
-
復制:讀取Trails並將復制的DML和DDL操作應用於目標數據庫。
1.2.4.2Trails創建和維護
Trails文件本身是在處理期間根據需要創建的,但是當使用ADD RMTTRAIL
or ADD EXTTRAIL
命令將Trails文件添加到Oracle GoldenGate配置中時,可以為Trails指定雙字符名稱。默認情況下,Trails存儲在dirdat
Oracle GoldenGate目錄的子目錄中。
Trails文件會自動老化,以便在不中斷文件維護的情況下繼續進行處理。在創建每個新文件時,它會繼承兩個字符的線索名稱,並附加一個從000000到999999(例如c:)的唯一的六位序列號\ggs\dirdat\tr000001
。當序號達到999999時,編號從000000開始,並覆蓋以前的Trails文件。可以使用Manager參數以常規方式清除Trails文件PURGEOLDEXTRACTS
。
您可以創建多個Trails以將數據從不同的對象或應用程序中分離出來。將在TABLE
or SEQUENCE
參數中指定的對象鏈接到在Extract參數文件中使用EXTTRAIL
or RMTTRAIL
參數指定的Trails。
為了最大限度地提高吞吐量,並盡量減少系統上的I / O負載,Extract的數據將以大塊的形式發送到Trails和Trails外。交易訂單被保留。
請參閱附錄C“關於Oracle GoldenGate Trail”以獲取有關Trails及其包含的記錄的更多信息。
1.2.5 Extract文件
在某些配置中,Oracle GoldenGate將Extract的數據存儲在Extract文件中而不是Trails中。Extract文件可以是單個文件,也可以配置為在預期操作系統施加的文件大小限制的情況下轉存為多個文件。從這個意義上說,它與Trails相似,只是沒有記錄檢查點。該文件或文件在運行進程中自動創建。適用於Trails的相同版本控制功能也適用於Extract文件。
1.2.6 Checkpoints檢查點
檢查點Checkpoints將進程的當前讀取和寫入位置存儲到磁盤以用於恢復目的。檢查點Checkpoints可確保標記為同步的數據更改實際上由Extract捕獲並通過Replicat應用於目標,並防止冗余處理。它們通過防止系統,網絡或Oracle GoldenGate進程需要重新啟動時的數據丟失來提供容錯能力。對於復雜的同步配置,檢查點Checkpoints允許多個Extract或Replicat進程從同一組Trails中讀取。
檢查點Checkpoints使用進程間確認來防止消息在網絡中丟失。Oracle GoldenGate擁有專有的保證消息傳遞技術。
Extract為其在數據源和Trails中的位置創建檢查點Checkpoints。由於Extract僅捕獲已提交的事務,因此它會Trails所有未完成事務中的操作,如果它們中的任何一個已提交。這需要Extract將一個檢查點Checkpoints記錄在事務日志中當前正在讀取的位置,以及最早的打開事務的開始位置,該位置可以位於當前日志或任何前面的日志中。
為了控制在Oracle數據庫中斷之后必須重新處理的事務日志的數量,Extract還以特定的時間間隔將當前狀態和處理數據保存到磁盤,包括長時間運行的狀態和數據(如果有的話)交易。如果Extract在其中一個間隔后停止,它可以從上一個間隔內的位置或上一個檢查點Checkpoints恢復,而不必返回到最早出現的最早的開放式長時間運行事務的日志位置。有關更多信息,請參閱“ 適用於Windows和UNIX的Oracle GoldenGate參考”中的BR
參數。
Replicat為它在Trails中的位置創建檢查點Checkpoints。Replicat將這些檢查點Checkpoints存儲在目標數據庫中的稱為檢查點Checkpoints表的表中,也存儲在磁盤上的檢查點Checkpoints文件中。檢查點Checkpoints表與用戶指定的名稱和位置一起存儲。檢查點Checkpoints文件存儲在dirchk
Oracle GoldenGate目錄的子目錄中。
每次交易完成后,Replicat會將關於該交易的信息寫入檢查點Checkpoints表中的一行,並將交易與特定Trails文件中的唯一位置相關聯。當它完成一個事務時,Replicat還會向檢查點Checkpoints文件寫入一個檢查點Checkpoints。定期,Replicat還將其當前讀取位置寫入檢查點Checkpoints文件。這些頭寸通常不在交易邊界,而是在交易中的某個點。間隔長度由CHECKPOINTSECS
參數控制。
由於檢查點Checkpoints表是數據庫的一部分,並受益於數據庫恢復系統,因此它為Replicat提供了更高效的恢復點。檢查點Checkpoints文件中的最后一個檢查點Checkpoints可能不是最近的事務邊界。它可能是Replicat尚未應用的事務的中間或已應用的早期事務。檢查點Checkpoints表確保Replicat以正確的事務邊界開始,以便每個事務僅應用一次。在某些情況下,檢查點Checkpoints表中的信息可用於恢復,但主要用於某些目的,例如INFO
GGSCI中的命令。
Oracle GoldenGate環境的定期備份(包括Trails)應與您的數據庫備份,恢復和保留策略相匹配。將數據庫(及其檢查點Checkpoints表)恢復到較早的時間段會導致Replicat重新定位到與該時間匹配的早期檢查點Checkpoints。如果此時間段內所需的Trails文件已經從系統中老化,則必須從備份中恢復它們。要了解Trails如何保持和老化,請參閱“Trails概述”。
非連續類型的配置不需要檢查點Checkpoints,例如批量加載或初始加載。如果出現故障,則可以從原始起點重新開始這些進程。
有關檢查點Checkpoints和檢查點表的更多信息,請參閱附錄E.
1.2.7 Manager管理
Manager是Oracle GoldenGate的控制進程。在啟動Extract或Replicat之前,Manager必須在Oracle GoldenGate配置中的每個系統上運行,並且Manager在這些進程正在運行時必須保持運行,以便執行資源管理功能。經理執行以下功能:
-
啟動Oracle GoldenGate進程
-
啟動動態進程
-
維護進程的端口號
-
執行Trails管理
-
創建事件,錯誤和閾值報告
One Manager進程可以控制許多Extract或Replicat進程。在Windows系統上,Manager可以作為服務運行。有關Manager進程和配置TCP / IP連接的更多信息,請參閱第3章“配置Manager和網絡通信”。
1.2.8 Collector收集器
Collector是在連續的聯機更改同步處於活動狀態時在目標系統的后台運行的進程。Collector執行以下操作:
-
根據遠程Extract到管理器的連接請求,掃描並綁定到可用端口,然后將端口號發送到管理器以分配到請求的Extract進程。
-
接收Extract發送的Extract的數據庫更改並將它們寫入Trails文件。Manager需要網絡連接時自動啟動Collector,因此Oracle GoldenGate用戶不會與其交互。Collector只能從一個Extract進程接收信息,因此每個Extract器都有一個Collector用於您。Collector在關聯的Extract進程終止時終止。
注意:
如果需要,Collector可以手動運行。這被稱為a 靜態Collector(而不是常規的動態Collector)。多個Extract進程可以共享一個靜態Collector; 然而,一對一的比例是最佳的。可以使用靜態Collector來確保進程在特定端口上運行。有關靜態Collector的更多信息,請參閱適用於Windows和UNIX的Oracle GoldenGate參考。有關Manager如何分配端口的更多信息,請參閱第3章“配置Manager和網絡通信”。
默認情況下,Extract會將源系統上的TCP / IP連接發送到目標上的Collector,但可配置Oracle GoldenGate以便Collector發起與目標之間的連接。例如,如果目標位於可信網絡區域中,但源位於信任度較低的區域,則可能需要從目標啟動連接。
1.3 Process Types進程類型
根據需要,可以使用以下處理類型配置Oracle GoldenGate。
-
一個在線Extract或Replicat進程中運行,直到用戶停止。在線進程在線索中維護恢復檢查點Checkpoints,以便在中斷后恢復處理。您可以使用聯機進程來持續Extract和復制DML和DDL操作(在支持的情況下)以保持源和目標對象的同步。在
EXTRACT
和REPLICAT
參數適用於這一進程的類型。 -
甲源是表(也被稱為初始負載Extract物)Extract進程Extract用於初始加載到另一個數據庫當前一組靜態數據直接從在制備源對象。此進程類型不使用檢查點Checkpoints。該
SOURCEISTABLE
參數適用於此流程類型。 -
一個特殊的運行 Replicat進程中的應用已知數據的開始和結束點。您可以使用特殊的Replicat運行初始數據加載,並且還可以與聯機Extract一起使用,以批量應用數據更改,例如每天一次而不是連續進行。此進程類型不維護檢查點Checkpoints,因為可以使用相同的開始點和結束點開始運行。該
SPECIALRUN
參數適用於此流程類型。 -
甲遠程任務是一種特殊類型的初始負荷的處理,其中Extract物通過TCP / IP與Replicat直接通信的。采集Trails或文件中的Collector進程和臨時磁盤存儲都不被使用。該任務在Extract參數文件中用
RMTTASK
參數定義。
1.4 Groups組
要區分系統上的多個Extract或Replicat進程,請定義處理組。例如,要並行復制不同的數據集,您需要創建兩個Replicat組。
一個處理組由一個進程(Extract或Replicat),它的參數文件,它的檢查點Checkpoints文件以及與該進程相關的任何其他文件組成。對於Replicat,組還可能包含關聯的檢查點Checkpoints表。您可以使用Oracle GoldenGate命令界面GGSCI中的ADD EXTRACT
和ADD REPLICAT
命令來定義組。
與組相關的所有文件和檢查點Checkpoints共享分配給組本身的名稱。無論何時您發出命令來控制或查看處理,您都可以通過通配符提供組名稱或多個組名稱。
1.5 CSN提交序號
在使用Oracle GoldenGate時,您可能需要參考提交序列號或CSN。CSN是Oracle GoldenGate為維護事務一致性和數據完整性而構建的標識事務的標識符。它唯一標識事務提交給數據庫的時間點。
可以要求CSN將Extract物定位到事務日志中,重新定位追蹤中的副本或用於其他目的。它由一些轉換函數返回,並包含在報告和某些GGSCI輸出中。
原文Introduction to Oracle GoldenGate