20 Microservices ArchitectureでのファイルからReplicatへのデータのロード

このトピックで説明されている手順に従うことにより、ファイルベース初期ロードと変更データ・キャプチャ(CDC)プロセスの組合せを使用し、データを損失することなく、データをソース・データベースからターゲット・データベースに正確にレプリケートできます。

「ファイルからReplicatへのデータのロード」では、初期ロード・プロセスがファイルを使用して実装されます。ただし、Microservices Architectureでは別のアプローチが使用されます。レプリケーション・ソリューションの作成および実行のプロセスは、次のように構成されます。
  • 初期ロード: ソース・データベースからターゲット・データベースに1つ以上の表の既存の内容をコピーする場合に使用します。

  • 変更データ・キャプチャ: ソース・データベースからターゲット・データベースにトランザクション変更をコピーする場合に使用します。

注意:

MAでは、Oracle GoldenGateダイレクト・ロードを使用したデータのロードをサポートしていません。
Microservices ArchitectureでのファイルからReplicatにデータをロードするためのプロセス

ファイルベースの初期ロード・プロセスはMAでデータ・レプリケーションを実行するための優先方法です。主なコンポーネントは次のとおりです。

  • 初期ロードExtractおよびReplicat: データベース表の既存の内容をレプリケートします。

  • プライマリExtractおよびReplicat: データベース表のデータ変更をレプリケートします。

  • 分散パス: 証跡ファイルをターゲット・システムに転送します。

開始する前に、データベース資格証明の別名が作成されていることを確認してください。

重要:

このトピックでは、AdminClientを使用して、初期ロード処理手順を示します。ただし、curlを使用してこれらの手順を実行することもできます。

手順1: プライマリExtractの作成

正確なインスタンス化を使用して、ソース・データベースからターゲット・データベースにデータベース・リソースを適切にレプリケートします。最初にプライマリExtractを起動して、変更データ・キャプチャを開始します。正確なインスタンス化は、次の仮定に基づいています。

注意:

正確なインスタンス化が動作するには、インスタンス化SCNを登録SCNより後にする必要があります。
  • プライマリExtractが起動されます。これは変更データ・キャプチャを行い、登録SCNではありません。

  • データベースは監視されます。データベースは、最も古いオープン・トランザクションのSCNが登録SCNの後に来るまで待機します。これは、インスタンス化SCNです。

  • インスタンス化SCNは、初期ロードExtractおよびReplicatプロセスを作成する際に使用されます。

  • 初期ロード・レプリケーションが完了すると、インスタンス化SCNがプライマリReplicatを作成するために使用されます。

開始するには、AdminClientからプライマリExtract EXTPRIMを作成して起動します。次に例を示します。

OGG (not connected) 1> connect https://phoenix.oggdevops.us:9100 as oggadmin password oggadmin !
Using default deployment 'Phoenix'

OGG (https://phoenix.oggdevops.us:9100 Phoenix) 2> dblogin useridalias oggadmin
Successfully logged into database.

OGG (https://phoenix.oggdevops.us:9100 Phoenix as oggadmin) 3> add extract EXTPRIM integrated tranlog begin now
2018-03-16T13:37:07Z  INFO    OGG-08100  EXTRACT (Integrated) added.

OGG (https://phoenix.oggdevops.us:9100 Phoenix 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://phoenix.oggdevops.us:9100 Phoenix as oggadmin) 5> edit params EXTPRIM

OGG (https://phoenix.oggdevops.us:9100 Phoenix 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://phoenix.oggdevops.us:9100 Phoenix as oggadmin) 7> add exttrail AA extract EXTPRIM
2018-03-16T13:37:55Z  INFO    OGG-08100  EXTTRAIL added.

OGG (https://phoenix.oggdevops.us:9100 Phoenix 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://phoenix.oggdevops.us:9100 Phoenix 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の決定

管理サーバーは、すべてのアクティブ・トランザクションおよび現在のデータベースSCNの詳細を返すエンドポイントを公開します。このデータを取得するPL/SQL問合せは次のとおりです。

-- 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        GGADMIN         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として使用します。これは、すべてのオープン・トランザクションの中で最も古いSCNであり、1608891の過去の登録SCNでもあります。

OGG (https://phoenix.oggdevops.us:9100 Phoenix 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://dallas.oggdevops.us:9100 as oggadmin password oggadmin !
Using default deployment 'Dallas'

OGG (https://dallas.oggdevops.us:9100 Dallas) 2> dblogin useridalias oggadmin
Successfully logged into database.

OGG (https://dallas.oggdevops.us:9100 Dallas as oggadmin) 3> add checkpointtable oggadmin.checkpoints
ADD "oggadmin.checkpoints" succeeded.

OGG (https://dallas.oggdevops.us:9100 Dallas as oggadmin) 4> add replicat REPINIT exttrail DD checkpointtable oggadmin.checkpoints
2018-03-16T13:56:41Z  INFO    OGG-08100  REPLICAT added.

OGG (https://dallas.oggdevops.us:9100 Dallas as oggadmin) 5> edit params REPINIT

OGG (https://dallas.oggdevops.us:9100 Dallas 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://dallas.oggdevops.us:9100 Dallas 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: 初期ロードExtractの作成および起動

取得したインスタンス化SCN (1624963)を使用して、初期ロードExtractを作成してデータベース表の内容を証跡に書き込みます。

初期ロードExtract EXTINITを作成して起動します。

OGG (https://phoenix.oggdevops.us:9100 Phoenix as oggadmin) 15> add extract EXTINIT sourceistable
2018-03-16T14:08:38Z  INFO    OGG-08100  EXTRACT added.

OGG (https://phoenix.oggdevops.us:9100 Phoenix as oggadmin) 16> edit params EXTINIT

OGG (https://phoenix.oggdevops.us:9100 Phoenix 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 1609723";

OGG (https://phoenix.oggdevops.us:9100 Phoenix 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: 分散パスの作成

AdminClientからリモート・ホストに対してローカル証跡をコピーするための2つの分散パス(AABBおよびCCDD)を作成します。

OGG (https://phoenix.oggdevops.us:9100 Phoenix) 15> add distpath AABB source trail://phoenix.oggdevops.us: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://phoenix.oggdevops.us:9100 Phoenix) 16> add distpath CCDD source trail://phoenix.oggdevops.us: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://phoenix.oggdevops.us:9100 Phoenix) 17> start distpath AABB
2018-03-16T17:28:42Z  INFO    OGG-08513  The path 'AABB' has been started.

OGG (https://phoenix.oggdevops.us:9100 Phoenix) 18> start distpath CCDD
2018-03-16T17:28:47Z  INFO    OGG-08513  The path 'CCDD' has been started.

手順6: プライマリReplicat REPPRIMの作成

初期ロードExtractおよびReplicatが完了すると、それらは削除できます。次に、プライマリReplicatプロセスがリモート・ホスト上に作成され、変更データがターゲット・データベースに適用されます。

AdminClientを使用してプライマリReplicatプロセスを作成します。

注意:

プライマリReplicatはインスタンス化SCNで起動されます。
OGG (https://dallas.oggdevops.us:9100 Dallas as oggadmin) 12> add replicat REPPRIM exttrail BB checkpointtable oggadmin.checkpoints
2018-03-16T17:37:46Z  INFO    OGG-08100  REPLICAT added.

OGG (https://dallas.oggdevops.us:9100 Dallas as oggadmin) 13> edit params REPPRIM

OGG (https://dallas.oggdevops.us:9100 Dallas 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://dallas.oggdevops.us:9100 Dallas 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