Oracle Golden Gate用於源數據庫與目標數據庫的數據複製備份;能夠在異構的環境(各類操做系統和數據庫)之間實現數據亞秒級的實時複製備份;以及能夠在實時數據倉庫、數據同步、集中/分發、容災、數 據庫升級和遷移等多個場景下應用;同時還可使用一 對1、廣播(一對多)、聚合(多對一)、雙向、點對點、級聯等多種靈活的拓撲結構。數據庫
本章介紹Oracle GoldenGate的基本術語及其處理邏輯和體系結構的功能。服務器
Oracle GoldenGate能夠在整個企業範圍內的多個異構平臺之間交換和處理數據。它以事務完整性和現有基礎架構的最小開銷移動已提交的事務。其模塊化體系結構使您能夠靈活地提取和複製選定的數據記錄,事務性更改以及跨各類拓撲結構更改DDL(數據定義語言)。網絡
Oracle GoldenGate支持的拓撲架構
表1-1支持的處理方式
oracle
數據庫 | 基於日誌的提取(捕獲) | 非基於日誌的提取*(捕獲) | 複製(交付) |
---|---|---|---|
*非基於日誌的抽取使用捕獲模塊與Oracle GoldenGate API進行通訊,以將更改數據發送到Oracle GoldenGate。 |
|||
DB2 for iide |
N / A模塊化 |
N / A函數 |
Xspa |
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文檔。
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邏輯體系結構
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節「組概述」)。
數據泵是源Oracle GoldenGate配置中的輔助Extract組。若是不使用數據泵,Extract必須將捕獲的數據操做發送到目標上的遠程Trails。然而,在使用數據泵的典型配置中,主要Extract組寫入源系統上的Trails。數據泵讀取此Trails並經過網絡將數據操做發送到目標上的遠程Trails。數據泵增長了存儲靈活性,而且還用於將主要Extract進程與TCP / IP活動隔離。
一般,數據泵能夠執行數據過濾,映射和轉換,或者能夠在數據泵中進行配置 直通模式,在這種模式下,數據被按原樣被動傳輸,無需操做。直通模式增長了數據泵的吞吐量,由於全部查找對象定義的功能都被忽略。
在大多數商業案例中,您應該使用數據泵。使用數據泵的一些緣由包括:
防止網絡和目標故障: 在基本的Oracle GoldenGate配置中,只有目標系統上的Trails,源系統上沒有任何地方存儲Extract連續Extract到內存中的數據操做。若是網絡或目標系統不可用,Extract可能會耗盡內存並異常終止。可是,經過源系統上的Trails和數據泵,能夠將捕獲的數據移動到磁盤,防止主要Extract的異常結束。當鏈接恢復時,數據泵從源Trails捕獲數據並將其發送到目標系統。
您正在實施數據過濾或轉換的幾個階段。使用複雜的過濾或數據轉換配置時,能夠配置數據泵以在源系統或目標系統上執行第一次轉換,或者在中間系統上執行第一次轉換,而後使用另外一個數據泵或Replicat組執行第二次轉型。
未來自多個來源的數據整合到一箇中心目標。同步多個時源數據庫和中央目標數據庫,則能夠將Extract的數據操做存儲在每一個源系統上,並在每一個系統上使用數據泵將數據發送到目標系統上的Trails。劃分源系統和目標系統之間的存儲負載減小了目標系統上大量空間的需求,以適應來自多個來源的數據。
同步 一個來源與多個目標。將數據發送到多個目標系統時,能夠在源系統上爲每一個目標配置數據泵。若是到任何目標的網絡鏈接失敗,數據仍然能夠發送到其餘目標。
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參考。
爲了支持數據庫更改的連續Extract和複製,Oracle GoldenGate將捕獲的更改的記錄臨時存儲在磁盤中的一系列稱爲Trails的文件中。根據您配置Oracle GoldenGate的方式,源系統,中介系統,目標系統或這些系統的任何組合均可能存在Trails。在本地系統上,它被稱爲ExtractTrails(或本地Trails)。在遠程系統上,它被稱爲遠程Trails。
經過使用存儲Trails,Oracle GoldenGate支持數據準確性和容錯性(請參見第1.2.6節「檢查點概述」)。Trails的使用還容許Extract和複製活動獨立於彼此進行。經過分離這些流程,您能夠有更多選擇來處理和交付數據。例如,不是連續Extract和複製更改,而是每當目標應用程序須要它們時,能夠連續Extract更改,但將它們存儲在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操做應用於目標數據庫。
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及其包含的記錄的更多信息。
在某些配置中,Oracle GoldenGate將Extract的數據存儲在Extract文件中而不是Trails中。Extract文件能夠是單個文件,也能夠配置爲在預期操做系統施加的文件大小限制的狀況下轉存爲多個文件。從這個意義上說,它與Trails類似,只是沒有記錄檢查點。該文件或文件在運行進程中自動建立。適用於Trails的相同版本控制功能也適用於Extract文件。
檢查點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.
Manager是Oracle GoldenGate的控制進程。在啓動Extract或Replicat以前,Manager必須在Oracle GoldenGate配置中的每一個系統上運行,而且Manager在這些進程正在運行時必須保持運行,以便執行資源管理功能。經理執行如下功能:
啓動Oracle GoldenGate進程
啓動動態進程
維護進程的端口號
執行Trails管理
建立事件,錯誤和閾值報告
One Manager進程能夠控制許多Extract或Replicat進程。在Windows系統上,Manager能夠做爲服務運行。有關Manager進程和配置TCP / IP鏈接的更多信息,請參閱第3章「配置Manager和網絡通訊」。
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發起與目標之間的鏈接。例如,若是目標位於可信網絡區域中,但源位於信任度較低的區域,則可能須要從目標啓動鏈接。
根據須要,可使用如下處理類型配置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
參數定義。
要區分系統上的多個Extract或Replicat進程,請定義處理組。例如,要並行複製不一樣的數據集,您須要建立兩個Replicat組。
一個處理組由一個進程(Extract或Replicat),它的參數文件,它的檢查點Checkpoints文件以及與該進程相關的任何其餘文件組成。對於Replicat,組還可能包含關聯的檢查點Checkpoints表。您可使用Oracle GoldenGate命令界面GGSCI中的ADD EXTRACT
和ADD REPLICAT
命令來定義組。
與組相關的全部文件和檢查點Checkpoints共享分配給組自己的名稱。不管什麼時候您發出命令來控制或查看處理,您均可以經過通配符提供組名稱或多個組名稱。
在使用Oracle GoldenGate時,您可能須要參考提交序列號或CSN。CSN是Oracle GoldenGate爲維護事務一致性和數據完整性而構建的標識事務的標識符。它惟一標識事務提交給數據庫的時間點。
能夠要求CSN將Extract物定位到事務日誌中,從新定位追蹤中的副本或用於其餘目的。它由一些轉換函數返回,幷包含在報告和某些GGSCI輸出中。