21 その他の考慮事項

ハートビート表の追加

Oracle GoldenGate for PostgreSQLではハートビート表構成がサポートされ、更新およびパージのタスクに関していくつかの制限事項があります。これらの制限事項については後で説明します。ハートビート表をソース・システムとターゲット・システムの両方に追加することは必須ではありませんが、レイテンシに関する問題や、このような問題が発生する可能性のあるレプリケーション・ストリーム内のプロセスの判別に役立ちます。

データベースのハートビート表を追加するには、表17-*で必要な権限を確認し、適切なデータベース権限がExtractユーザーまたはReplicatユーザーに割り当てられていることを確認します。

データベース内のスキーマを作成する必要があり、これはGLOBALSファイルのGGSCHEMAパラメータに使用されるスキーマの名前と一致する必要があります。スキーマは、ExtractユーザーまたはReplicatユーザーと同じではない独自のスキーマにすることも、そのユーザーと同じにすることもできますが、常にOracle GoldenGateオブジェクト専用として予約する必要があり、かつレプリケートするユーザー表スキーマの一部にしない必要があります。

Microservices Architecture

  1. 管理クライアントを使用してデプロイメントに接続してから、ソース・データベースとターゲット・データベースの資格証明別名に接続します。
    OGG> CONNECT https://remotehost:srvmgrport DEPLOYMENT deployment_name AS deployment_user PASSWORD deployment_password
    OGG (https://remotehost:16000postgresql_target)> DBLOGIN USERIDALIAS alias
  2. ハートビート表を追加します。
    OGG (https:// remotehost:16000postgresql_source/target)> ADD HEARTBEATTABLE

オプションで、一方向レプリケーションにのみ使用されるターゲット専用データベースの場合、ハートビート・レコード更新関数が作成されないTARGETONLYオプションを含めることができます。

Oracle GoldenGate MA Webインタフェースからハートビート表を追加することもできます。Oracle GoldenGate Microservicesを使用してのステップ・バイ・ステップ・データ・レプリケーション・ガイドのハートビート表の作成を参照してください。

Classic Architecture

  1. GGSCIを使用して、ソース・データベースとターゲット・データベースのDSNに接続します。
    GGSCI> DBLOGIN SOURCEDB dsn USERIDALIAS alias
  2. GGSCIコマンドを使用して、ハートビート表を追加します。
    GGSCI> ADD HEARTBEATTABLE
    オプションで、一方向レプリケーションにのみ使用されるターゲット専用データベースの場合、ハートビート・レコード更新関数が作成されないTARGETONLYオプションを含めることができます。
    GGSCI> ADD HEARTBEATTABLE TARGETONLY

ハートビート更新関数およびパージ関数の詳細は、次を参照してください。

ハートビート更新関数およびパージ関数の実行

ハートビート表および関連する関数はADD HEARTBEATTABLEコマンドから作成されますが、PostgreSQLの場合、関数をコールする自動スケジューラはありません。

1つの主要な関数によって、ハートビート・レコード更新関数とハートビート履歴表パージ関数の両方が制御されます。これら両方の機能のデフォルト設定は、更新頻度が60秒、履歴レコードのパージが1日となり、デフォルトでは、30日前より古いすべてのレコードが削除されます。

主要なハートビート・レコード関数をコールするには、“select ggschema.gg_hb_job_run();”を実行するオペレーティング・システム・レベルのジョブを作成する必要があります。この関数がコールされると、更新頻度設定と履歴レコードのパージ設定が考慮され、関数コールのスケジューラ設定に関係なく、これらの値が使用されます。

たとえば、ユーザーは次の構文を使用してCronジョブを作成し、毎分実行できます。
*****PGPASSWORD="gguserpasswd" psql -U gguser -d dbname -h remotehost -p 5432 -c "select ggschema.gg_hb_job_run();" >/dev/null
 2>&1

Windowsタスク・スケジューラpgAdminまたはpg_cronは、関数コールをスケジュールするために使用できるその他のプログラムです。

双方向ループ検出の有効化

Oracle GoldenGateの双方向および多方向実装には、1つのソース・データベースのExtractが、別のソース・データベースからReplicatによって送信されたトランザクションを再取得しないように、ループ検出が必須です。

CDC Extractキャプチャ方法の場合、デフォルトでは、Replicatの配信先の表に対してサプリメンタル・ロギングが有効なかぎり、Extractが構成されているデータベースにReplicatによってコミットされたトランザクションは、Replicatからのトランザクションを再取得します。

Replicatによって適用されるトランザクションの再取得を無視するには、CDC Extractに対してTRANLOGOPTIONS FILTERTABLEパラメータを使用する必要があります。フィルタリング表として使用する表は、Replicatのために作成が必要なOracle GoldenGateチェックポイント表です。

フィルタ表を作成してサプリメンタル・ロギングを有効化する手順:

  1. 各ソース・データベースで、Replicatで使用するチェックポイント表が作成されていることを確認します。たとえば:
    ADD CHECKPOINTTABLE ggadmin.oggcheck

    GLOBALSファイルのGGSCHEMAパラメータで使用されるスキーマ名と同じものを使用することをお薦めします。

  2. チェックポイント表に対してサプリメンタル・ロギングを有効にします。たとえば:
    ADD TRANDATA ggadmin.oggcheck ALLCOLS

  3. チェックポイント表の情報を使用してReplicatが作成されていることを確認します。
    ADD REPLICAT reptgt1, EXTTRAIL ./dirdat/e2, CHECKPOINTTABLE ggadmin.oggcheck
  4. フィルタリング表用のReplicatのチェックポイント表を使用して、IGNOREREPLICATES (デフォルトでオン)およびFILTERTABLEパラメータにより各Extractを構成します。
    TRANLOGOPTIONS IGNOREREPLICATES
    TRANLOGOPTIONS FILTERTABLE ggadmin.oggcheck

    ノート:

    Oracle GoldenGate for PostgreSQLでは、Extractごとに1つのFILTERTABLE文のみがサポートされるため、複数方向の実装では、各Replicatが配信先のデータベース内の同じチェックポイント表を必ず使用するようにします。

Extractの削除

ソースPostgreSQLデータベースに対する使用から個別のExtractを削除したり、Oracle GoldenGateをアンインストールする場合、レプリケーション・スロット・エントリを削除するには、データベースのレプリケーション・スロットに登録されたExtractを登録解除する必要があります。そうしないと、データベース・ログ・サイズが増加し続ける可能性があります。

次のステップを実行して、不要になったExtractを削除および登録解除します。

Microservices Architecture

  1. 管理クライアントを使用してデプロイメントに接続してから、ソース・データベースとターゲット・データベースの資格証明別名に接続します。
    OGG> CONNECT https://remotehost:srvmgrport DEPLOYMENT deployment_name AS deployment_user PASSWORD deployment_password
    OGG (https://remotehost:16000postgresql_target)> DBLOGIN USERIDALIAS alias
  2. 最初に、Extractを削除します。
    GGSCI> DELETE EXTRACT extname
  3. Extractを登録解除します。
    GGSCI> UNREGISTER EXTRACT extname

Classic Architecture

  1. GGSCIを使用して、ソース・データベースとターゲット・データベースのDSNに接続します。
    GGSCI> DBLOGIN SOURCEDB dsn USERIDALIAS alias
  2. 最初に、Extractを削除します。
    GGSCI> DELETE EXTRACT extname
  3. Extractを登録解除します。
    GGSCI> UNREGISTER EXTRACT extname

表レベルのサプリメンタル・ロギングの削除

表をOracle GoldenGateで取得する必要がなくなり、表のTABLEパラメータがExtractパラメータ・ファイルから削除されているか、またはTABLEEXCLUDEを使用してワイルドカード文から表を除外している場合、サプリメンタル・ロギングを表から削除できます。

ノート:

Extractで、サプリメンタル・ロギングが有効になっていない表を解決すると、DML操作のタイプによっては異常終了します。

DELETE TRANDATAを使用してサプリメンタル・ロギングを削除すると、Replicatの表のIDENTITYレベルはNOTHINGに設定されます。サプリメンタル・ロギングは、Microservices Architecture Webインタフェースを使用して、「管理サービス」、「構成」ページから、ソース・データベースに対して作成された「資格証明」で無効にするか、GGSCIまたはMicroservices Architecture管理クライアント内でDELETE TRANDATAコマンドを使用して発行できます。

次に、GGSCIからDELETE TRANDATAを発行する構文を示します。
GGSCI> DBLOGIN SOURCEDB dsn_name USERIDALIAS alias_name
 GGSCI> DELETE TRANDATA schema.tablename
サプリメンタル・ロギングのレベルをチェックするには、次のようにします。
GGSCI> INFO TRANDATA schema.tablename