17 Extractの構成

この章では、PostgreSQLデータベースから初期ロード・データおよびトランザクション・データをキャプチャするようにOracle GoldenGateキャプチャ・プロセスを構成する手順について説明します。

内容は次のとおりです。

Extractについて

Oracle GoldenGate for PostgreSQLでは、2つのタイプのExtractを作成できます。

初期ロードExtract

初期ロードExtractは、表からすべてのレコードを読み取り、それらをEXTFILEまたはRMTFILEに書き込むために使用されます。初期ロードExtractは、ADD EXTRACTコマンドのSOURCEISTABLEオプションを指定して作成され、リカバリ用のチェックポイントを保持しません。

初期ロード・プロセスの詳細は、Oracle GoldenGateの管理初期ロードによるOracle GoldenGateのインスタンス化を参照してください。

チェンジ・データ・キャプチャExtract

チェンジ・データ・キャプチャExtractは、トランザクション・データの作成時点または事前書込みログへの記録の時点からの変更内容をキャプチャするために使用されます。

PostgreSQL用のOracle GoldenGate Extractプロセスは、PostgreSQLのtest_decodingデータベース・プラグインから論理レコードを受け取り、それらをコミット順に証跡ファイルに書き込んでReplicatによってダウンストリームで使用できるようにします。

Extractのデプロイメント・オプション

  • ローカル・デプロイメント: ローカル・デプロイメントの場合、ソース・データベースとOracle GoldenGateは同じサーバーにインストールされます。ローカル・デプロイメントの場合、その他の考慮事項は必要ありません。

  • リモート・デプロイメント: リモート・デプロイメントの場合、ソース・データベースとOracle GoldenGateは別々のサーバーにインストールされます。リモート・デプロイメントは、クラウド・データベース(Azure for PostgreSQLやAmazon Aurora PostgreSQLなど)をサポートするために使用できる唯一のオプションです。

    リモート・デプロイメントの場合は、データベース・サーバーとOracle GoldenGateサーバーの間のオペレーティング・システムのエンディアンネスが同じである必要があります。

    Oracle GoldenGateサーバーのサーバー時間とタイムゾーンをデータベース・サーバーと同期する必要があります。これができない場合は、Extractの作成時または変更時の位置指定をLSNによって実行する必要があります。

    リモート・キャプチャのユースケースでは、SQLEXECを使用するとさらにレイテンシが発生する場合があります。これは、Extractによって処理されるレコードごとに、SQLEXEC操作を順次実行する必要があるためです。SQLEXECを必要とする特別なフィルタリングがリモートのハブExtractで実行され、パフォーマンスへの影響が大きすぎる場合は、Extractプロセスをソース・データベースに近づける必要があることがあります。

    リモート・デプロイメントでは、ネットワーク・レイテンシが低いことが重要であるため、Oracle GoldenGateサーバーとソース・データベース・サーバーの間のネットワーク・レイテンシは1ミリ秒未満にすることをお薦めします。

Extractの作成の前提条件

Oracle GoldenGate for PostgreSQLのインストールを読み、DataDirectドライバ(オペレーティング・システムに応じて異なる)が正しくインストールされていることを確認します。

リモートにインストールされている場合は、データベース・サーバーにあるPostgreSQLクライアント認証構成ファイル$PGDATA/pg_hba.confにおいて、Oracle GoldenGateサーバーからの接続を許可するように構成されていることを確認します。詳細は、https://www.postgresql.org/docs/13/auth-pg-hba-conf.htmlを参照してください。

PostgreSQL用のExtractの登録

PostgreSQL用のExtractをデータベースに登録し、それに予約済レプリケーション・スロットを与える必要があります。レプリケーション・スロットは、データベース構成設定 max_replication_slotsを介して割り当てます。また、このドキュメントのデータベース構成のトピック内の説明に従って構成できます。

次の手順に従ってExtractを登録します。Extractの登録は、Extractを作成する前に実行する必要があります。詳細は、Oracle GoldenGateコマンド・ライン・インタフェース・リファレンスガイドのREGISTER EXTRACTを参照してください。

  1. GGSCIを使用してソース・データベースのDSNに接続します。
    GGSCI> DBLOGIN SOURCEDB dsn USERIDALIAS alias
  2. GGSCIコマンドを使用してExtractを登録します。このコマンドでは、レプリケーション・スロットが内部的に作成されます。Extractの名前は、8文字以内の英数字にする必要があります。
    GGSCI> REGISTER EXTRACT extname

