IMS データベースにアクセスするエンタープライズ・サーバ・アプリケーションに使用されるデータベース・ロッキングのタイプは、排他的または共有のいずれかのアクセス・モードに基づきます。
共有アクセス・モードは、IMS トランザクション、CICS トランザクション、IMS BMP などのオンライン・プログラムに使用されます。
共有アクセス・モードでは、IMS データベース・ロッキングがデータベース・レコード・レベルで発生します。データベース・レコードには、ルート・セグメントとすべての従属セグメントが含まれています。2 次索引データベースは、1 次データベースでターゲット・セグメントのデータベース・レコードをロッキングします。論理関係は、論理子セグメントを定義するデータベース・レコードと、宛先である親セグメントのデータベース・レコードの両方をロッキングします。
DLI 呼び出しの処理中にロッキングされたレコードが検出されると、データベース制御がロッキング再試行のステータスになります。この再試行は、レコードのロッキングが解除されるかまたは待ち時間が経過するまで続きます。待ち時間は、環境変数によって制御します。
ES_IMS_LOCK_TIMEOUT=n
ここで n は、0 ~ 65535 の範囲の秒数になります。デフォルト値は 30 秒です。値 0 は、無限の待ち時間を示します。
ロッキング再試行アルゴリズムはパフォーマンスの面でも調整できます。この遅延間隔は再試行の頻度を制御し、環境変数によって外部的に制御できます。
ES_IMS_LOCK_RETRY_DELAY=n
ここで n は、0 ~ 65535 の範囲のミリ秒数になります。デフォルトの再試行遅延は 5 ミリ秒です。
ロッキング待ち時間が経過すると、BD ステータス・コードが DLI 呼び出しに対して返され、エラー・メッセージがサーバ・コンソールに書き込まれます。通常はロッキング待ち時間が経過することはないため、この状況では調査が必要です。待ち時間経過の原因には、ロッキングを保持しているアプリケーションが別のリソース・マネージャによるリソース上で待機しているか、または他の理由で中断している場合が考えられます。これらのステータスは、他のマシンの活動によってシステムが CPU 枯渇ステータスになり結果的にアプリケーションが一時停止するときにも生じる場合があります。これは、ロッキング・タイムアウトの値を延長することで修正できます。
ロッキング・タイムアウトの問題を診断できるようにするために、タイムアウトが検出されると次の環境変数がシステム・ダンプをトリガします。
ES_IMS_DUMP_ON_TIMEOUT=1
共有アクセス・データベースは、従来のロッキング・モードまたは IRLM ロッキング・モードのいずれかを使用できます。ロッキング・モードは、エンタープライズ・サーバ起動時に IMS データベース制御に定義されます。