Wait Eventの分類

Oracleの待機イベントは300種類以上ありますが、大きく4つのカテゴリに分類できます。 Top 5 Timed Eventsの上位イベントがどのカテゴリに属するかを判断することが診断の第一歩です。

全体読み方フローは PART 01 を、Top 5 Eventsの基礎は PART 04 — Top 5 Timed Events(AWR入門) を参照。

カテゴリ代表的なイベント主な原因
User I/Odb file sequential read, db file scattered read物理I/O、インデックス不使用、フルスキャン
System I/Olog file parallel write, db file parallel writeREDOログ書き込み、DBライタ
Concurrencybuffer busy waits, latch系, enqueue系競合、Latch待ち、ロック
Commitlog file syncコミット頻度が高い

Wait Eventsセクション全体の詳細定義は PART 04 — Wait Events Statistics 詳細(定義書) を参照。

I/O系待機イベント

Wait Event意味対処の方向性
db file sequential read索引を使ったシングルブロック読み込みインデックス不適切 / I/O性能不足 → PART 06
db file scattered readフルスキャンのマルチブロック読み込み不要なフルスキャン → PART 05
direct path readバッファを介さない直接読み込みソート・並列クエリ → 一時表領域確認
direct path read temp一時セグメントからの読み込みソート/ハッシュのメモリ不足 → PART 07

ネットワーク・アプリ系待機イベント

Wait Event意味対処の方向性
SQL*Net message from clientクライアントからのメッセージ待ち(アイドル)通常はアイドル。割合が極端に高ければアプリ側の処理を確認
SQL*Net more data to clientクライアントへのデータ送信待ちネットワーク帯域 / 大量データのフェッチ
SQL*Net message from dblinkDBリンク先からの応答待ちDBリンクのネットワーク遅延

競合系待機イベント

Wait Event意味対処の方向性
buffer busy waitsバッファブロックの競合ホットブロック → PART 08
latch: cache buffers chainsバッファキャッシュのLatch競合ホットブロック → PART 08
enq: TX - row lock contention行ロック競合トランザクション設計見直し → PART 08
log file syncCOMMITのREDOログ書き込み待ちコミット頻度削減・ディスクI/O改善

ドリルダウン手順

1
Top 5 Timed Events で上位イベントを確認
Wait Event名と % DB Time を記録する
2
カテゴリを分類(User I/O / System I/O / Concurrency / Commit)
上表でカテゴリを判定する
3
該当セクションを深掘り
I/O系 → PART 06、競合系 → PART 08、SQL問題 → PART 05
4
Wait Event別詳細を確認
Wait/Undo/Latch詳細(定義書) でBuffer Wait Statistics / Enqueue Activity等を参照