使用初始載入擷取精確地建立 Oracle

瞭解如何使用「管理從屬端」新增「初始載入擷取」。

初始載入方法非常適合在下列情況下建立:

初始載入 Extract 的運作方式是直接從來源表格讀取資料,並將其寫入 EXTFILE。它會直接連線至資料庫並擷取變更。如下圖所示,執行初始載入建立時,有兩個階段。EXTINIT Extract 是初始載入 Extract,而 EXTPRM 是主要 Extract。EXTPRM 處理作業已設定但尚未開始進行連續複製。初始載入擷取完成建立之後,便會從初始載入起始時的起點開始連續複製處理。

gwuad_dt_026_file-replicat.png 的描述如下

若要設定此擷取,您需要結合以檔案為基礎的初始載入與變更資料擷取 (CDC) 處理程序。使用初始載入擷取的建立處理包含下列任務:

檔案式初始載入處理是 MA 中執行資料複製的偏好方式。其主要元件為:

開始之前,請先確定已建立資料庫證明資料別名 (USERIDALIAS)。

您可以使用 Oracle GoldenGate Web 介面、管理從屬端或 cURL 命令來設定此組態。

步驟 1:建立主要擷取

精確的建立是用來將資料庫資源從來源正確地複製到目標資料庫。主要 Extract 會先啟動,以提早起始變更資料擷取。精確的建立是根據下列假設:

備註:為了使建立精確運作,建立 SCN 必須在註冊 SCN 之後。

若要開始,請從 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