ロック処理

エンタープライズ・サーバ・クラスタのロックを参照し編集するには、いくつかの方法があります。

ジョブをサブミットすると、そのジョブは入力キューに置かれます。指定したクラスの JCL を実行するイニシエータがある場合、ジョブがロック済みのファイルのロックを要求しない限り、ジョブはアクティブ・キューに移動されその場所で実行します。この場合、JCL は [Waiting] モードになります。

GLM およびクラスタ・クライアントのロックを参照/表示できます。エンタープライズ・サーバ・クラスタがアクティブの場合、グローバル・ロック・マネージャ (GLM) に保持されるすべてのグローバル・ロックを参照し、所定の JCL、イニシエータ、またはクライアントのロックを特定することもできます。クラスタ・クライアントで、すべてのグローバル・ロックおよびそのクライアント独自のローカル・ロックを参照できます。これを行うには、ESMAC または caslock コマンドを使用します。

ESMAC でのアクティブなロックの参照

GLM およびエンタープライズ・サーバ・クラスタ・クライアントには、いずれもアクティブなロックを参照できるツールがあります。GLM では、クラスタ全体のグローバル・ロックをすべて参照できます。クラスタ・クライアントでは、そのクライアント独自のグローバル・ロックとすべてのローカル・ロックのみを表示できます。

GLM でのロックの参照
GLM では、すべてのグローバル・ロックとそれらの関連情報を表示できます。ロック (ENQ) は、ターゲット・リソースの詳細とロック所有者のチェーンおよび所有者が要求したロックの特性によって定義されます。
リソースは、QNAME および RNAME によって定義されます。
QNAME
QNAME は ENQ または DEQ のターゲット・リソースの種類を定義します。現在、エンタープライズ・サーバ・クラスタによってサポートされる QNAME は SYSZJOBD、SYSZJOBN、SYSZDSN のみです。
RNAME
RNAME は ENQ または DEQ のターゲット・リソース名を定義します。
ロック所有者のチェーンには次のような情報が含まれます。
  • ロックの種類 - 排他的または共有。
  • ロック所有者のステータス - [Controlled]、[Waiting]、または [Pending]。

GLM でロックを表示するには、対応する ESMAC ページを表示します。[Resources] ペインで、[Active] を選択してから [Locks] を選択します (CASRDO33)。次のような画面が表示されます。



[PID]
GLM の通信サーバの PID (MFCS)。
[res-ID]
リソース ID を特定します。
[Type]
ロックの種類 (共有または排他的)。
[State]
ロックのステータス - [Controlled]、[Waiting]、または [Pending]。

上記のスクリーンショットは、エンタープライズ・サーバ・クラスタ・クライアント ESCLSLV1 のバッチ・イニシエータ (PID 8716) で実行するジョブ JOB01364 (ジョブ名 MYLOCK) がいくつかのデータセットでロックを所有している状況を示しており、res-ID 1 によって特定されるデータセットが含まれます。[Resource Details] グループでは、res-ID 1 が SYSI.CLUSTER.MYFILE というリソース名を持つキュー SYSZDSN に属すものとして定義されます。

同時に、エンタープライズ・サーバ・クラスタ・クライアント ESCLSLV1 のバッチ・イニシエータ (PID 12228) で実行するジョブ番号 JOB01365 (このジョブ名は不明) のステータスは待機中で、このジョブも同じリソース、res-ID 1、SYSI.CLUSTER.MYFILE で排他的ロックを要求します。

注:[Resource Details] グループには、範囲は表示されません。これは、GLM でクラスタ全体のすべてのロックが GLM ローカル・ロックだからです。
エンタープライズ・サーバ・クラスタ・クライアントでのロックの参照
クラスタ・クライアントのロックを表示するには、対応する ESMAC ページを表示します。[Resources] ペインで、[Active] を選択してから [Locks] を選択します (CASRDO33)。次のような画面が表示されます。前述のスクリーンショットに似ていますが、ここではこのクライアントが所有するロックのみが表示されます。

caslock コマンドによるアクティブなロックの表示

