2 フェーズ・コミット・アプリケーションを実行する場合は、
以下の推奨に従って、リソースの競合のために領域またはメッセージの処理が停止しないようにしてください。
- 2 フェーズ・コミット・アプリケーション内のトランザクションは、そのトランザクションが
継続している間はメッセージ処理プログラム (MPP) 領域を使用し続けるため、2 フェーズ・コミット・アプリケーションが領域で競合しないようにするために、可能な限り多くの MPP 領域を確保してください。
- 多数の IMS™ トランザクションが 2 フェーズ・コミット・トランザクション内で実行されている
場合には、2 フェーズ・コミット・アプリケーションの停止を避けるために、
少なくともそれと同数の MPP 領域が使用可能になっていなければなりません。
- トランザクションが長時間リソースを待ち続けることがないようにするために、
グローバル・トランザクションで行われるそれぞれの対話について、
適切なタイムアウト値を設定します。
- 1 つの 2 フェーズ・コミット・トランザクションで、あまりに多くのデータベース対話を行わないようにしてください。
複数の IMS トランザクションが 1 つの 2 フェーズ・コミット・トランザクションで
使用されている場合には、同一のデータを更新または変更しようとして、競合またはロックが発生する場合があります。
この問題を避けるには、同一の 2 フェーズ・コミット操作内の重複項目にユーザーがアクセスできないようなアプリケーションを作成します。
- データベースの最小の項目と同じ大きさのブロック・サイズを使用するように、内部リソース・ロック・マネージャー (IRLM) またはプログラム分離 (PI) ロック・マネージャーを構成することを検討してください。
比較的大きなブロック・サイズでは、ディスク内に非常に接近して存在するが、同一ではない項目に対して、2 つのトランザクションの競合が発生することがあります。
- 1 つのグローバル・トランザクション (作業単位) の中で、
同じ IMS データベースにある
同じ IMS トランザクションを使用して、
複数の対話が実行される場合、
その IMS トランザクションとの間で行われる
それぞれの対話は、別の MPP 領域で実行する必要があります。
IMS トランザクションでは、SCHDTYP=PARALLEL および PARLIM=0 という
値を設定して、その IMS トランザクションが複数の MPP 領域で実行できること、
および、新規 MPP 領域で行われるそれぞれの対話を処理するためのスケジューリング要件を
常に満たす (メッセージの数がゼロより大きい) ことを指定する必要があります。
- ある領域がハングしたときに、実行タイムアウト値が設定されていない場合、
/STOP REGION という IMS コマンドにトランザクションの異常終了パラメーターを指定して使えば、MPP 領域のハングの原因となっているトランザクションの実行を終了させることができます。
例えば、/STOP REGION reg# ABDUMP tranname を発行します。
このコマンドにより、その特定の対話に関してトランザクションがロールバックされ、MPP 領域が解放されます。