1.178 TRANSACTIONTIMEOUT
適用対象
Replicat
説明
TRANSACTIONTIMEOUT
パラメータでは、コミットされていないReplicatターゲット・トランザクションによる、ターゲット表のロックおよびデータベース・リソースの無駄な消費を防止します。Replicatが既存のアプリケーション・タイムアウト、およびターゲットのその他のデータベース要件内で動作できるように、このパラメータの値を変更できます。
TRANSACTIONTIMEOUT
では、Replicatがターゲット・トランザクション内の最後のソース・トランザクションのトランザクション終了レコードを受信していない場合に、ターゲット・トランザクションをオープンしておく時間を制限します。デフォルトでは、Replicatは複数のソース・トランザクションを1つのターゲット・トランザクションにグループ化してパフォーマンスを向上させますが、ソース・トランザクションの一部のみのコミットは行わず、最後のレコードが到着するまで無制限に待ちます。ReplicatパラメータのGROUPTRANSOPS
では、グループ化されるターゲット・トランザクションの最小サイズを制御します。範囲は1–604800です。
次のイベントは、長期化してTRANSACTIONTIMEOUT
をトリガーする場合があります。
-
ネットワークの問題によって、トレイル・データがターゲット・システムに転送されない。
-
いずれかのシステムのディスク容量が不足し、トレイル・データが書き込まれない。
-
Collectorの異常終了(ほとんど発生しないイベントです)。
-
トランザクションのレコードの書込み中のExtractの異常終了または停止。
-
Extractデータ・ポンプの異常終了または停止。
-
停電やシステムのクラッシュなど、ソース・システムの障害。
TRANSACTIONTIMEOUTの動作
通常の操作では、Replicatは、トランザクションが異常終了し、再試行が必要になるときに備えて、現在のターゲット・トランザクション内の最初のソース・トランザクションの開始位置を記憶しています。TRANSACTIONTIMEOUT
を有効にすると、Replicatは、現在のソース・トランザクションの最初のレコードの位置も記憶し、TRANSACTIONTIMEOUT
がトリガーされた場合に、この位置を論理的な終了(EOF)位置として使用します。
TRANSACTIONTIMEOUT
は、トリガーされると次のことを行います。
-
現在のターゲット・トランザクションを中止します。
-
中止されたターゲット・トランザクション内の最初のソース・トランザクションの開始位置に移動します。
-
論理終了位置(最後の完了していないソース・トランザクションの開始位置)まで、すべてのトレイル・レコードを処理します。
-
論理EOF位置でトランザクションをコミットします。
-
新しいトレイル・データを待機してから、次のトレイル・レコードを処理します。
TRANSACTIONTIMEOUT
は、データの到着を遅らせ、TRANSACTIONTIMEOUT
をトリガーする問題の性質に応じて、同一のソース・トランザクションに対して何度もトリガーできます。
TRANSACTIONTIMEOUT条件の検出
TRANSACTIONTIMEOUT
が有効な場合に、Replicatがソース・トランザクションの残りの部分を待機しているかどうかを確認するには、SEND REPLICAT
コマンドをSTATUS
オプションとともに発行します。次のステータスは、この状況を示します。
Performing transaction timeout recovery Waiting for data at logical EOF after transaction timeout recovery
デフォルト
無効
構文
TRANSACTIONTIMEOUT n units
例
TRANSACTIONTIMEOUT 5 S
親トピック: Oracle GoldenGateパラメータ