caslock コマンドは自己文書化されています。エンタープライズ・サーバのコマンド・プロンプトに caslock -h と入力すると、次の情報が表示されます。
Usage: caslock [/a /l /r /u /p /c]

   /a[client_applid]        Remove locks for specified APPLID of the client region
   /l                       List all active locks
   /r[region_name]              The name of the region to send the request to
   /u[username]             The user's username
   /p[password]             The user's password
   /c[group]                The user's group
次のコマンド、caslock -rESCLMGR -l はエンタープライズ・サーバ・クラスタのアクティブなグローバル・ロックをすべて表示します。
Lock Ownership
PID     res-ID    Type        State         Persistence         Seq
8720    t:001    JOB01485 JRX0033  ( MYLOCK   ) (ESCLSLV1/     10392)
           1     Exclusive   Controlled    Task                 1
           2     Exclusive   Controlled    Task                 1
           3     Exclusive   Controlled    Task                 1
           4     Exclusive   Controlled    Task                 1
           5     Exclusive   Controlled    Task                 1
           6     Exclusive   Controlled    Task                 1
           7     Exclusive   Controlled    Task                 1
10660    t:002    ES Subsystem
           8     Exclusive   Controlled    Server               1
Resource Details
      res-ID     Queue        Length    Resource Name
         1      SYSZDSN           19    SYSI.CLUSTER.MYFILE
         2      SYSZDSN           20    SYSI.CLUSTER.SPEC002
         3      SYSZDSN           20    SYSI.CLUSTER.SPEC001
         4      SYSZDSN           20    SYSI.CLUSTER.PATT001
         5      SYSZDSN           20    SYSI.CLUSTER.GENE002
         6      SYSZDSN           20    SYSI.CLUSTER.GENE001
         7      SYSZJOBN           8    JRX0033
         8      SYSZJOBD           8    JRX0034
注:
  • caslock コマンドは GLM に対してのみ実行できます。
  • 特定の APPLID を対象にすることはできません。クラスタ全体のすべてのグローバル・ロックが表示されます。

グローバル・ロックの削除

ロック削除機能により、特定の状況でトラブルシューティングを行うことができます。グローバル・ロックの削除は、エンタープライズ・サーバ・クラスタ・クライアントとエンタープライズ・サーバ・クラスタ・マネージャ間に永続的な接続障害が発生した場合、およびクラスタ内でアクティブなままの他のクラスタ・クライアントでジョブが実行できない原因となるロックが含まれている場合のみに行う必要があります。

GLM といずれかのエンタープライズ・サーバ・クラスタ・クライアント間の接続が ES_GLM_TIMEOUT 環境変数に指定された期間を超えて喪失したままの場合、クラスタ・クライアント層は GLM への接続を無効としてマークします。クライアントの接続ステータスが無効としてマークされると、回復できません。以降、クラスタに接続しようとしてもすべて拒否され、次のメッセージが表示されます。
TXCS3032S Connection to ES Cluster manager GLM APPLID (GLM SYSID) is disabled, verify and release
 global locks on ES cluster manager 
または
TXCS3033S Attempt to connect to a disabled ES Cluster manager GLM APPLID (GLM SYSID) , verify and
release global locks on ES cluster manager 

システム管理者は対策を講じる必要があり、その一環として他のアクティブなクラスタ・クライアントで実行する作業単位が正常に実行できない原因となっているグローバル・ロックがこのリージョンに含まれているかを特定する必要があります。そのようなグローバル・ロックが含まれる場合、システム管理者は GLM で ESMAC を使用するかまたは caslock コマンドを使用して、障害のあるエンタープライズ・サーバ・クラスタ・クライアントに含まれるすべてのロックを削除する必要があります。

注意:
ロックを削除するとき、ターゲットのエンタープライズ・サーバ・クラスタ・クライアントはクラスタから暗黙的に削除されます。このクライアントでさらに JCL を実行しようとすると、予期せぬ動作の原因になる場合があります。
ESMAC によるロックの削除
ESMAC でロックを削除するには、GLM の ESMAC ページを表示します。[Resources] ペインで、[Active] を選択してから [Locks] を選択します (CASRDO33)。

ページ下部で、[Remove Locks] ボタンを使用して APPLID のすべてのロックを削除できます。クライアントの [APPLID] 入力フィールドに、ロックを削除する対象のエンタープライズ・サーバ・クラスタ・クライアントの APPLID を入力します。