1Oracle GoldenGate處理方法和支持的數據庫Oracle GoldenGate在多樣和異構的基礎IT平台中,可以在事務級別上進行數據交換和數據操作。在保證交易完整性和最小的開銷的條件下,來遷移你已提交的業務,在目前現有的it架構中。它的模塊化架構,可以讓你更靈活地提取和復制你所選定的數據記錄,交易的變化以及變化的DDL(數據定義語言)。 Note:支持DDL,一定的拓撲結構,獲取和傳送不同的數據類型。詳見Oracle GoldenGate installation and configuration documentation。 這種靈活性的軟件,Oracle Golden Gate支持過濾,傳送,定制化處理的功能,可以支持你多種多樣的業務需求。
- 業務持續性和高可用性。
- 數據初始化和數據庫遷移。
- 數據集成。
- 決策支持和數據倉庫。
2 Oracle GoldenGate 架構的概述Oracle GoldenGate被用於如下用途:
- 靜態提取一個數據庫的數據記錄,用於加載到另一個數據庫。
- 持續性的提取DML和DDL的變化數據來保存源端和目標端數據庫的一致性。
- 提取一個數據庫,復制到一個文件上。
Oracle GoldenGate由以下組件構成:
- Extract (抽取進程)
- Data pump (數據泵技術)
- Replicat (復制基礎)
- Trails or extract files (跟蹤文件和抽取文件)
- Checkpoints (檢查點)
- Manager (管理進程)
- Collector (收集進程)
圖表 1-2 表述了GoldenGate的邏輯架構,用於數據初始化加載和DDL,DML語句操作的持續化同步。這是一個基本配置,可根據業務需求變化模型配置。
2.1 Extract的概述Extract進程是Oracle GlodenGate的數據抽取機制。Extract運行在源端或者下游數據庫上面,或者兩者皆是。完全取決於業務所需的要求。
你可以通過以下其中一種方法配置Extract:
- Initial loads(初始化加載):對於初始數據的加載,Extract進程可以直接從源端數據中抽取當前的,靜態數據集
- Change synchronization:(變化數據的同步):為了保持源數據與目標數據集的數據保持一致性,Extract進程可以捕獲DML和DDL操作來保證同步性。
Extract進程通過下列的方法來捕獲數據源:
- Source tables(源數據表)
- The database recovery logs or transaction logs (數據庫恢復日志和事務日志)
- A third-party capture module(第三方捕獲模塊)
配置數據同步,Extract進程會捕獲DML和DDl操作。Extract進程會一直存儲這些操作直到收到包含這些操作的提交或者回滾事務的時候。當一個回滾事務接受后,Extract進程會丟棄掉這類操作日志。當一個提交事務接受后,Extract進程會保留這些操作在一堆名為trail的文件中,並將這些文件以隊列的方式傳送至target端。所有的事務操作都會有序地寫入在trail文件中。這種設計保證了速度和數據的完整性。
Note:Extract進程會忽略掉不在Extract配置文件中的對象的操作。 多個提取過程可以同時在不同的對象上運行。例如:兩個Extract進程可以並行地提取和傳送到兩個Replicat進程上(同時帶着兩個trail文件),用於保證最小化目標延遲。用於區分不用的Extract進程,你必須執行對每一個制定一個組名稱(see Section 1.4, "Overview of Groups").
2.2 Data Pumps的概述Data Pump是在源端Oracle GoldenGate配置中第二類的抽取組。如果Data Pump技術不使用,Extract進程就必須發送那些已捕獲的數據到遠程跟蹤(remote trail)文件中去。在運用Datapump的典型配置中。主要的抽取組會在源端寫入到一個跟蹤文件中。Data pump會讀取這個跟蹤文件,然后通過網絡把數據傳送至目標端的跟蹤文件中去。Data pump技術增加了存儲的靈活性,可以從TCP/IP活動中完全隔離出來。
一般來說,Data pump可以用於執行數據過濾,數據映射,數據轉換,亦或者可以配置在pass-through模式中,這種模式可以讓數據被動的轉移且沒有任何數據操作。pass-through模式提高了Data pump技術的吞吐量,因為所有查找對象定義的功能全部旁路化。
在絕大多數的商業案例中,你應該使用data pump技術。使用data pump技術的原因如下:
- Protection against network and target failures(保護網絡的傳輸失敗和目標數據庫失敗)
- You are implementing several phases of data filtering or transformation. (您正在執行數據過濾和數據轉換的幾個階段)
- Consolidating data from many sources to a central target. (來自多個數據源合並至一個數據庫中)
- Synchronizing one source with multiple targets. (一個數據源同步至多個目標數據庫中)
2.3 Replicat的概述Replicat進程運行在目標端數據庫上,通過讀取跟蹤文件。然后獲取DML和DDL操作記錄並應用目標端數據庫中。Replicat進程使用動態SQL來編譯一個SQL語句,之后通過多次使用綁定變量來執行它。 你可以通過下列方式來配置Replicat進程:
- Initial loads(初始化加載):對於初始數據的加載,Replicat進程直接應用一個數據備份集來應用至目標數據庫中,並使用高速批量加載工具來加載數據。
- Change synchronization:(變化數據的同步):配置數據同步,Replicat進程直接應用已經復制過來的源數據操作。應用的方式是使用本地數據庫接口或者是ODBC,具體依據數據庫類型。
你可以使用多個復制進程,這些Replicat進程可以帶着一個或者多個Extract進程和Data pump進程以並行地方式來增加吞吐量。為了保證數據完整性,每一個進程集能處理不同的一個對象集合。為了區分不同的Relicat進程,你可以為每一個組去一個名字(see Section 1.4, "Overview of Groups"). 與使用多個Replicat進程不同的是,你可以配置一個以coordinated 或者integrated 模式的Replicat進程。
- Coordinated模式支持所有的數據庫(GoldenGate產品能支持的數據庫),在Coordinated模式下,Replicat是線程化的,一個Coordinated線程可以生成和協調多個線程來並發地執行多個SQL操作。一個Coordinated Replicat要使用一個參數文件而且要被作為一個單元來管理和監控,參見14.7節,"Creating an Online Replicat Group".
- Integrated 模式支持11.2.0.4 Oracle數據庫版本或者之后的版本,在Integrated模式,Replicat進程是利用Oracle數據庫中可用的進程功能。通過一個單一的Replicat配置,通過多個服務子進程來並行執行事務,用於保證原始事務的原子性。See Installing and Configuring Oracle GoldenGate for Oracle Database for more information about integrated mode.
你可以使用延遲復制,通過等待一段時間之后,才應用相關的操作至目標數據庫中,延遲復制是可取的。例如,為了防止錯誤的SQL擴展語句。延遲的時間由DEFERAPPLYINTERVAL參數控制。 相關的其他參數,例如: BATCHSQL, GROUPTRANSOPS,MAXTRANSOPS參數的詳細信息,可參考 Reference for Oracle GoldenGate for Windows and UNIX.
2.4 Trails的概述為了保證連續地抽取和數據庫變化數據的同步,Oracle GoldenGate會把捕獲到的變化的數據臨時放置到一連串的文件中,這些文件取名為trail。一個trail文件可以存儲在源端,可以存儲在一個中介系統,也可以存儲在一個目標端,取決你如何配置Oracle GoldenGate。
在本地源端,此文件叫做extract file(或者是 local trail)。在遠程端,此文件叫做 remote trail。 通過使用跟蹤(trail)文件來進行存儲,Oracle GoldenGate支持數據的准確性和容錯性。 (see Section 1.2.6, "Overview of Checkpoints")。跟蹤(trail)文件的使用可以允許抽取和復制這兩種工作活動完全獨立工作,隨着這些進程的分離,你可以有更多的選擇來如何處理和傳輸數。例如,取代連續抽取和復制的工作,你可以連續抽取數據,但可以把它們放置在trail文件中,當目標應用需要他們的時候, 再把這些文件傳遞到目標端。
那些寫入和讀取trail文件的進程主Extract進程和data-pump Extract進程會把數據寫入到一個trail文件。每一個在線的Extract進程都鏈接這一個trail文件。只有主Extract進程可以寫入到一個指定的local trail文件中。所有的local trail文件必須有不同的名稱。 多個data-pump Extract進程每一個都可以寫入到一個相同名稱的trail文件中,但是這些trail文件的物理結構是在不同的遠程端的,其意思是數據物理分布的拓撲結構。例如,一個data-pump進程命名為1pump和一個data-pump進程命名為2pump同事駐留在sys01源端上,並寫入一個remote trail文件,命名為aa。其中1pump寫入的aa在sys02遠程端上,2pump寫入的aa在sys03遠程端上。 讀取trail文件的線程是:
- Data-pump Extract進程:是從local trail文件中抽取DML和DDl的操作記錄。這個local trail文件鏈接着一個之前的Extract進程(一般是主Extract進程),如果需要下一步操作。就需把數據傳送到一個trail文件中,這個trail文件將由下一個Oracle GoldenGate進程讀取(一般是Relicat進程,但也可能是另外一個Data-pump進程)
- Replicat進程:讀取trail文件,並應用已經復制過來的DML和DDl操作到目標數據庫中。
Trail文件的生成和維護Trail文件本身會在進程中自動生成,但是你需要為trail文件制定一個以兩個字符命名的名字。當你配置Oracle GoldenGate的時候,可以通過ADD RMTTRAIL 和 ADD EXTTRAIL命令進行配置。默認情況下,trail文件存儲在Oracle GlodenGate目錄下的dirdat子目錄中。你可以制定一個6位還是9位的序列號,通過配置全局參數TRAIL_SEQLEN_9D | TRAIL_SEQLEN_6D。
默認是TRAIL_SEQLEN_9D全局參數。
Trail文件會自動老化,並且允許進程可以在不打斷的情況下維護這些Trail文件。每一個新文件的生成,它會繼承一個以兩個字符+6位或者9位的獨一的一個序列號。(例如c:\ggs\dirdat\tr000001)。當序列號達到999999的時候,它又會從000000編號開始。Trail文件可以通過PURGEOLDEXTRACTS這個管理參數進行清除。 你可以創建一個以上的trail文件,用於分離來自於不同的對象或者不用的應用的數據。你連接的對象可以通過配置TABLE 或者SEQUENCE 參數來制定,對應的trail文件可以通過EXTTRAIL 和 RMTTRAIL參數來制定。 為了最大限度地提高吞吐量,並最大限度地減少系統上的I / O負載。提取的數據被發送到一個trail文件可以使用大塊操作。交易的順序會被保留。 Trail文件升級到9位序列號你可以升級現在的trail文件從6位序列號到9位序列號。使用convchk本地命令可以升級到一個9位的trail文件。通過停止Extract進程然后使用如下命令: convchk extract trail seqlen_9d啟動Etract進程 你也可以降級從9位到6位序列號,用如下命令: convchk extract trail seqlen_6d
2.5 Checkpoints的概述Checkpoints會存儲當前進程的讀寫位置,用於保證恢復。CheckPoints會標記變化的數據,用於確保從Extract進程捕獲的數據並通過Replicat進程應用到目標端的數據同步,防止冗余處理。他們提供容錯機制,防止由於系統,網絡,以及Oracle GlodenGate進程重啟以前的數據丟失。對於復制的同步配置,CheckPoints確保多個Extract進程和Replicat進程從同一類trail文件集中讀取數據。 Checkpoints的工作機制是通過進程間確認信息,防止信息在網絡中丟失。Oracle GlodenGate有一個專有的保證信息傳遞的技術。 Extract進程會創建一個Checkpoints,用於存儲數據源和trail文件的位置。因為Extract進程只捕獲已提交的事務,因此它要保留所有打開事務的跟蹤操作記錄,他們提交的任何事件。
這就需要Extract進程去記錄一個checkpoint,這個檢查點會在當前讀取事務日志,和加上最開始打開事務的起始位置,這個位置可以在任何先前的日志中。 在一個數據庫中斷之后,為了控制一定數量的事務日志可以被重新處理。Extract進程會在一定的時間間隔中保留當前的狀態和把數據處理到硬盤中,包括長運行事務的狀態和數據。
如果Extract進程在這些時間間隔中的一個間隔停止了,它可以從上一個檢查點對應的時間間隔的位置恢復起來。而不是從最早的那個長運行事務最開始的那個日志位置運行。See the BR parameter in Reference for Oracle GoldenGate for Windows and UNIX for more information. Relicat進程會為trail文件的位置創建一個checkpoint。Replicat進程會保存這些checkpoint在一個表中,名字為checkpoint表,存儲在目標數據庫中,同樣也存儲在一個checkpoint文件中。這個checkpoint表會存儲用戶定義的名字和位置。Checkpoint文件會存儲在dirchk子目錄中。 每次事務完成后,Replicat進程會被那個事務的信息寫到checkpoint表中的一行記錄中。結合一個特定trail文件的獨一位置。當一個事務完成以后,Replicat進程也會寫一個檢查點到checkpoint文件中。每隔一段時間,Replicat進程會把它當前讀取的位置寫入至checkpoint文件中。這些位置通常不是事務的邊界,但會是事務的某一個點。間隔時間的長度由CHECKPOINTSECS參數決定。 因為checkpoint表是數據庫的一部分,可以獲得數據庫恢復機制的益處,它為replicat進程提供了一個更有效的恢復點機制。在checkpoint文件中最后一個checkpoint可能不是事務的邊界。它可能是事務的中部,並且沒有別Replicat進程或者一個更早的事務應用。checkpoint表可以確保事務的邊界,並且每個事務只執行一次。Checkpoint表的信息在某些情況下可以用於恢復,但它的主要用途,例如GGSCI的info命令。 定期備份Oracle GlodenGate環境, 包括trail文件。應該與你的數據庫備份,恢復和保留策略相匹配。恢復數據庫(有checkpoint表的情況下)到一個較早的時間段會引起Replicat進程回去讀取匹配當時時間的checkpoint的對應位置。如果這個時間段的跟蹤文件已經老化,他們必須從備份中進行恢復。要了解trail文件如何維護和老化的,可查看 "Overview of Trails".
2.6 Manager的概述Manager進程是Oracle GlodenGate的控制進程。Manager進程必須運行在各個Oracle GoldenGate環境中在Extract進程和Replicat進程開始之前,這些進程同時運行才能保證資源管理功能可以正常運行。
Manager進程執行如下動作:
- 啟動Oracle GoldenGate的進程
- 啟動動態進程
- 維護進程的端口號
- 執行跟蹤管理
- 創建事件、錯誤和閾值報告
一個Manager進程可以控制多個Extract進程或者Replicat過程。See Chapter 3, "Configuring Manager and Network Communications" for more information about the Manager process and configuring TCP/IP connections.
2.7 Collector的概述Collector進程是一個運行在目標端的后台進程,當數據同步是在線活動的情況下,Collector進程是運行着的,它會做以下操作:
- 從遠端的Extract進程中獲取一個連接Manager進程的連接請求。掃描並綁定一個端口號,並把這個端口號發送給Manager進程,讓它分配一個任務用於請求Extracat進程。
- 通過Extract進程獲取到的變化地數據記錄,寫入至一個trail文件中。Manager進程會自動開啟Collector進程,這個操作用戶不用干預。Collector進程只接受一個Extract進程,所以Collect進程是為Extract進程而生的,當Extract進程終止后,Collect進程也會終止。
默認情況下,Extract進程會在源端建立一個TCP/IP連接來橋接目標端的Collector進程,但是Oracle GoldenGate配置后也可以讓Collector進程發起TCP/IP連接。如果需要的話,初始化連接可以從目標端發起,例如:目標端是一個受信的網絡區域,但源端不是一個受信的網絡區域。
3處理類型的概述根據需求,Oracle GoldenGate可以配置以下處理樂行: 一個在線的Extract進程或者Replicat進程直到用戶干預停止。在線進程會在trail文件中維護檢查點,所以中斷后可以及時恢復。你使用在線進程可以不間斷地抽取數據並且復制DML和DDL操作來保持源端和目標端的數據同步。EXTRACT和REPLICAT參數可以應用此處理類型。
一個source-is-table (也可以被稱為初始化加載抽取)extract進程可以從源數據庫中的一組靜態對象數據直接加載到另一個數據庫中。這個過程不需要檢查點,SOURCEISTABLE參數應用此處理類型 一個special-run Replicat進程,會在已知開始位置和終點位置的情況下應用數據。你可以使用special Replicat進程來初始化加載數據,也可以通過批處理trail文件也加載數據,例如只執行一天的跟蹤數據而不是持續進行。這個過程不需要維護檢查點,因為運行的時間點都是已知的。可以通過SPECIALRUN參數來配置。 Extract進程直接通過TCP/IP與Replicat進程通信是遠程工作的一種特殊類型。既不是一種Collector進程也不是把臨時數據存儲在trail文件中。這個遠程任務可以通過RMTTASK參數來定義。
4Groups的概述為了在一個環境中區分多個Extract進程和Replicat進程。你需要定義進程組。例如,為了可以並行的方式復制不同的數據集,你需要創建兩個Replicat進程組。 一個進程組有一個進程(或者是Extract進程亦或者是Replicat進程),對應的參數文件,對應的checkpoint文件,以及與進程相關的其他文件。對於Replicat進程,一個組還需包含checkpoint表。你可以通過ADD EXTRACT 和 ADD REPLICAT 命令定義組。 所有的文件和checkpoints都可以在組本身中共享,任何時候你可以通過命令來控制和查看處理,通過你提供的組名或者對應的多組的一個通配符。
5提交序列號(CSN)的概述當在使用Oracle GoldenGate的時候,你需要參考提交的序列號,CSN是Oracle GoldenGate構建中一個保證事務一致性和數據完整性的標識符。它是代表一個事務提交到數據庫中的唯一時間點。 CSN可以要求Extrcat進程在事務日志中哪個位置提取數據,和重新定位Replicat進程中的trail位置,或做其他用途。