Wait Events セクションは、待機の分布と性質を多角的に切り出すセクション群です。STATSPACK では AWR と異なり Wait Classes 別集計がないため、FG/BG を手動で区別しながらイベント名から種別を判断する必要があります。
1. Time Model System Stats— タイムモデル統計
何を表すか: DB Time の内訳を機能別に階層分解。sql execute / parse / PL/SQL execution / hard parse 等の時間と %DB time を示す。
- 読み方: sql execute elapsed time が DB Time の大半を占めるのは正常パターン。parse time / hard parse の比率が1%未満なら問題なし。DB CPU / DB Time 比率でCPU vs 待機のバランスを把握する。
- 閾値・注意点: 合計が DB Time を超えるのは内訳の入れ子構造のため正常。background elapsed time / cpu time は FG の DB Time とは別カウント。
- 関連セクション: Load Profile / Foreground Wait Events
- 使うシーン: DB Time の内訳分析。CPU vs 待機の精密分析
項目の意味と着目点
| 項目名 | 意味 | 影響箇所・着目点 |
|---|---|---|
| DB time | 全フォアグラウンドセッションの累積DB時間 | 全体の母数。他の項目は %DB time でここと比較 |
| DB CPU | DB が消費した CPU 時間 | DB time に対する比率が高いほど CPU 支配型 |
| sql execute elapsed time | SQL 実行フェーズの経過時間 | DB time のほぼ全量を占めるのが正常パターン |
| parse time elapsed | パース処理の経過時間 | DB time の 1% 超で Hard Parse 多発の疑い |
| hard parse elapsed time | ハードパースの経過時間 | parse time の大半を占める場合はバインド変数未使用 |
| PL/SQL execution elapsed time | PL/SQL 実行時間 | 大きい場合は PL/SQL プロシージャの内部処理が重い |
| background elapsed time | バックグラウンドプロセスの経過時間 | FG の DB time とは別カウント。BG I/O 問題の参考 |
| background cpu time | バックグラウンドの CPU 時間 | — |
2. Foreground Wait Events— フォアグラウンド待機イベント
何を表すか: ユーザ(Foreground)セッションの待機イベントを Total Wait Time 降順で表示。Idle イベントは末尾に分離される。
- 読み方: Idle を除いた非Idle イベントの1位が支配的ボトルネック。%Total Call Time ≥10% で「中」レベル以上。Avg wait(ms) で1回あたりの重さを確認する。
- 閾値・注意点: AWRと異なり Wait Class 列がない。イベント名から User I/O / Concurrency / Commit 等を自分で判断する必要がある。代表的なイベント名と分類は下表を参照。
- 関連セクション: Wait Event Histogram / Top SQL by Elapsed / Background Wait Events
- 使うシーン: ボトルネック種別の特定
項目の意味と着目点
| 項目名 | 意味 | 影響箇所・着目点 |
|---|---|---|
| Event | 待機イベント名 | Idle 以外で1位のイベントが主ボトルネック |
| Waits | 待機発生回数 | Avg wait との積で Total Wait Time を概算 |
| Total Wait Time (s) | 累積待機時間 | ランキング基準。DB time に対する %Total で重さを評価 |
| Avg wait (ms) | 1回あたり平均待機時間 | 大きい場合は個別の重い待機がある(ロック・遅い I/O) |
| Waits /txn | トランザクションあたり待機回数 | DML 集中度との相関確認 |
| %Total Call Time | Total Call Time に占める割合 | 30% 超のイベントは最優先で調査 |
代表的な非Idle 待機イベントの分類
| イベント名 | 種別(Wait Class相当) | 典型的な原因 |
|---|---|---|
| db file sequential read | User I/O | 索引アクセス・ランダムI/O。IOPS不足またはインデックス非効率 |
| db file scattered read | User I/O | Full Table Scan / Full Index Scan のマルチブロック読込 |
| db file parallel read | User I/O | プリフェッチ・並列クエリのI/O |
| direct path read | User I/O | 並列クエリ・大表スキャン(Buffer Cacheバイパス) |
| log file sync | Commit | COMMIT 頻度過多またはLGWRのI/O遅延 |
| enq: TX - row lock contention | Concurrency | 行ロック競合(DML 同時更新) |
| buffer busy waits | Concurrency | 同一ブロックへの同時アクセス(ホットブロック) |
| latch: cache buffers chains | Concurrency | Buffer Cache ラッチ競合(ホットブロック) |
| library cache lock | Concurrency | DDL と DML の競合・カーソル共有問題 |
| cursor: pin S wait on X | Concurrency | カーソルピン競合 |
| read by other session | User I/O | 同一ブロックを複数セッションが同時に読み込み |
3. Background Wait Events— バックグラウンド待機イベント
何を表すか: DBWR / LGWR / CKPT 等のバックグラウンドプロセスの待機イベント。AWRと同様の形式で表示されるが、Idle 待機が多くを占める。
- 読み方: 非Idle で注目すべきは db file async I/O submit / log file parallel write / control file parallel write 等の I/O 系。Avg wait が高い場合はストレージのレイテンシを疑う。
- 閾値・注意点: BG の Idle 待機(rdbms ipc message / DIAG idle wait 等)は通常無視。db file async I/O submit の Avg wait が高い場合は I/O サブシステムの応答性低下。
- 関連セクション: IO Stat by Function / Tablespace IO Stats / Foreground Wait Events
- 使うシーン: バックグラウンドプロセス起因の問題調査
項目の意味と着目点
| 項目名 | 意味 | 影響箇所・着目点 |
|---|---|---|
| Event | 待機イベント名 | Idle イベントは無視。I/O 系イベントを重点確認 |
| Waits | 待機発生回数 | LGWR: log file parallel write の Waits ≒ COMMIT 回数 |
| Total Wait Time (s) | 累積待機時間 | — |
| Avg wait (ms) | 1回あたり平均待機時間 | db file async I/O submit の Avg が高ければ I/O 遅延 |
| %Total | BG 全体のWait Time に占める割合 | — |
代表的な BG 待機イベントの分類
| イベント名 | 発生プロセス | 典型的な原因 |
|---|---|---|
| db file async I/O submit | DBWR | 非同期I/O投入時の遅延。ストレージ応答性の指標 |
| log file parallel write | LGWR | REDO ログのディスク書込待機。COMMIT レイテンシに直結 |
| control file parallel write | CKPT 等 | 制御ファイルへの書込。チェックポイント頻度の影響 |
| db file sequential read | RECO 等 | バックグラウンドでの単一ブロック読込 |
| oracle thread bootstrap | 各 BG プロセス | プロセス起動時の一時的な待機。通常無視 |
| rdbms ipc message | 各 BG プロセス | Idle 待機。無視 |
4. Wait Events (fg and bg)— FG+BG合算待機イベント
何を表すか: Foreground と Background を合算した待機一覧。非Idle ブロックと Idle ブロックに分けて表示される。AWR には存在しない STATSPACK 固有のセクション。
- 読み方: FG + BG の合算なので Foreground のみより Total Wait Time が増える。FG と BG の個別セクションと比較することで、どちらのプロセスが主因かを判断する。
- 閾値・注意点: FG と BG が重複集計される。「どちらのプロセスで発生しているか」の確認は FG / BG の個別セクションで行う。
- 関連セクション: Foreground Wait Events / Background Wait Events
- 使うシーン: FG+BG 通算での待機ランキング確認
項目の意味と着目点
| 項目名 | 意味 | 影響箇所・着目点 |
|---|---|---|
| Event | 待機イベント名 | ボトルネックの性質を判別 |
| Waits | 待機発生回数(FG+BG合算) | 頻度の確認 |
| %Tim out | タイムアウトした割合 | 100% = 常にタイムアウト(Idle 待機の特徴) |
| Total Wait Time (s) | 累積待機時間(FG+BG合算) | FG 単体より大きくなる。FG・BG の按分を個別セクションで確認 |
| Avg wait (ms) | 1回あたり平均待機時間 | 個別待機の重さ |
| Waits /txn | トランザクションあたり待機回数 | DML 負荷との相関 |
| %Total Call Time | Total Call Time に占める割合 | Idle 除外後の相対比較 |
5. Wait Event Histogram— 待機イベントヒストグラム
何を表すか: 各待機イベントの発生時間を <1ms / <2ms / <4ms / <8ms / <16ms / <32ms / ≤1s / >1s のバケツに分けて割合表示する。
- 読み方: >1s バケツに値があるイベントはロングテール待機(1秒超えの極端に遅い待機)が存在する。件数は少なくても平均レイテンシに大きく影響するため要注意。
- 閾値・注意点: db file sequential read の大部分が <2ms バケツに収まれば I/O は健全。<16ms 以降に分散する場合はストレージの応答性低下。
- 関連セクション: Foreground Wait Events / File IO Stats / Top SQL by Elapsed
- 使うシーン: 待機のロングテール検出・SLA違反の原因調査
項目の意味と着目点
| 項目名 | 意味 | 影響箇所・着目点 |
|---|---|---|
| Event | 待機イベント名 | Foreground Wait Events と同一イベントを対応させて読む |
| <1ms〜<32ms 各バケツ | そのレンジに収まった待機の割合(%) | db file sequential read はほぼ <4ms 以内が正常 |
| ≤1s バケツ | 32ms〜1s の範囲に収まった待機の割合(%) | I/O の大半がここに入る場合はストレージ応答が遅い |
| >1s バケツ | 1秒超の待機の割合(%) | 値がある場合はロングテール待機あり。Lock / Full Scan 等を疑う |