チェンジ・データ・キャプチャExtractの作成

次のステップでは、ソースPostgreSQLデータベースからトランザクション・データをキャプチャするようにCDC Extractを構成します。

ノート:

通常はデータベースごとに1つのExtractで十分ですが、複数のレプリケーション・スロットを使用可能な場合は複数のExtractでもかまいません。
  1. GGSCIで、Extractパラメータ・ファイルを作成します。
    EDIT PARAMS extname

    このサンプルでは、extnameはプライマリExtractの名前であり、前のステップでデータベースに登録したExtractの名前と同じです。

  2. 次に示す順序でExtractパラメータを入力します。パラメータ文ごとに新しい行を開始します。

    Extractの基本的なパラメータの例:

    EXTRACT extname
    SOURCEDB dsn_name USERIDALIAS alias
    EXTTRAIL ./dirdat/ep
    GETTRUNCATES
    TABLE schema.object;
    パラメータ 説明

    EXTRACT extname

    extnameはExtractの名前であり、8文字以内の英数字にする必要があります。詳細は、Oracle GoldenGateリファレンスextractを参照してください。

    SOURCEDB dsn_name

    データベース接続のDSNの名前を指定します。

    USERIDALIAS alias

    Extractに割り当てられるユーザーのデータベース・ログイン資格証明の別名を指定します。この資格証明は、Oracle GoldenGate資格証明ストアに存在する必要があります。詳細は、「Oracle GoldenGate資格証明の確立」を参照してください。

    EXTTRAIL trailname

    2文字のローカル証跡を指定します。プライマリExtractによって、キャプチャされたデータがこれに書き込まれます。

    GETTRUNCATES

    オプションのパラメータですが、切捨て操作をキャプチャするには必要です。

    TABLE schema.object;

    または

    TABLE schema.*;

    データをキャプチャするデータベース・オブジェクトを指定します。
    • TABLEは、表または表のワイルドカード・セットを指定します。

    • schemaは、スキーマ名またはスキーマのワイルドカード・セットです。

    • objectは、表または順序名、またはこれらのオブジェクトのワイルドカード・セットです。

    • *は、スキーマ内のすべての表を示すワイルドカードです。

    パラメータ文はセミコロンで終了します。

    ある名前をワイルドカード指定から除外するには、必要に応じて、SCHEMAEXCLUDETABLEEXCLUDEおよびEXCLUDEWILDCARDOBJECTSONLYパラメータを使用します。

    ノート:

    キャプチャする表のスキーマがGLOBALSファイルのGGSCHEMA内のスキーマと同じである場合(これはお薦めしません)、TABLE文でschema.*は使用できません。
  3. 構成に推奨されるオプションのExtractパラメータを入力します。このファイルは、EDIT PARAMSコマンドを使用して、処理を開始する前の任意の時点で編集できます。

  4. ファイルを保存して閉じます。

  5. Extractとそれに関連する証跡ファイルを追加します。

    GGSCI> ADD EXTRACT extname, TRANLOG, BEGIN NOW
    GGSCI> ADD EXTTRAIL ./dirdat/ep, EXTRACT extname
  6. Extractを起動します。

ExtractのためのDDLの変更

PostgreSQL用のExtractのDDLを変更するには、次のステップに従います:
  1. 変更が必要な表に対するアプリケーション・データを一時停止または停止します。

  2. DDLの変更を行う前に、Extractですべてのトランザクションを処理することを確認します。イベント・マーカー表は、トランザクションの完全な完了を保証するのに役立ちます。

  3. Extractを停止します。

  4. ソースで、DDL変更を実行する必要がある表に対してDELTE TRANDATAを実行します。

  5. ALTER TABLE文を実行し、表に対して列を追加または削除します。

  6. ソースで同じ表に対してtrandata (ADD TRANDATA)を有効にします。

  7. Extractを起動します。