ロックツリー
ホーム画面 > プロジェクト選択 > 分析 > ロックツリー
一日の間に発生したロック(lock)の推移を分析するツールです。この機能によってロックを発生させたセッション(lock holder)と待機しているセッション(lock waiter)に対するツリー構造を視覚的に確認できます。特定時点で発生したロック情報のholderとwaiter間の関係を分析できます。WhaTapのロックツリー機能により、データベース管理者はロック関連の問題を迅速に識別して解決でき、データベースの性能を最適化できます。
主な機能は次のとおりです。
-
ロック推移分析: 設定した照会期間に発生したロックの推移を時間とともに追跡し、グラフで表示します。これにより、ロックがどのように発生し、解消されるかを視覚的に把握できます。
-
ロックHolderおよびWaiter確認: 各ロックに対するholderとwaiterをツリー構造で確認できます。これにより、特定のロックが発生した状況でロックを発生させたセッションと待機するセッションとの関係を把握できます。
-
セッション間の関係分析: ロックを発生させたセッションと待機するセッションとの関係を分析し、クエリー実行およびトランザクション処理過程で発生したロックの原因を識別できます。
- 時間別ロックトレンドの視覚化: 1-Min Lock TrendsとLock Wait Sessions機能により、ロック発生データを時間単位で分析できます。
基本的な使い方

目的の日付と時間を設定し、数字2の一覧からインスタンスを選択します。設定した時間にロックが発生した場合は、lock wait sessionsと画面下のテーブルに表示されているデータを表示します。
Lock Wait Sessions
Lock Wait Sessionsは、ロック待機セッションの情報を分析できる機能です。照会期間によってロック待機セッションデータを3時間以上照会すると5分間隔で、3時間未満照会すると5秒間隔で提供します。また、チャートをドラッグして時間範囲を流動的に調整できます。
1-Min Lock Trends
Lock Wait Sessionsで特定の時間帯をクリックすると、その時間基準で15分前から15分後までの計30分間のロック発生状況を可視化して表示します。これにより、30分単位でロック発生トレンドを効果的に分析できます。
Total Locksは、その時間帯に発生したロックの合計個数を意味します。
時間照会
Lock Wait Sessionsでクリックした時間に発生した最大ロック数を基準に1-Min Lock TrendsとLock Treeテーブルの時間が設定されます。これにより、ロックが最も多く発生した区間を把握できます。

Lock Wait Sessionsはそのままにして1-Min Lock Trendsチャートで他の時間帯のバーをクリックした場合、該当する分の最大ロック数を持つ秒の時点でLock Treeテーブルの時間範囲が同期されます。これにより、時間帯を変更する時にLock Treeテーブルに反映された情報を確認できます。

-
3時間以上照会した場合 (5分単位のデータ使用)
照会時点から5分の区間でバーの色が濃く表示されます。
07:15:00時点をクリックした場合、07:15:00~07:20:00区間バーのチャートの色 が濃く表示されます。
-
3時間未満照会した場合 (5秒単位のデータ使用)
短い時間間隔で発生したロック状況を分析する時に役立ちます。

