這兩種Oracle GoldenGate體系結構共有許多數據復制過程。
1、什么是Extract?
Extract是一個過程,該過程被配置為針對源數據庫運行或被配置為在下游挖掘數據庫(僅Oracle)上運行,以捕獲在其他位置的真實源數據庫中生成的數據。此過程是Oracle GoldenGate的提取或數據捕獲機制。
您可以為以下用例配置摘錄:
-
初始負載:將Oracle GoldenGate設置為初始負載時,提取過程直接從源對象捕獲當前的靜態數據集。
-
更改同步:設置Oracle GoldenGate時為了使源數據與另一組數據保持同步,提取過程將在初始同步發生后捕獲對已配置對象執行的DML和DDL操作。提取可以與數據庫在同一臺服務器上本地運行,也可以使用下游的集成提取在另一臺服務器上本地運行,以減少開銷。它存儲這些操作,直到收到包含它們的事務的提交記錄或回滾。如果收到回滾,它將丟棄該事務的操作。如果收到提交,它將把事務保留在磁盤中,稱為一系列的文件,該文件稱為跟蹤,在隊列中排隊等待傳播到目標系統。每個事務中的所有操作均作為順序組織的事務單元寫入到跟蹤中,并按照它們被提交到數據庫的順序(提交序列順序)進行。這種設計可確保速度和數據完整性。
注意:
即使事務可能還包括對在提取配置中的對象的操作,提取也會忽略對不在提取配置中的對象的操作。
提取過程可以配置為從三種類型的數據源中提取數據:
- 源表:此源類型用于初始加載。
- 數據庫恢復日志或事務日志:從日志捕獲時,實際方法取決于數據庫類型。Oracle數據庫重做日志就是這種源類型的一個示例。
- 第三方捕獲模塊:此方法提供了一個通信層,該通信層將數據和元數據從外部API傳遞到Extract API。數據庫供應商或第三方供應商提供了提取數據操作并將其傳遞給Extract的組件。
2、什么是Trail?
Trail是磁盤上的一系列文件,Oracle GoldenGate在其中存儲捕獲的更改,以支持對數據庫更改的連續提取和復制。
跟蹤可以存在于源系統,中間系統,目標系統或這些系統的任何組合上,具體取決于您如何配置Oracle GoldenGate。在本地系統上,它被稱為提取路徑(或本地路徑)。在遠程系統上,它稱為遠程路徑。通過使用存儲線索,Oracle GoldenGate支持數據準確性和容錯能力。使用跟蹤還可以使提取和復制活動彼此獨立發生。將這些過程分開,您可以在如何處理和傳遞數據方面有更多選擇。例如,您可以連續提取更改并將其存儲在跟蹤中,以供以后在目標應用程序需要時復制到目標中,而不是連續提取和復制更改。
另外,跟蹤允許Oracle數據庫在異構環境中運行。數據以一致的格式存儲在跟蹤文件中,因此可以由“復制”過程讀取所有支持的數據庫。有關更多信息,請參見關于Oracle GoldenGate Trail。
寫入跟蹤文件的進程:
在Oracle GoldenGate Classic中,提取和數據泵過程將寫入跟蹤。只有一個提取過程可以寫入給定的本地路徑。盡管可以在不同路徑中使用相同的路徑名稱,但是所有本地路徑必須具有不同的全路徑名稱。
多個數據泵進程可以各自寫入相同名稱的路徑,但是物理路徑本身必須駐留在不同的遠程系統上,例如數據分布拓撲中。例如,名為Pumpm的數據泵和名為Pumpn的數據泵都可以駐留在sys01上并寫入名為的遠程跟蹤aa
。Pumpm可以寫入sys02上的aa尾跡,而Pumpn可以寫入sys03上的aa尾跡。
在Oracle GoldenGate MA中,分發服務器和分發路徑用于寫入遠程跟蹤。
從跟蹤文件讀取的進程:
數據泵和復制過程從跟蹤文件中讀取。數據泵從鏈接到Extract流程的本地跟蹤中提取DML和DDL操作,如果需要,執行進一步的處理,并將數據傳輸到下游的下一個Oracle GoldenGate進程讀取的跟蹤(通常是Replicat,但是可以如果需要,則使用另一個數據泵)。
復制過程將讀取跟蹤,并將復制的DML和DDL操作應用于目標數據庫。
跟蹤文件的創建和維護:
在處理過程中會根據需要創建跟蹤文件。使用ADD RMTTRAIL
或ADD EXTTRAIL
命令將路徑添加到Oracle GoldenGate配置時,可以為路徑指定一個兩個字符的名稱。默認情況下,線索存儲在dirdat
Oracle GoldenGate目錄的子目錄中。您可以使用TRAIL_SEQLEN_9D | TRAIL_SEQLEN_6D GLOBALS
參數指定六位或九位的序列號;TRAIL_SEQLEN_9D
默認設置。
創建每個新文件時,它會繼承兩個字符的跟蹤名稱,并在其后附加一個唯一的9位數字序列號(例如,從000000000到999999999 c:\ggs\dirdat\tr000000001
)。當序列號達到999999999時,編號從000000000開始,并且先前的跟蹤文件將被覆蓋。可以使用Manager參數定期清除跟蹤文件 PURGEOLDEXTRACTS
。
您可以創建多個跟蹤,以將數據與不同的對象或應用程序分開。您將在TABLE
or SEQUENCE
參數中指定的對象鏈接到在Extract參數文件中使用EXTTRAIL
or RMTTRAIL
參數指定的路徑。為了最大化吞吐量并最小化系統上的I / O負載,提取的數據以大塊的形式發送到路徑中和從路徑中發送出去。交易訂單被保留。
將現有路徑轉換為9位數字序列號
您可以將命名提取組的跟蹤文件從6位檢查點記錄轉換為9位檢查點記錄。使用 convchk
本地命令可正常停止您的提取,然后convchk
按如下所示進行升級,以將其轉換為9位數字的軌跡 :
convchk extract trail seqlen_9d
開始提取
您可以使用以下convchk
命令通過相同的過程將9位數字降級為6位數字 :
convchk extract trail seqlen_6d
注意:Extract Files:您可以配置Oracle GoldenGate將提取的數據存儲在提取文件中而不是跟蹤中。提取文件可以是單個文件,也可以將其配置為在預期操作系統限制文件大小的情況下滾動到多個文件中。除了不記錄檢查點外,它與跟蹤類似。一個或多個文件在運行期間自動創建。適用于跟蹤的相同版本控制功能也適用于提取文件。
什么是Replicat?
Replicat是將數據傳遞到目標數據庫的過程。它讀取目標數據庫上的跟蹤文件,重構DML或DDL操作,并將其應用于目標數據庫。
Replicat過程使用動態SQL一次編譯一條SQL語句,然后使用不同的綁定變量多次執行該語句。您可以配置復制過程,以便在將復制的操作應用于目標數據庫之前等待特定的時間。例如,可能需要延遲來防止錯誤SQL的傳播,控制跨不同時區的數據到達或為其他計劃中的事件發生留出時間。
對于Oracle GoldenGate的兩個常見用例,復制過程的功能如下:
- 初始負載:當您為初始負載設置Oracle GoldenGate時,復制過程會將靜態數據副本應用于目標對象,或將數據路由到高速批量加載實用程序。
- 更改同步:設置Oracle GoldenGate以使目標數據庫與源數據庫保持同步時,復制過程會使用本機數據庫接口或ODBC將源操作應用于目標對象,具體取決于數據庫類型。
您可以并行配置多個復制過程以及一個或多個提取過程和數據泵,以提高吞吐量。為了保持數據完整性,每組進程都處理不同的對象集。為了區分復制過程,請為每個過程分配一個組名
如果您不想使用多個復制過程,則可以并行,協調,集成模式配置單個復制過程。
- 并行模式并行復制使用非集成選項支持所有數據庫。并行復制僅支持從具有完整元數據的跟蹤復制數據,這需要經典的跟蹤格式。與集成復制類似,它考慮了事務之間的依賴性。依賴性計算,映射和應用程序的并行性在數據庫外部執行,因此可以卸載到另一臺服務器。在此過程中維護事務完整性。此外,并行復制通過將大型事務拆分為多個塊并并行應用來支持大型事務的并行應用。
- Oracle GoldenGate支持的所有數據庫都支持協調模式。在協調模式下,復制過程是線程化的。一個協調器線程產生并協調一個或多個并行執行復制的SQL操作的線程。協調的復制過程使用一個參數文件,并作為一個單元進行監視和管理。
- Oracle Database 11.2.0.4或更高版本支持集成模式。在集成模式下,復制過程利用了Oracle數據庫中可用的應用處理功能。在單個Replicat配置中,稱為應用服務器的多個入站服務器子進程將并行應用事務,同時保留原始事務的原子性。
你可以延遲復制,以便在將復制的操作應用于目標數據庫之前,它等待特定的時間。可能需要延遲,例如,以防止錯誤的SQL傳播,控制跨不同時區的數據到達或為其他計劃的事件發生留出時間。延遲的長度由DEFERAPPLYINTERVAL
參數控制。