Wait Eventの分類
Oracleの待機イベントは300種類以上ありますが、大きく4つのカテゴリに分類できます。 Top 5 Timed Eventsの上位イベントがどのカテゴリに属するかを判断することが診断の第一歩です。
全体読み方フローは PART 01 を、Top 5 Eventsの基礎は PART 04 — Top 5 Timed Events(AWR入門) を参照。
| カテゴリ | 代表的なイベント | 主な原因 |
|---|---|---|
| User I/O | db file sequential read, db file scattered read | 物理I/O、インデックス不使用、フルスキャン |
| System I/O | log file parallel write, db file parallel write | REDOログ書き込み、DBライタ |
| Concurrency | buffer busy waits, latch系, enqueue系 | 競合、Latch待ち、ロック |
| Commit | log 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 dblink | DBリンク先からの応答待ち | DBリンクのネットワーク遅延 |
競合系待機イベント
| Wait Event | 意味 | 対処の方向性 |
|---|---|---|
| buffer busy waits | バッファブロックの競合 | ホットブロック → PART 08 |
| latch: cache buffers chains | バッファキャッシュのLatch競合 | ホットブロック → PART 08 |
| enq: TX - row lock contention | 行ロック競合 | トランザクション設計見直し → PART 08 |
| log file sync | COMMITの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等を参照