19 その他の考慮事項

ハートビート表の追加

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

データベースに対してハートビート表を追加するには、表16-*で必須権限を調べて、ExtractまたはReplicatユーザーに正しいデータベース権限が割り当てられていることを確認します。

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

  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ジョブを作成し、それを1分ごとに実行できます。
*****PGPASSWORD="gguserpasswd" psql -U gguser -d dbname -h remotehost -p 5432 -c "select ggschema.gg_hb_job_run();" >/dev/null
 2>&1

pgAdmin、またはpg_cronが、関数呼出しをスケジュールするために使用できるその他のプログラムです。

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

Oracle GoldenGateの双方向および多方向実装の場合は、あるソース・データベースの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を削除および登録解除します。

  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アイデンティティ・レベルがNOTHINGに設定されます。サプリメンタル・ロギングは、GGSCI内のDELETE TRANDATAコマンドを使用して無効にできます。

GGSCIからDELETE TRANDATAを発行するための構文を次に示します。
GGSCI> DBLOGIN SOURCEDB dsn_name USERIDALIAS alias_name
 GGSCI> DELETE TRANDATA schema.tablename
サプリメンタル・ロギングのレベルを確認するには:
GGSCI> INFO TRANDATA schema.tablename