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>
<n>
待機する間隔を指定する整数。有効な値は1秒から1週間(7日間)です。この値は、プライマリExtractおよび関連するすべてのデータ・ポンプ両方で設定されているEOFDELAYパラメータで設定されている値より大きくする必要があります。
<units>
次のいずれか1つを使用します: S、SEC、SECS、SECOND、SECONDS、MIN、MINS、MINUTE、MINUTES、HOUR、HOURS、DAY、DAYS。
例
TRANSACTIONTIMEOUT 5 S