MON_GET_LOCKS 表関数 - 現在接続されているデータベース内のすべてのロックのリスト
MON_GET_LOCKS 表関数は、現在接続されているデータベース内のすべてのロックのリストを戻します。
ロックについての情報を取得するには MON_GET_LOCKS、MON_FORMAT_LOCK_NAME、MON_GET_APPL_LOCKWAIT 表関数と MON_LOCKWAIT 管理ビューを使用してください。SNAPLOCKWAIT 管理ビューと SNAP_GET_LOCKWAIT 表関数、SNAPLOCK 管理ビューと SNAP_GET_LOCK 表関数、および LOCKS_HELD 管理ビューはバージョン 9.7 フィックスパック 1 で非推奨になりました。
スキーマは SYSPROC です。
表関数パラメーター
- search_args
- key-value の組のリストを表すタイプ CLOB(1K) の入力パラメーター。 リストが空または NULL の場合には、現在接続されているデータベース内のすべてのロックが戻されます。 それ以外の場合は、key-value の組のリストによって表されるすべての条件に一致するすべてのロックが戻されます。 key-value の組は以下の形式に従う必要があります。
- key は、開始タグ、値、終了タグの順序で構成されるストリングです。
- 開始タグは、タグの始まりを示す不等号括弧、キー名、タグの終わりを示す不等号括弧の順序で構成されます。 スペースは使用できません。
- 終了タグは、タグの始まりを示す不等号括弧、スラッシュ、キー名、タグの終わりを示す不等号括弧の順序で構成されます。 スペースは使用できません。
- すべてのキーは大文字と小文字を区別し、search_args パラメーター内で一度だけ指定できます。
- 複数のキーの順序は重要ではありません。
無効な key-value の組に対しては SQLCODE -171 が戻されます。
表が存在しない場合には SQLCODE -204 が戻されます。
複数の異なるキーの間で AND 演算が実行されます。 同じキーの複数の値の間では OR 演算が実行されます。 例えば以下のように search_args パラメーターを使用した場合に戻されるリストには、共有モードまたは排他モードでハンドル 123 のアプリケーションによって保持されている (または取得待機中の) 表タイプまたは行タイプのすべてのロックが含まれます。CLOB('<application_handle>123</application_handle> <lock_object_type>Table:Row</lock_object_type> <lock_mode>S:X</lock_mode>')MON_GET_LOCKS 表関数で使用できるキーは次のとおりです。- application_handle
指定されたアプリケーション・ハンドルによって現在保持されている、または取得されようとしているすべてのロックのリストを戻します。 キー値の単一オカレンスのみ指定できます。 値は INTEGER として指定します。 以下に例を示します。
CLOB('<application_handle>145</application_handle>') - lock_name
指定されたロック名に一致するすべてのロックのリストを戻します。 キー値の単一オカレンスのみ指定できます。 値は、最大長 32 のストリングとして指定します。 以下に例を示します。
CLOB('<lock_name>00030005000000000280000452</lock_name>') - lock_object_type
指定されたロック対象タイプに一致するすべてのロックのリストを戻します。 キー値の複数のオカレンスを指定できます (最大で 5 回まで)。 それぞれの値 (大/小文字を区別しない) をコロン (:) で区切る必要があります。値は最大長 32 文字のストリングとして指定します。 以下に例を示します。
CLOB('<lock_object_type>Table:Chunk:Plan</lock_object_type>')可能な入力値のリストについては、『lock_object_type - 待機中のロック対象タイプ』モニター・エレメントを参照してください。
- lock_mode
指定されたロック・モードに一致するすべてのロックのリストを戻します。 キー値の複数のオカレンスを指定できます (最大で 5 回まで)。 それぞれの値 (大/小文字を区別しない) をコロン (:) で区切ります。値は最大長 3 のストリングとして指定します。例えば、
CLOB('<lock_mode>IS:IN:U</lock_mode>')可能な入力値のリストについては、『lock_mode - ロック・モード・モニター・エレメント』を参照してください。
- lock_status
指定された状況にあるすべてのロックのリストを戻します。 キー値の単一オカレンスのみ指定できます。 値は文字として指定します。
CLOB('<lock_status>W</lock_status>')可能な入力値のリストについては、『lock_status - ロック状況モニター・エレメント』を参照してください。
- table_schema
指定されたスキーマ名によって限定されるすべてのロックのリストを戻します。 さらに table_name キーも指定する必要があります。 キー値の単一オカレンスのみ指定できます。 値は、最大長 128 のストリングとして指定します。
- table_name
指定された表を参照するすべてのロックのリストを戻します。 さらに table_schema キーも指定する必要があります。 キー値の単一オカレンスのみ指定できます。 値は、最大長 128 のストリングとして指定します。 以下に例を示します。
CLOB('<table_schema>USER1</table_schema> <table_name>INVENTORY</table_name>')
以下の例は、key-value の組を search_args パラメーターで使用する方法を示しています。- すべての ROW および TABLE ロックを検索するには、次のようにします。
CLOB('<lock_object_type>Table:Row</lock_object_type>') - 表 T1 を参照し、ユーザー USER1 によって作成された、アプリケーション・ハンドル 123 が保持している (または取得待機中の) すべてのロックを検索するには、次のようにします。
CLOB('<application_handle>123</application_handle> <table_schema>USER1</table_schema> <table_name>T1</table_name>') - 共有モードで現在保持されているすべての TABLE、ROW、および BUFFERPOOL ロックを検索するには、次のようにします。
CLOB('<lock_mode>S</lock_mode> <lock_status>G</lock_status> <lock_object_type>Table:Row:Bufferpool</lock_object_type>')
- member
- どのメンバーのデータが戻されるかを指定する、タイプ INTEGER の入力引数。 現在のメンバーの場合は -1、すべてのアクティブ・メンバーの場合は -2 を指定します。
許可
- SYSADM 権限
- SYSMON 権限
デフォルトの PUBLIC 特権
なし
例
- 次のように MON_GET_APPL_LOCKWAIT 表関数を呼び出して、現在接続されているデータベース内の、すべてのメンバーに関する取得待機中のすべてのロックを判別します。
SELECT lock_name, hld_member, lock_status, hld_application_handle FROM TABLE (MON_GET_APPL_LOCKWAIT(NULL, -2))この照会は、以下の出力を戻します。LOCK_NAME HLD_MEMBER LOCK_STATUS HLD_APPLICATION_HANDLE -------------------------- ---------- ----------- ---------------------- 00030005000000000280000452 -2 W 00030005000000000280000452 -2 W 00030005000000000280000452 -2 W 3 record(s) selected.HLD_MEMBER が -2 であることを示すレコードは、ロック 0x00030005000000000280000452 がリモート・メンバーで保持されていることを示しています。
- 次のように MON_GET_LOCKS 表関数を呼び出してロックのホルダーを判別します。その際、検索引数としてロック名 0x00030005000000000280000452 を指定します。
SELECT lock_name, member, lock_status, application_handle FROM TABLE (MON_GET_LOCKS( CLOB('<lock_name>00030005000000000280000452</lock_name>'), -2))この照会は、以下の出力を戻します。LOCK_NAME MEMBER LOCK_STATUS APPLICATION_HANDLE -------------------------- ------ ----------- ------------------ 00030005000000000280000452 0 W 12562 00030005000000000280000452 1 W 12562 00030005000000000280000452 2 G 65545 00030005000000000280000452 3 W 12562 4 record(s) selected.ロックを保持しているアプリケーションについてさらに詳しく調べるには、WLM_GET_SERVICE_CLASS_WORKLOAD_OCCURRENCES または WLM_GET_WORKLOAD_OCCURRENCE_ACTIVITIES 表関数を呼び出すことができます。
戻される情報
| 列名 | データ・タイプ | 説明またはモニター・エレメント |
|---|---|---|
| APPLICATION_HANDLE | BIGINT | application_handle - アプリケーション・ハンドル LOCK_STATUS 列が G である場合、これはロックを現在保持しているアプリケーションを表します。 LOCK_STATUS 列が W または C である場合、これはロックの取得を現在待機しているアプリケーションを表します。 |
| MEMBER | SMALLINT | member - この行のデータの取得元となったデータベース・メンバー。 |
| LOCK_NAME | VARCHAR(32) | lock_name - ロック名 |
| LOCK_OBJECT_TYPE_ID | CHAR(1) FOR BIT DATA | 将来の利用のために予約済み |
| LOCK_OBJECT_TYPE | VARCHAR(32) | lock_object_type - ロック対象タイプ
LOCK_STATUS 列が G である場合、これはアプリケーションが現在保持しているオブジェクトのタイプを表します。 LOCK_STATUS 列が W または C である場合、これはアプリケーションが取得を現在待機しているオブジェクトのタイプを表します。 可能な入力値については、『lock_object_type - 待機中のロック対象タイプ』モニター・エレメントを参照してください。 |
| LOCK_MODE | VARCHAR(3) | lock_mode - ロック・モード
LOCK_STATUS 列が G である場合、これはアプリケーションがロックを現在保持しているモードを表します。 LOCK_STATUS 列が W または C である場合、これはアプリケーションがロックの取得を現在待機しているモードを表します。 モードが不明な場合、NULL 値がこの列に戻されます。 |
| LOCK_CURRENT_MODE | VARCHAR(3) | lock_current_mode - 移行前の元のロック・モード
モードが不明な場合、NULL 値がこの列に戻されます。 |
| LOCK_STATUS | CHAR(1) | lock_status - ロック状況 |
| LOCK_ATTRIBUTES | CHAR(16) | lock_attributes - ロック属性 |
| LOCK_RELEASE_FLAGS | CHAR(16) | lock_release_flags - ロック解放フラグ・モニター・エレメント |
| LOCK_RRIID | BIGINT | 内部使用のために予約済み |
| LOCK_COUNT | BIGINT | Lock_count モニター・エレメント |
| LOCK_HOLD_COUNT | BIGINT | lock_hold_count モニター・エレメント |
| TBSP_ID | BIGINT | tablespace_id - 表スペース ID
表スペースを参照しないロックの場合、NULL 値が戻されます。 |
| TAB_FILE_ID | BIGINT | table_file_id - 表ファイル ID |
