使用初始載入擷取精確地建立 Oracle
瞭解如何使用「管理從屬端」新增「初始載入擷取」。
初始載入方法非常適合在下列情況下建立:
-
從來源資料庫的子集載入有一小組表格的目標資料庫。
-
在異質環境中載入資料
初始載入 Extract 的運作方式是直接從來源表格讀取資料,並將其寫入 EXTFILE。它會直接連線至資料庫並擷取變更。如下圖所示,執行初始載入建立時,有兩個階段。EXTINIT Extract 是初始載入 Extract,而 EXTPRM 是主要 Extract。EXTPRM 處理作業已設定但尚未開始進行連續複製。初始載入擷取完成建立之後,便會從初始載入起始時的起點開始連續複製處理。

若要設定此擷取,您需要結合以檔案為基礎的初始載入與變更資料擷取 (CDC) 處理程序。使用初始載入擷取的建立處理包含下列任務:
-
新增並設定初始載入擷取:此擷取用於將一或多個表格的現有內容從來源複製到目標資料庫。
-
設定變更資料擷取:用來將異動變更從來源複製到目標資料庫。注意: Microservices Architecture 不支援使用 Oracle GoldenGate 直接載入來載入資料。
檔案式初始載入處理是 MA 中執行資料複製的偏好方式。其主要元件為:
-
起始載入擷取與複製:複製資料庫表格的現有內容。
-
主要 Extract 和 Replicat:從資料庫表格複製變更資料。
-
分送路徑:將歷程檔傳輸至目標系統。
開始之前,請先確定已建立資料庫證明資料別名 (USERIDALIAS)。
您可以使用 Oracle GoldenGate Web 介面、管理從屬端或 cURL 命令來設定此組態。
步驟 1:建立主要擷取
精確的建立是用來將資料庫資源從來源正確地複製到目標資料庫。主要 Extract 會先啟動,以提早起始變更資料擷取。精確的建立是根據下列假設:
備註:為了使建立精確運作,建立 SCN 必須在註冊 SCN 之後。
-
主要 Extract 已開始。負責變更資料擷取,並註明其註冊 SCN。
-
資料庫受到監督。資料庫會在註冊 SCN 之後等待最舊的未結交易 SCN。這是建立 SCN。
-
建立起始載入 Extract 和 Replicat 處理作業時,會使用建立 SCN。
-
初始載入複製完成後,會使用建立 SCN 來建立主要 Replicat。
-
對於 MySQL,精確的建立僅適用於 MySQL 來源和目標資料庫,並且使用 MySQL Shell 的
Dump公用程式實作。如需Dump公用程式的詳細資訊,請參閱 MySQL Dump Utility 。
若要開始,請從 AdminClient 建立並啟動主要 Extract EXTPRIM,如下列範例所示:
指令:
OGG (not connected) 1> CONNECT https://oggdep.example.com:9100 as oggadmin password oggadmin !
輸出:
Using default deployment 'OGGDEP'
指令:
OGG (https://oggdep.example.com:9100 OGGDEP) 2> DBLOGIN USERIDALIAS oggadmin
輸出:
Successfully logged into database.
指令:
OGG (https://oggdep.example.com:9100 OGGDEP) 3> ADD EXTRACT extprim INTEGRATED TRANLOG BEGIN NOW
輸出:
2018-03-16T13:37:07Z INFO OGG-08100 EXTRACT (Integrated) added.
指令:
OGG (https://oggdep.example.com:9100 OGGDEP as oggadmin) 4> REGISTER EXTRACT extprim DATABASE
輸出:
2018-03-16T13:37:30Z INFO OGG-02003 Extract EXTPRIM successfully registered with database at SCN 1608891.
指令:
OGG (https://oggdep.example.com:9100 OGGDEP as oggadmin) 5> EDIT PARAMS extprim
指令:
OGG (https://oggdep.example.com:9100 OGGDEP as oggadmin) 6> VIEW PARAMS extprim
輸出:
--
-- E X T P R I M . p r m
-- Primary Extract Parameter File
--
Extract EXTPRIM
UseridAlias oggadmin
ExtTrail AA
Table user01.*;
指令:
OGG (https://oggdep.example.com:9100 OGGDEP as oggadmin) 7> ADD EXTTRAIL aa EXTRACT extprim
輸出:
2018-03-16T13:37:55Z INFO OGG-08100 EXTTRAIL added.
指令:
OGG (https://oggdep.example.com:9100 OGGDEP as oggadmin) 8> START EXTRACT extprim
輸出:
2018-03-16T13:38:02Z INFO OGG-00975 EXTRACT EXTPRIM starting
2018-03-16T13:38:02Z INFO OGG-15426 EXTRACT EXTPRIM started
在此範例中,oggadmin 是資料庫證明資料別名。
建立主要 Extract 之後,請擷取 SCN 註冊號碼。在 AdminClient 中執行 REGISTER EXTRACT 命令。下列範例會擷取 1608891 的 SCN 值。
OGG (https://oggdep.example.com:9100 OGGDEP as oggadmin) 4> REGISTER EXTRACT extprim DATABASE
輸出:
2018-03-16T13:37:30Z INFO OGG-02003 Extract EXTPRIM successfully registered with database at SCN 1608891.
步驟 2:決定建立 SCN
Oracle GoldenGate Microservices Architecture 中的「管理服務」提供擷取開啟之資料庫交易相關資訊的端點。此資訊可用來識別在建立初始載入 Extract 時要使用的 SCN。
在下列範例中,建立 SCN 是 1609723,亦即所有未結交易中也是超過 1608891 年登錄 SCN 的最舊 SCN,如上一個步驟所識別。
-- Query for active transactions
--
SELECT T.START_SCN, T.STATUS TSTATUS, T.START_DATE,
S.SID, S.SERIAL#, S.INST_ID, S.USERNAME, S.OSUSER, S.STATUS SSTATUS, S.LOGON_TIME
FROM gv$transaction T
INNER JOIN gv$session S
ON s.saddr = t.ses_addr
UNION ALL
--
-- Query for current status
--
SELECT CURRENT_SCN, 'CURRENT', CURRENT_DATE,
NULL, NULL, NULL, 'SYS', NULL, NULL, NULL
from v$database
ORDER BY 1;
此查詢的結果可以用來決定建立 SCN。此特定查詢的結果為:
1538916 ACTIVE 2018-03-16 18:10:31.0 3865 9176 1 OGGADMIN oracle INACTIVE 2018-03-16 18:10:26.0 1540555 CURRENT 2018-03-16 18:21:50.0 SYS
用來建立起始載入 Extract 的 SCN 是使用 SQL*Plus 取得。在下列範例中,SQL 查詢使用建立 SCN 值作為 1624963,這是所有未結交易 (也超過 1608891 註冊 SCN) 的最舊 SCN。
OGG (https://oggdep.example.com:9100 OGGDEP as oggadmin) 14> SHELL ECHO 'SELECT MIN(START_SCN) FROM gv$transaction;' | ${ORACLE_HOME}/bin/sqlplus -S / as sysdba
MIN(START_SCN)
--------------
1624963
如果沒有開啟的交易,則此 SQL 查詢會傳回空白的結果。考量沒有未結交易之情況的詳細查詢為:
SELECT MIN(SCN) as INSTANTIATION_SCN
FROM (SELECT MIN(START_SCN) as SCN
FROM gv$transaction
UNION ALL
SELECT CURRENT_SCN
FROM gv$database);
步驟 3:建立並啟動起始載入 Replicat
開始此步驟之前,請確定目標系統上已經有檢查點表格 oggadmin.checkpoints。初始載入 Replicat 負責填入目標資料庫。在 AdminClient 上執行下列命令,以建立並啟動初始載入 Replicat (REPINIT):
指令:
OGG (not connected) 1> CONNECT https://oggdep.example.com:9100 as oggadmin password oggadmin !
輸出:
Using default deployment 'OGGDEP'
指令:
OGG (https://oggdep.example.com:9100 OGGDEP) 2> DBLOGIN USERIDALIAS oggadmin
輸出:
Successfully logged into database.
指令:
OGG (https://oggdep.example.com:9100 OGGDEP as oggadmin) 3> ADD CHECKPOINTTABLE oggadmin.checkpoints
輸出:
ADD "oggadmin.checkpoints" succeeded.
指令:
OGG (https://oggdep.example.com:9100 OGGDEP as oggadmin) 4> ADD REPLICAT repinit EXTTRAIL dd CHECKPOINTTABLE oggadmin.checkpoints
輸出:
2018-03-16T13:56:41Z INFO OGG-08100 REPLICAT added.
指令:
OGG (https://oggdep.example.com:9100 OGGDEP as oggadmin) 5> EDIT PARAMS repinit
指令:
OGG (https://oggdep.example.com:9100 OGGDEP as oggadmin) 6> VIEW PARAMS repinit
輸出:
--
-- R E P I N I T . p r m
-- File-Based Initial Load Replicat Parameter File
--
Replicat REPINIT
UseridAlias oggadmin
Map user01.*
Target user01.*;
指令:
OGG (https://oggdep.example.com:9100 OGGDEP as oggadmin) 7> START REPLICAT repinit
輸出:
2018-03-16T13:58:21Z INFO OGG-00975 REPLICAT REPINIT starting
2018-03-16T13:58:21Z INFO OGG-15426 REPLICAT REPINIT started
步驟 4:建立並啟動初始載入擷取
使用您擷取的建立 SCN (1624963),會建立初始載入 Extract,以將資料庫表格的內容寫入歷程檔。建立並啟動初始載入 Extract,EXTINIT。
從 Oracle GoldenGate 26ai 開始,解析包含萬用字元之 TABLE 參數的表格時,將不會解析起始載入 Extract 表格檢視。如果檢視需要包含在初始載入 Extract 中,則必須在沒有萬用字元的個別 TABLE 參數中指定這些檢視。
例如,如果有表格 hr.employees 和檢視 hr.employees_view。對於初始載入 Extract,如果您在初始載入 Extract 的參數檔中指定下列項目:
TABLE hr.*;
只有表格 hr.employees 的資料會包含在初始載入 Extract 中。
如果您需要在初始載入中包含 hr.employees_view,請將下列參數新增至初始載入 Extract 參數檔:
TABLE SCOTT.TAB1_VIEW;
指令:
OGG (https://oggdep.example.com:9100 OGGDEP as oggadmin) 15> ADD EXTRACT extinit SOURCEISTABLE
輸出:
2018-03-16T14:08:38Z INFO OGG-08100 EXTRACT added.
指令:
OGG (https://oggdep.example.com:9100 OGGDEP as oggadmin) 16> EDIT PARAMS extinit
指令:
OGG (https://oggdep.example.com:9100 OGGDEP as oggadmin) 17> VIEW PARAMS extinit
輸出:
--
-- E X T I N I T . p r m
-- File-Based Initial Load Extract Parameter File
--
Extract EXTINIT
UseridAlias oggadmin
ExtFile CC Megabytes 2000 Purge
Table user01.*, SQLPredicate "As Of SCN 1624963";
指令:
OGG (https://oggdep.example.com:9100 OGGDEP as oggadmin) 18> START EXTRACT extinit
輸出:
2018-03-16T14:13:42Z INFO OGG-00975 EXTRACT EXTINIT starting
2018-03-16T14:13:42Z INFO OGG-15426 EXTRACT EXTINIT started
步驟 5:建立分送路徑
建立兩個分送路徑 (AABB 和 CCDD),以便從「管理從屬端」將本機歷程檔複製到遠端主機:
指令:
OGG (https://oggdep.example.com:9100 oggdep) 15> ADD DISTPATH aabb SOURCE TRAIL://oggdep.example.com:9102/services/v2/sources?trail=AA target wss://dallas.oggdevops.us:9103/services/v2/targets?trail=BB
輸出:
2018-03-16T17:28:27Z INFO OGG-08511 The path 'AABB' has been added.
指令:
OGG (https://oggdep.oggdevops.us:9100 oggdep) 16> ADD DISTPATH ccdd SOURCE TRAIL://oggdep.example.com:9102/services/v2/sources?trail=CC target wss://dallas.oggdevops.us:9103/services/v2/targets?trail=DD
輸出:
2018-03-16T17:28:35Z INFO OGG-08511 The path 'CCDD' has been added.
指令:
OGG (https://oggdep.example:9100 oggdep) 17> START DISTPATH aabb
輸出:
2018-03-16T17:28:42Z INFO OGG-08513 The path 'AABB' has been started.
指令:
OGG (https://oggdep.example.com:9100 oggdep) 18> START DISTPATH ccdd
輸出:
2018-03-16T17:28:47Z INFO OGG-08513 The path 'CCDD' has been started.
如果使用 ogg 通訊協定而非 wss,則必須使用 TARGETTYPE 選項。在該情況下的語法如下:
ADD DISTPATH path-name SOURCE source-uri TARGET target-uri [ TARGETTYPE ( MANAGER | COLLECTOR | RECVSRVR ) ]
如果分送路徑使用舊有通訊協定,TARGETTYPE 會指定目標類型。此引數只有在目標 URI 綱要為 ogg 時才有效。
步驟 6:建立主要 Replicat
初始載入 Extract 和 Replicat 完成後,即可將其刪除。然後,在遠端主機上建立主要 Replicat 處理作業,以將變更資料套用至目標資料庫。
使用 AdminClient 來建立主要 Replicat 處理作業。注意:主要 Replicat 會在建立 SCN 啟動。
指令:
OGG (https://oggdep.example.com:9100 oggdep as oggadmin) 12> ADD REPLICAT repprim EXTTRAIL bb CHECKPOINTTABLE oggadmin.checkpoints
輸出:
2018-03-16T17:37:46Z INFO OGG-08100 REPLICAT added.
命令:編輯 PARAMS
OGG (https://oggdep.example.com:9100 oggdep as oggadmin) 13> EDIT PARAMS repprim
指令:
OGG (https://oggdep.example.com:9100 oggdep as oggadmin) 14> VIEW PARAMS repprim
輸出:
--
-- R E P P R I M . p r m
-- Replicat Parameter File
--
Replicat REPPRIM
USERIDALIAS oggadmin
Map user01.*
Target user01.*;
指令:
OGG (https://oggdep.example.com:9100 oggdep as oggadmin) 15> START REPLICAT repprim ATCSN 1624963
輸出:
2018-03-16T17:38:10Z INFO OGG-00975 REPLICAT REPPRIM starting
2018-03-16T17:38:10Z INFO OGG-15426 REPLICAT REPPRIM started