21 その他の考慮事項
ハートビート表の追加
Oracle GoldenGate for PostgreSQLではハートビート表構成がサポートされ、更新およびパージのタスクに関していくつかの制限事項があります。これらの制限事項については後で説明します。ハートビート表をソース・システムとターゲット・システムの両方に追加することは必須ではありませんが、レイテンシに関する問題や、このような問題が発生する可能性のあるレプリケーション・ストリーム内のプロセスの判別に役立ちます。
データベースのハートビート表を追加するには、表17-*で必要な権限を確認し、適切なデータベース権限がExtractユーザーまたはReplicatユーザーに割り当てられていることを確認します。
データベース内のスキーマを作成する必要があり、これはGLOBALSファイルのGGSCHEMA
パラメータに使用されるスキーマの名前と一致する必要があります。スキーマは、ExtractユーザーまたはReplicatユーザーと同じではない独自のスキーマにすることも、そのユーザーと同じにすることもできますが、常にOracle GoldenGateオブジェクト専用として予約する必要があり、かつレプリケートするユーザー表スキーマの一部にしない必要があります。
Microservices Architecture
-
管理クライアントを使用してデプロイメントに接続してから、ソース・データベースとターゲット・データベースの資格証明別名に接続します。
OGG> CONNECT https://remotehost:srvmgrport DEPLOYMENT deployment_name AS deployment_user PASSWORD deployment_password OGG (https://remotehost:16000postgresql_target)> DBLOGIN USERIDALIAS alias
-
ハートビート表を追加します。
OGG (https:// remotehost:16000postgresql_source/target)> ADD HEARTBEATTABLE
オプションで、一方向レプリケーションにのみ使用されるターゲット専用データベースの場合、ハートビート・レコード更新関数が作成されないTARGETONLY
オプションを含めることができます。
Classic Architecture
-
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
Windowsタスク・スケジューラ、pgAdminまたはpg_cronは、関数コールをスケジュールするために使用できるその他のプログラムです。
親トピック: ハートビート表の追加
双方向ループ検出の有効化
Oracle GoldenGateの双方向および多方向実装には、1つのソース・データベースの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を削除および登録解除します。
Microservices Architecture
-
管理クライアントを使用してデプロイメントに接続してから、ソース・データベースとターゲット・データベースの資格証明別名に接続します。
OGG> CONNECT https://remotehost:srvmgrport DEPLOYMENT deployment_name AS deployment_user PASSWORD deployment_password OGG (https://remotehost:16000postgresql_target)> DBLOGIN USERIDALIAS alias
-
最初に、Extractを削除します。
GGSCI> DELETE EXTRACT extname
-
Extractを登録解除します。
GGSCI> UNREGISTER EXTRACT extname
Classic Architecture
-
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の表のIDENTITYレベルはNOTHING
に設定されます。サプリメンタル・ロギングは、Microservices Architecture Webインタフェースを使用して、「管理サービス」、「構成」ページから、ソース・データベースに対して作成された「資格証明」で無効にするか、GGSCIまたはMicroservices Architecture管理クライアント内でDELETE TRANDATA
コマンドを使用して発行できます。
DELETE TRANDATA
を発行する構文を示します。GGSCI> DBLOGIN SOURCEDB dsn_name USERIDALIAS alias_name
GGSCI> DELETE TRANDATA schema.tablename
GGSCI> INFO TRANDATA schema.tablename
親トピック: その他の考慮事項