性能の V$ ビューの使い方
いま何が起きているかを見る(Oracle)
書き方
SELECT sid, event, wait_class, state, seconds_in_wait, sql_id, blocking_session FROM v$session WHERE wait_class <> 'Idle'; SELECT event, total_waits, time_waited_micro, wait_class FROM v$system_event ORDER BY time_waited_micro DESC; SELECT sql_id, executions, elapsed_time, buffer_gets, sql_text FROM v$sql ORDER BY elapsed_time DESC FETCH FIRST 5 ROWS ONLY; SELECT sid, type, lmode, request, block FROM v$lock WHERE block = 1 OR request > 0; DBA_BLOCKERS DBA_WAITERS V$SESSION_WAIT V$SQLAREA
V$SESSION の EVENT は、そのセッションがいま待っているもの(STATE が WAITING のとき)。WAIT_CLASS が Idle の待ち(SQL*Net message from client など)は「仕事がなくて待っている」だけなので除いて考えます。V$SYSTEM_EVENT は起動してからの待ちの累計、V$SQL は共有プールにある SQL ごとの実行回数・経過時間(ELAPSED_TIME、マイクロ秒)・論理読み込み(BUFFER_GETS)。BLOCKING_SESSION は行ロックで待たせている相手の SID です。
例
SELECT sid, event, seconds_in_wait FROM v$session WHERE state = 'WAITING' AND wait_class <> 'Idle'; SELECT sql_id, elapsed_time / executions FROM v$sql ORDER BY 2 DESC;
実際に打って練習する
Oracle DBA コースの Lv42「何を待っているか 待機イベント」で覚えます。ブラウザの中のシミュレーターで、本物と同じように打って確かめられます。
すべてのレベルが、プラチナ以上のプランで遊べます。