AWRに慣れた状態でSTATSPACKレポートを渡されると、どこから読めばいいのか一瞬手が止まります。Top 5 Timed Eventsにたどり着くまでの3ステップを、AWR経験者がつまずきやすいポイントに絞って整理しました。

本ガイドの位置づけ

Statspackレポート読み方フロー図

図1: Statspackレポート読み方フロー(Load Profile→Top 5 Events→SQL統計→Instance IO→Memory Summary)

本シリーズはSTATSPACKレポートを実際に受け取ったときに、どこからどう読むかを解説する実践ガイドです。 各セクションの項目定義は STATSPACKセクション定義書(全10回) を参照してください。

💡 ガイドの使い方

本記事(PART 01)で全体フローを把握した後、問題の種類に応じたPARTへ直接ジャンプしてください。各PARTは独立して読めます。

AWRとの主な違い

STATSPACKはAWRと同様のパフォーマンス情報を提供しますが、いくつかの重要な差異があります。 読み方にも影響するため、最初に把握しておきます。

観点STATSPACKAWR
ライセンスOracle SE / EE(追加費用なし)Oracle Diagnostics Pack(有償)
全体負荷の指標Elapsed Time + DB CPU(Time Model)DB Time(専用指標)
SQL識別子Hash Value(Old Hash Value)SQL_ID
PGA Advisory限定的(post-07に一部あり)PGA Memory Advisoryが充実
SGA Advisorypost-10(SGA / Advisory) に集約post-07に集約
Latch詳細Latch Sleep Breakdown(時系列あり)Latch Activityのみ

AWRとSTATSPACKの全体的な違いは PART 01 — STATSPACKセクション定義書 はじめに を参照。

STEP 1 — レポートヘッダで環境・期間を確認する

レポートヘッダ(Database / Instance Information · Snapshot Information)でスナップショット情報を確認します。 ここを確認しないと、誤った期間のデータを分析するリスクがあります。

確認項目どこを見るかチェックポイント
スナップショット期間Begin / End Snapshot Id・日時問題発生時刻を含む期間か
Elapsed TimeElapsed: xx.xx (mins)期間の長さを把握(後続の計算に使う)
DB TimeDB Time: xx.xx (mins)(Time Model)全体負荷の基準値(AWRと同様)
インスタンス情報Database / Instance / Host対象サーバーと一致しているか
STATSPACKレベルSnap Levelレベル5以上でSQL全文が収録される

レポートヘッダの各項目詳細は PART 03 — レポートヘッダ詳細(定義書) を参照。

STEP 2 — Elapsed Timeと主要指標で全体を把握する

AWRのように単独の「DB Time」指標はありませんが、Load ProfileInstance Efficiencyを合わせて読むことで全体の重さを判断します。

確認箇所見る値判断の目安
Time Model System StatsDB CPU / DB Time %80%超 → CPUボトルネック。低い → 待機が多い
Load ProfileRedo size / Transactions / Logical reads(/sec)増加傾向・突出した値がないか
Instance EfficiencyBuffer Nowait % / Buffer Hit %Buffer Hit % 95%未満 → メモリ不足の可能性
Load ProfileHard Parse %5%超 → バインド変数未使用の可能性

STEP 3 — Top 5 Timed Eventsで問題の種類を特定する

Top 5 Timed Events(レポートヘッダの末尾)が問題の方向性を示す最重要指標です。

上位イベントの種類問題の方向性次に読むPART
CPU time が1位CPU使用率が高いPART 03 CPU分析
db file sequential / scattered readI/OボトルネックPART 06 I/O分析
buffer busy waits / latch系バッファ・Latch競合PART 08 Latch/Lock
log file syncコミット過多・REDO I/OPART 04 Wait分析
enq: TX - row lock contention行ロック競合PART 08 Latch/Lock

読み方フロー早見表

1
レポートヘッダでスナップショット期間・インスタンスを確認
問題発生時刻を含む期間か・STATSPACKレベルを確認する
2
Time Model + Load Profile + Instance Efficiency で全体の重さを把握
DB CPU % / Buffer Hit % / Hard Parse % を確認する
3
Top 5 Timed Events で問題の種類を特定
CPU / I/O / 競合 / アプリ系の方向性を絞り込む
4
問題の種類に応じた専門PARTへ進む
CPU: PART 03 / Wait: PART 04 / SQL: PART 05 / I/O: PART 06 / メモリ: PART 07 / Latch: PART 08

STATSPACKの読み方でよくある誤り

読み方フローを理解していても、出発点の判断を誤ると診断全体が外れる。

誤り何が起きるか正しい読み方
スナップショット期間に問題発生時刻が含まれているか確認しない通常業務時間帯のレポートで夜間バッチの問題を診断しようとしても、平均値が薄まって異常が見えないレポートヘッダのBegin/End Snap Timeが問題発生時刻をカバーしているか必ず確認する
STATSPACKレベルを確認せずにSQL統計がないと言うデフォルトのLevel 5ではSQL統計が含まれないため、SQL分析できないと誤解するSPREPORTのReport Header「Stats level」でレベルを確認。SQL分析にはLevel 6以上が必要
Top 5 Timed Eventsだけで原因を断定し専門PARTを飛ばすTop 5は入口に過ぎず、同じ「db file sequential read」でも索引設計不備・Buffer Cache不足・ストレージ遅延と原因が異なるTop 5は方向性を絞るためのもの。必ず対応する専門PARTで詳細を確認してから結論を出す