19 その他の考慮事項
ハートビート表の追加
Oracle GoldenGate for PostgreSQLではハートビート表構成がサポートされていますが、それには更新およびパージのタスクに関していくつかの制限事項があります。それらについては後で説明します。ソース・システムとターゲット・システムの両方へのハートビート表の追加はオプションですが、レイテンシの問題や、レプリケーション・ストリーム内のどのプロセスでそのような問題が発生しているかを特定するために役立ちます。
データベースに対してハートビート表を追加するには、表16-*で必須権限を調べて、ExtractまたはReplicatユーザーに正しいデータベース権限が割り当てられていることを確認します。
データベース内のスキーマを作成する必要があり、この名前が、GLOBALS
ファイルのGGSCHEMA
パラメータに使用されているスキーマの名前と一致する必要があります。このスキーマは、ExtractまたはReplicatユーザーと同じでない一意のスキーマにすることも、そのユーザーと同じにすることもできますが、必ずOracle GoldenGateオブジェクト専用に予約する必要があり、レプリケートされるユーザー表スキーマの一部にしないようにする必要があります。
-
GGSCIを使用してソース・データベースとターゲット・データベースのDSNに接続します。
GGSCI> DBLOGIN SOURCEDB dsn USERIDALIAS alias
-
GGSCIコマンドを使用してハートビート表を追加します。
GGSCI> ADD HEARTBEATTABLE
オプションで、ターゲット専用データベース(単方向レプリケーションにのみ使用されるデータベース)の場合にTARGETONLY
オプションを含めることができます。これにより、ハートビート・レコード更新関数が作成されなくなります。GGSCI> ADD HEARTBEATTABLE TARGETONLY
ハートビートの更新関数およびパージ関数について学習するには、次を参照してください。
親トピック: その他の考慮事項
ハートビートの更新関数とパージ関数の実行
ハートビート表および関連する関数はADD HEARTBEATTABLE
コマンドから作成されますが、PostgreSQLの場合、それらの関数を呼び出す自動スケジューラはありません。
1つのメイン関数により、ハートビート・レコード更新関数とハートビート履歴表パージ関数の両方を制御します。これら両方の機能のデフォルト設定は、更新頻度が60秒で、履歴レコードのパージが1日であり、デフォルトでは、30日より古いレコードはすべて削除されます。
メイン・ハートビート・レコード関数を呼び出すには、select ggschema.gg_hb_job_run();
を実行する、オペレーティング・システム・レベルのジョブを作成する必要があります。この関数が呼び出されると、更新頻度設定および履歴レコードのパージ設定が考慮され、関数呼出しのスケジューラ設定に関係なくそれらの値が使用されます。
*****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チェックポイント表です。
フィルタ表を作成してサプリメンタル・ロギングを有効化する手順:
-
各ソース・データベースで、Replicatで使用するチェックポイント表が作成されていることを確認します。たとえば:
ADD CHECKPOINTTABLE ggadmin.oggcheck
GLOBALS
ファイルのGGSCHEMA
パラメータで使用されるスキーマ名と同じものを使用することをお薦めします。 -
そのチェックポイント表に対してサプリメンタル・ロギングを有効にします。たとえば:
ADD TRANDATA ggadmin.oggcheck ALLCOLS
-
そのチェックポイント表情報を使用してReplicatが作成されていることを確認します。
ADD REPLICAT reptgt1, EXTTRAIL ./dirdat/e2, CHECKPOINTTABLE ggadmin.oggcheck
-
フィルタリング表用に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を削除および登録解除します。
-
GGSCIを使用してソース・データベースとターゲット・データベースのDSNに接続します。
GGSCI> DBLOGIN SOURCEDB dsn USERIDALIAS alias
-
まず、Extractを削除します。
GGSCI> DELETE EXTRACT extname
-
Extractの登録を解除します。
GGSCI> UNREGISTER EXTRACT extname
親トピック: その他の考慮事項
表レベルのサプリメンタル・ロギングの削除
TABLE
パラメータをExtractパラメータ・ファイルから削除した場合、またはTABLEEXCLUDE
を使用してワイルドカード文からその表を除外した場合は、サプリメンタル・ロギングを表から削除できます。
ノート:
Extractは、サプリメンタル・ロギングが有効になっていない表を解決すると、DML操作のタイプによっては異常終了します。DELETE TRANDATA
を使用してサプリメンタル・ロギングを削除すると、その表のReplicatアイデンティティ・レベルがNOTHING
に設定されます。サプリメンタル・ロギングは、GGSCI内のDELETE TRANDATA
コマンドを使用して無効にできます。
DELETE TRANDATA
を発行するための構文を次に示します。GGSCI> DBLOGIN SOURCEDB dsn_name USERIDALIAS alias_name
GGSCI> DELETE TRANDATA schema.tablename
GGSCI> INFO TRANDATA schema.tablename
親トピック: その他の考慮事項