Oracle GoldenGate 詳細概述
什么是 Oracle GoldenGate
Oracle GoldenGate是用于實時數據集成和復制的綜合軟件包。它支持高可用性解決方案、實時數據集成、事務更改數據捕獲、數據復制、轉換以及操作和分析企業系統之間的驗證。
使用Oracle GoldenGate,您可以在企業的多個系統之間移動已提交的事務。Oracle GoldenGate使您能夠將 Oracle 數據庫之間的數據復制到其他受支持的異構數據庫,以及異構數據庫之間。
為什么使用Oracle GoldenGate
企業數據通常分布在整個企業的異構數據庫中。要在不同數據源之間獲取數據,您可以使用 Oracle GoldenGate 實時加載、分發和過濾企業內的事務,并在接近零停機的情況下實現不同數據庫之間的遷移。
為此,您需要一種方法來有效地將數據從一個系統實時移動到另一個系統,而且停機時間為零。Oracle GoldenGate是 Oracle 用于復制和集成數據的解決方案。
Oracle GoldenGate具有以下主要特性:
數據移動是實時的,減少了延遲。
僅移動已提交的事務,從而實現一致性并提高性能。
支持不同版本的 Oracle 數據庫以及運行在各種操作系統上的各種異構數據庫。您可以將數據從 Oracle 數據庫復制到不同的異構數據庫。
架構簡單,配置簡單。
以最低的基礎數據庫和基礎架構開銷實現高性能。
您可以使用Oracle GoldenGate來滿足以下業務需求:
業務連續性和高可用性
業務連續性是企業在其運營中沒有任何失誤的情況下提供其功能和服務的能力。高可用性是最高級別的容錯能力。為實現業務連續性,系統設計有多個服務器、多個存儲和多個數據中心,以提供足夠高的可用性來支持業務的真正連續性。要建立和維護這樣的環境,需要在這些多個服務器和數據中心之間移動數據,這可以使用Oracle GoldenGate輕松完成。
初始加載和數據庫遷移
初始加載是從源數據庫中提取數據記錄并將這些記錄加載到目標數據庫的過程。初始加載是只執行一次的數據遷移過程。Oracle GoldenGate允許您在不使系統脫機的情況下執行初始負載數據遷移。
數據整合
數據集成涉及組合來自多個不同來源的數據,這些數據使用各種技術存儲,并提供數據的統一視圖。Oracle GoldenGate提供實時數據集成。
Oracle GoldenGate 的拓撲
OGG 有許多不同的拓撲結構,范圍從簡單的單向拓撲到更復雜的對等拓撲。無論架構如何,Oracle GoldenGate 都提供了它們之間的相似性,從而使管理更容易。
Oracle GoldenGate 架構
Oracle GoldenGate支持兩種架構,經典架構和微服務架構( MA )。
可以出于以下目的配置 Oracle GoldenGate:
從一個數據庫中靜態提取數據記錄并將這些記錄加載到另一個數據庫。
持續提取和復制事務數據操作語言 (DML) 操作和數據定義語言 (DDL) 更改(對于受支持的數據庫),以保持源數據和目標數據一致。
使用 Oracle GoldenGate for Big Data 從支持的數據庫源提取數據并復制到大數據和文件目標。
下表描述了兩種 Oracle GoldenGate 架構以及您應該何時使用每種架構。
X 經典架構 微服務架構
它是什么? Oracle GoldenGate 經典架構是企業復制的原始架構。該架構提供了跨各種拓撲有效傳輸事務數據所需的流程和文件。這些進程和文件構成了經典架構的主要組件,并且是 Oracle GoldenGate 12 c (12.3.0.1) 版本之前的主要產品安裝方法。 Oracle GoldenGate 微服務架構是一種微服務架構,支持將 REST 服務作為 Oracle GoldenGate 環境的一部分。支持 REST 的服務提供 API 端點,可用于通過基于 Web 的控制臺、增強的命令行界面、PL/SQL 和腳本語言進行遠程配置、管理和監控。
我應該什么時候使用它? 僅當 MA 版本不可用于該平臺時,才能安裝和配置 Oracle GoldenGate 以使用 Oracle GoldenGate經典架構,在以下場景中提到:從一個數據庫中靜態提取數據記錄并將這些記錄加載到另一個數據庫。持續提取和復制事務數據操作語言 (DML) 操作和數據定義語言 (DDL) 更改(對于受支持的數據庫),以保持源數據和目標數據一致。從數據庫中提取并復制到數據庫外的文件。從異構數據庫源中捕獲。 可以安裝和配置 Oracle GoldenGate 以將 Oracle GoldenGate 微服務架構 用于以下目的:具有完全安全的 HTTPS 接口和用于流式傳輸數據的安全 WebSocket 的大規模云部署。更簡單地管理 Oracle GoldenGate 環境的多個實施,并控制用戶對 Oracle GoldenGate 設置和監控不同方面的訪問。支持系統管理的數據庫分片以提供細粒度的多主復制,其中所有分片都是可寫的,并且每個分片可以部分復制到分片組內的其他分片。
支持哪些數據庫? 按照認證矩陣,經典架構支持所有受支持的數據庫 。 MA 僅支持用于端到端 MA-only 拓撲的 Oracle 數據庫。但是,與異構數據庫關聯的源 Oracle GoldenGate Classic 可以復制到帶有 Oracle 的目標 Oracle GoldenGate MA,或者源 Oracle GoldenGate MA 帶有 Oracle 復制到帶有異構數據庫的目標 Oracle GoldenGate legacy。
Oracle GoldenGate 支持的處理方法和數據庫
Oracle GoldenGate 支持在整個企業的多個異構平臺之間在事務級別交換和操作數據。它以事務完整性和最小開銷在您現有的基礎設施上移動已提交的事務。其模塊化架構使您能夠靈活地跨各種拓撲提取和復制選定的數據記錄、事務更改以及對 DDL(數據定義語言)的更改。
對 DDL、某些拓撲以及捕獲或交付配置的支持因數據庫類型而異。
這是支持的處理方法的列表:
數據庫 基于日志的提取(捕獲) Non-Log-Based Extraction (1)(捕獲) 復制(交付)
DB2 for i N/A N/A X
DB2 LUW X N/A X
DB2 z/OS X N/A X
Oracle Database X N/A X
MySQL X N/A X
SQL Server N/A X X
Terradata N/A N/A X
Oracle GoldenGate 經典架構的組件
您可以使用Oracle GoldenGate 經典架構從命令行配置和管理您的數據復制。
此圖顯示了用于 Oracle GoldenGate 初始加載方法和復制正在進行的數據更改的 Oracle GoldenGate 架構。在初始加載時,從源數據庫中選擇所需的行并將其發送到 Replicat 以填充目標表,從而使兩個數據庫處于同步狀態。在更改同步模式下,提取進程捕獲事務更改,然后將數據發送到目標,或者將其持久化到可選的本地路徑,該路徑由將數據發送到目標的數據泵進程讀取。在目標上,收集器進程接收數據并將其寫入本地路徑,復制進程從中獲取數據并將其應用到目標數據庫。
Manager
Manager 是 Oracle GoldenGate 的控制進程。Manager 必須在 Oracle GoldenGate 配置中的每個系統上運行,然后才能啟動 Extract 或 Replicat 進程。
管理器還必須在 Extract 和 Replicat 進程運行時保持運行,以便執行資源管理功能。一個 Manager 進程可以控制多個 Extract 或 Replicat 進程。
管理器執行以下功能:
啟動 Oracle GoldenGate 進程
啟動動態進程
維護進程的端口號
根據保留規則清除跟蹤文件
創建事件、錯誤和閾值報告
Data Pump
數據泵(Data pump)是源Oracle GoldenGate配置中的輔助提取組。
如果您配置數據泵,則提取過程會將所有捕獲的操作寫入源數據庫上的跟蹤文件。數據泵讀取源數據庫上的跟蹤文件,并將數據操作通過網絡發送到目標數據庫上的遠程跟蹤文件。對于大多數配置,強烈建議配置數據泵。如果未使用數據泵,則提取會將所有捕獲的操作流式傳輸到遠程目標數據庫上的跟蹤文件中。然而,在帶有數據泵的典型配置中,主要 Extract 組寫入源系統上的一個路徑。數據泵讀取此路徑并將數據操作通過網絡發送到目標上的遠程路徑。
通常,數據泵可以執行數據過濾、映射和轉換
可以通過兩種方式配置數據泵:
執行數據操作:數據泵可以配置為執行數據過濾、映射和轉換。
不執行數據操作:數據泵可以配置為直通模式,其中數據按原樣被動傳輸,無需操作。直通模式增加了數據泵的吞吐量,因為所有查找對象定義的功能都被繞過了。
Collector
收集器由管理器進程啟動,是在目標系統的后臺運行的進程。它將事務數據重新組裝到目標跟蹤中。
當 Manager 收到來自 Extract 進程的連接請求時,Collector 會掃描并綁定到可用端口,并將端口號發送到 Manager 以分配給發出請求的 Extract 進程。收集器還接收提取進程發送的捕獲數據并將它們寫入遠程跟蹤文件。
收集器在需要網絡連接時由管理器自動啟動,因此Oracle GoldenGate用戶不會與其交互。收集器只能從一個 Extract 進程接收信息,因此您使用的每個 Extract 都有一個收集器。當關聯的 Extract 進程終止時,收集器終止。
常見的數據復制過程
Extract
Extract 是配置為針對源數據庫運行或配置為在下游挖掘數據庫(僅限 Oracle)上運行的過程,并捕獲在位于其他地方的真實源數據庫中生成的數據。這個過程就是Oracle GoldenGate的抽取或數據捕獲機制。
您可以為以下用例配置 Extract:
初始加載:當您為初始加載設置Oracle GoldenGate時,提取過程會直接從源對象捕獲當前的靜態數據集。
更改同步:設置Oracle GoldenGate 時為了使源數據與另一組數據保持同步,在初始同步發生后,提取過程會捕獲對配置對象執行的 DML 和 DDL 操作。提取可以在與數據庫相同的服務器上本地運行,也可以在使用下游集成提取的另一臺服務器上運行以減少開銷。它存儲這些操作,直到它收到包含它們的事務的提交記錄或回滾。如果它收到回滾,它會丟棄該事務的操作。如果它收到一個提交,它會將事務以一系列稱為跟蹤的文件保存到磁盤,在那里它排隊等待傳播到目標系統。每個事務中的所有操作都作為一個按順序組織的事務單元寫入跟蹤,并按照它們提交到數據庫的順序(提交序列順序)。這種設計可確保速度和數據完整性。
Trail
Trail 是磁盤上的一系列文件,Oracle GoldenGate 將捕獲的更改存儲在其中以支持數據庫更改的連續提取和復制。
Trail 可以存在于源系統、中間系統、目標系統或這些系統的任意組合上,具體取決于您配置 Oracle GoldenGate 的方式。在本地系統上,它被稱為提取路徑(或本地路徑)。在遠程系統上,它被稱為遠程跟蹤。通過使用存儲路徑,Oracle GoldenGate支持數據準確性和容錯性。跟蹤的使用還允許提取和復制活動彼此獨立地發生。
Trail 允許 Oracle 數據庫在異構環境中運行。數據以一致的格式存儲在一個跟蹤文件中,因此它可以被所有支持的數據庫的 Replicat 進程讀取。
寫入跟蹤文件的進程:
在 Oracle GoldenGate Classic 中,Extract 和數據泵進程寫入Trail。
從跟蹤文件中讀取的進程:
數據泵和 Replicat 進程從跟蹤文件中讀取。數據泵從鏈接到 Extract 進程的本地路徑中提取 DML 和 DDL 操作,在需要時執行進一步處理,并將數據傳輸到由下游的下一個Oracle GoldenGate進程(通常是 Replicat,但也可以是如果需要,另一個數據泵)。
Replicat 進程讀取跟蹤并將復制的 DML 和 DDL 操作應用到目標數據庫。
Replicat
Replicat 是一個將數據傳送到目標數據庫的過程。它讀取目標數據庫上的跟蹤文件,重構 DML 或 DDL 操作,并將它們應用到目標數據庫。
Replicat 進程使用動態 SQL 將 SQL 語句編譯一次,然后使用不同的綁定變量多次執行。您可以配置 Replicat 進程,使其在將復制操作應用到目標數據庫之前等待特定的時間。
對于Oracle GoldenGate的兩個常見用例,Replicat 進程的作用如下:
初始加載:當您為初始加載設置Oracle GoldenGate時,Replicat 進程將靜態數據副本應用于目標對象或將數據路由到高速批量加載實用程序。
更改同步:當您設置Oracle GoldenGate以保持目標數據庫與源數據庫同步時,Replicat 進程使用本機數據庫接口或 ODBC 將源操作應用于目標對象,具體取決于數據庫類型。
您可以使用一個或多個并行的 Extract 進程和 Data Pump 配置多個 Replicat 進程以提高吞吐量。為了保持數據完整性,每組進程處理一組不同的對象。