IMS データベースにアクセスする Enterprise Server アプリケーションに使用されるデータベース ロックのタイプは、排他的または共有のいずれかのアクセス モードに基づきます。
//IMSLOCK DD * (EXCLUSIVE | SHAREDGO) /*
共有アクセス モードは、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 の 2 つのロック モードのいずれかを使用できます。ロック モードは、Enterprise Server 起動時に IMS データベース制御に定義されます。