ロックツリー
ホーム画面 > プロジェクト選択 > 分析 > ロックツリー
一日の間に発生したロック(lock)の推移を分析するツールです。この機能によってロックを発生させたセッション(lock holder)と待機しているセッション(lock waiter)に対するツリー構造を視覚的に確認できます。特定時点で発生したロック情報のholderとwaiter間の関係を分析できます。
主な機能は次のとおりです。
-
ロック推移分析: 設定した照会期間中に発生したロックの推移を時間とともに追跡し、グラフで表示します。これにより、ロックがどのように発生し、解消されるかを視覚的に把握できます。
-
ロックHolderおよびWaiter確認: 各ロックに対するholderとwaiterをツリー構造で確認できます。これにより、特定のロックが発生した状況でロックを発生させたセッションと待機するセッションとの関係を把握できます。
-
セッション間の関係分析: ロックを発生させたセッションと待機するセッションとの関係を分析し、クエリー実行およびトランザクション処理過程で発生したロックの原因を識別できます。
これにより、データベース管理者はロック関連の問題を迅速に識別して解決でき、データベースの性能を最適化できます。
基本的な使い方
目的の日付と時間を設定し、数字2の一覧からインスタンスを選択してください。設定した時間にロックが発生した場合は、lock wait sessionsと画面下のテーブルに表示されているデータを表示します。
Global Lock情報の確認
クラスターで構成されたOracleデータベース環境で、Global Lock情報の確認は、いろいろメリットがあります。 特に、Oracle Real Application Clusters (RAC) 環境で、このような情報は性能の最適化と問題の解決に不可欠です。
クラスターで構成された環境であれば、インスタンスからクラスターを選択できます。
-
Global Lock Wait Sessions
選択した時間範囲で発生したGlobal Lockの待機セッション数を時間帯ごとに可視化して表示します。 特定の時間帯に発生したロックの待機数を一目で把握できます。 各色は異なるインスタンスを表し、ロックが発生したインスタンスごとに区分されて表示します。
-
Global Lock Tree
ロックに関する詳細情報をツリー構造で確認できます。 ロックが発生したインスタンス、セッションID(sid)、セッション状態(status) など重要な情報が含まれます。 ロックのホルダータイプ(holder type)とロックモード(lock mode)、そしてロックの待機タイプ(waiter type)を通じて、ロックの原因と影響を迅速に把握できます。
ツリー構造により、どのセッションがロックを掛けており、どのセッションが待機中なのかを把握できます。
クラスターを選択し、照会できる最大の時間範囲は3時間です。
-
RAC環境では、複数のインスタンスが同じデータに同時にアクセスできます。 Global Lock情報は、このような同時アクセス状況でデータの一貫性を確保するための主要なメカニズムの1つです。 これをモニタリングすることで、データ一貫性の維持有無を確認できます。
-
Global Lock待ち時間は、システムの性能に大きな影響を与える可能性があります。 クラスターのインスタンス間で発生するGlobal Lockの競合をモニタリングすると、性能低下の原因となるボトルネックを早期に検知できます。
-
Global Lock情報は、トランザクションがクラスターでどのように処理されるかに対する重要なデータを提供します。 同時実行制御が適切に行われないと、トランザクションの待ち時間が長くなったり、デッドロックが発生する可能性があります。
-
RAC環境では、インスタンス間の負荷分散が非常に重要です。 Global Lock情報を通じて、どのインスタンスがより多く競合しているのかを把握でき、この情報で負荷を再分配したり、リソース管理を改善できます。
カラム情報の案内
カラム情報に関する詳しい内容は、次のリンクを参照してください。
項目 | 説明 |
---|---|
sid | セッションのID |
cpu(xos) | XOSをインストールした場合、収集されるCPUの使用率 |
serial# | 同一のセッションidを使用した場合、判別するために増加させる値 |
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(マルチデータベースをサポートする場合のみ) |
rss(xos) | XOSエージェントで収集するOSメトリクス |
pss(xos) | XOSエージェントで収集するOSメトリクス |
ioread(xos) | XOSエージェントで収集するOSメトリクス |
iowrite(xos) | XOSエージェントで収集するOSメトリクス |
WhaTapは、クライアントに関する情報をデフォルトで保存します。