カラム情報の案内
- Active session
- Lock tree
- Process information
カラム情報に関する詳しい内容は、次のリンクを参照してください。
| 項目 | 説明 |
|---|---|
username | DBユーザー名 |
command | COMMAND_TYPEと同一、SQLのcommand number |
status | セッションの状態 |
schemaname | スキーマ、usernameと同一 |
osuser | セッションに接続したOSのユーザー名 |
spid | OSプロ セスの識別子 |
process | セッションに接続したクライアントプロセスID |
logon_time | セッションが作成された時点 |
last_call_et | セッションがアクティブになっている場合、アクティブになってから経過した時間(秒) |
sql_text | query、実行されているstatement、リテラル文字列を除外したSQL文 |
sql_param | queryから分離したリテラル値 |
prev_sql_text | 以前に実行したquery |
prev_sql_param | 以前に実行したquery param |
program | クライアントで実行したプログラムの情報 |
type | session type - user background recursive (whatap.conf)で設定可能 |
seq# | 現在または最後の待機を固有に識別する番号(待機するたびに増加) |
event | セッションがキューに登録されている場合は、セッションが待機しているリソースまたはイベントの数 |
p1 | 最初の待機イベントのパラメータ(小数点) |
p2 | 2番目の待機イベントのパラメータ(小数点) |
p3 | 3番目の待機イベントのパラメータ(小数点) |
wait_class | 待機中のイベントのクラス名 |
wait_time | セッションが現在待機中の場合、値は0です。0より大きい場合は、最後の待機時間(milliseconds) |
seconds_in_wait | セッションが現在待機中の場合、セッションが待機の ために待機した時間を意味します。セッションが待機中でない場合、最後の待機開始からの時間を意味します。 |
state | 待機状態、WAITING, WAITED UNKNOWN TIME, WAITED SHORT TIME, WAITED KNOWN TIME |
machine | セッションに接続したクライアントサーバー名(hostname) |
port | クライアントポート番号 |
terminal | 端末名 |
module | クライアントで実行したプログラムでユーザが設定したモジュール(module)名 |
アクション | 現在実行されているモジュールのユーザーが設定したアクション名 |
client_info | ユーザーが設定したクライアント情報 |
client_identifier | ユーザーが設定したクライアントの識別子 |
| session logical reads | バッファキャッシュ内でデータを読み込んだ回数 |
| physical reads | 物理ディスクからデータを読み出した回数 |
| excute count | SQLの実行数 |
| parse count (hard) | 構文分析の呼び出し合計数(実際の構文分析) |
| parse count (total) | 構文分析呼び出しの総数(hard、soft、describe) |
| opened cursors current | 現在開いているcursorの数 |
| db block changes | データベース内のすべてのブロックの変更回数 |
| session pga memory | セッションの現在のPGAサイズ(size) |
undo_segid | undo情報id |
undo_blk | undoブロックの数 |
undo_rec | undoレコードの数 |
sql_address | SQL文(statement)を識別する情報 |
sql_hash_value | SQL文(statement)を識別する情報 |
sql_id | 現在実行中のSQL文(statement)のSQL識別子 |
sql_child_number | 現在実行中のSQL文(statement)の下位番号 |
sql_exec_start | 当該セッションで現在実行中のSQL実行は、開始点にあります。 |
sql_exec_id | SQL実行識別子 |
prev_sql_addr | 最後に実行されたSQL文(statement)を識別する情報 |
prev_child_number | 最後に実行されたSQL文(statement)の下位番号 |
prev_exec_start | 最後に実行されたSQL文(statement)のSQL実行の開始時点 |
prev_exec_id | 最後に実行されたSQL文(statement)のSQL実行識別id |
plsql_entry_object_id | スタックの一番上にあるPL/SQL下位プログラムのオブジェクトid |
plsql_entry_subprogram_id | スタックで一番上にあるPL/SQL下位プログラムのサブプログラムid |
plsql_object_id | 現在実行中のPL/SQLオブジェクトのサブプログラムid |
taddr | トランザクションのアドレス(address) |
lockwait | lock wait address、セッションが待機中のロックアドレス |
row_wait_obj | ROW_WAIT_ROW#で指定された行を含むテーブルのオブジェクトID |
row_wait_file | ROW_WAIT_ROW#で指定された行を含むデータファイルの識別子 |
row_wait_block | ROW_WAIT_ROW#で 指定された行を含むブロックの識別子 |
row_wait_row | 現在ロックされている行 |
pdml_status | 値がENABLEDの場合、セッションがPARALLEL DML有効モードです。 値がDISABLEの場合、セッションでPARALLE DML有効モードに対応していません。 値がFORCEDの場合、セッションがPARALLE DMLを強制的に使用するように変更されたものです。 |
pq_status | 値がENABLEDの場合、セッションがPARALLEL QUERY有効モードです。 値がDISABLEの場合、セッションでPARALLEL QUERY有効モードに対応していません。 値がFORCEDの場合、セッションがPARALLEL QUERYを強制的に使用するように変更されたものです。 |
blocking_session_status | ブロックしているセッションの存在有無に関する詳細を提供 |
blocking_instance | ブロックしているセッションのインスタンス識別子 |
blocking_session | ブロックしているセッションのセッション識別子 |
final_blocking_session_status | 最終ブロックセッションの存在有無に関する詳細を提供 |
final_blocking_instance | 最終ブロックしているセッションのインスタンス識別子 |
final_blocking_session | 最終ブロックしているセッションのセッション識別子 |
service_name | セッションのサービス名やDB名と類似 |
saddr | セッションアドレス |
con_id | データに関連す るコンテナのid(マルチデータベースをサポートする場合のみ) |
WhaTapは、クライアントに関する情報をデフォルトで保存します。
| 項目 | 説明 |
|---|---|
Instance | インスタンス(エージェント)名 |
sid | セッションID |
serial# | セッションの一意な識別子と共に使用するセッションシリアル番号 |
holder_type | ロックを保持しているセッションのロックタイプ(例:TX、TMなど) |
holder_mode | 保持中のロックモード(例:0~6、6はexclusive) |
waiter_type | ロックを待機しているセッションのロックタイプ |
waiter_mode | 現在要求中のロックモード |
id1 | ロック識別子1(ロック対象オブジェクトを識別するために使用、例:トランザクションIDなど) |
id2 | ロックの詳細情報またはバージョン情報を表します |
次の項目は、XOSエージェントをインストールした場合に収集される指標です。
| 項目 | 説明 | 単位 |
|---|---|---|
pid | プロセスID | - |
cpuusage | プロセスが使用するCPU使用率 | % |
cputime | プロセスがこれまでに使用した累積CPU時間 | 秒 |
elapse | プロセスが実行されてからの経過時間 | 秒 |
vsize | Virtual memory size. 全体の仮想メモリ使用量(RAM + Swap + 予約) | KB |
rss | Resident Set Size. 現在のプロセスが占有している実際の物理メモリサイズ | KB |
pss | Proportional Set Size. 共有メモリを含む実際の物理メモリ使用量 | KB |
state | プロセスの現在の状態コード(例:R、S、D、T、Z など) | - |
ioread | 累積読み込みバイト数(read_bytes) | バイト(B) |
iowrite | 累積書き込みバイト数(write_bytes) | バイト(B) |
uid | このプロセスを実行したユーザーID | - |
cmd | 実行されたコマンドの短縮形式 | - |
longcmd | 実行されたコマンドの完全な形式(フルパスおよび引数を含む) | - |