本書の位置づけ

本書は、Oracle Database が出力する STATSPACK レポートの各セクションについて、中級者を対象に「何を表すか」「どこを見るか」「異常値の判断基準」を1セクション=1行でまとめた定義書です。

STATSPACKのセクション構成は Oracle 10g〜19c でほぼ共通です。本シリーズで解説する各セクションの読み方・着目点は、どのバージョン・OS のレポートにも適用できます。

想定読者

  • STATSPACKを2回以上見たことがあり、Load Profile・Top 5 Timed Events までは読める方
  • 自分でチューニング起点を探したい開発者/DBA
  • AWRライセンスがない環境でパフォーマンス調査をする方

STATSPACKとAWRの違い

AWR(Automatic Workload Repository)が Oracle Diagnostics Pack(有償)に含まれるのに対し、STATSPACK は追加ライセンスなしで利用できる無償のパフォーマンス収集ツールです。主な違いを以下に示します。

AWRとSTATSPACKの主な比較
観点STATSPACKAWR
ライセンス追加不要(無償)Diagnostics Pack(有償)
データ取得方式手動または dbms_job/scheduler自動(デフォルト60分間隔)
Top Events 表示数Top 5 Timed EventsTop 10 Foreground Events
ADDM自動診断なしあり
ASH(Active Session History)なしあり
Wait Classes 表なしあり
SQL識別子Old Hash ValueSQL ID(英数字)
IO Profile(秒あたり)なし(IO Stat by Functionで代替)あり
セグメント統計Segments by Reads / Buffer Busyより多種(Row Lock Waits等)

STATSPACKレポートの大構造

STATSPACKレポートは以下の主要セクションで構成されます。

  1. レポートヘッダ — DB/Host/Snap情報、Cache Sizes、Load Profile、Instance Efficiency、Shared Pool Stats、Top 5 Timed Events、Host/Instance CPU、Memory Stats
  2. Time Model System Stats — DB Timeの機能別内訳
  3. Foreground / Background Wait Events — FG/BGセッションの待機イベント詳細
  4. Wait Events (fg and bg) — FG+BG合算の待機一覧
  5. Wait Event Histogram — 待機時間分布(ミリ秒バケツ別)
  6. SQL Statistics — CPU/Elapsed/Gets/Reads/Executions/Parse/Sharable Memory/Version Count 別ランキング
  7. Instance Activity Stats — V$SYSSTAT 由来の全カウンタ
  8. OS Statistics — OS全体のCPU・メモリ統計
  9. IO Stat by Function / Tablespace IO / File IO — I/O統計の多角的集計
  10. Memory Dynamic Components / Buffer Pool Advisory — メモリとアドバイザ
  11. Buffer Pool Statistics / PGA Aggr Target Stats — バッファプールとPGA統計
  12. PGA Memory Advisory / Buffer Waits / Enqueue Activity — PGAアドバイザと競合
  13. Undo Segment Summary / Stats — UNDOセグメント統計
  14. Latch Activity / Latch Sleep Breakdown — ラッチ競合の詳細
  15. Segment Statistics — Reads / Buffer Busy Waits によるセグメントランキング
  16. Dictionary Cache / Library Cache Activity — 共有プールの詳細統計
  17. Shared Pool Advisory / SGA Memory Summary / SGA Breakdown — メモリ配分
  18. init.ora Parameters — 起動パラメータ

推奨閲覧順 — チューニング起点を探す流れ

AWRと同様、闇雲に全セクションを読むのではなく、まずヘッダで全体像をつかみ、待機 or CPU のどちらが支配的かで分岐するのがセオリーです。

STEP 1: レポートヘッダ

Snap Info / DB Time / Load Profile / Instance Efficiency / Top 5 Timed Events を確認。Elapsed と DB Time から AAS(平均アクティブセッション)を算出する。

STEP 2: 待機 or CPU の判別

  • 待機支配 → Foreground Wait Events(詳細)→ Wait Event Histogram → 原因SQL を探す
  • CPU支配 → Time Model System Stats → SQL by CPU Time

STEP 3: 原因 SQL の特定

SQL Statistics の各ランキング(CPU / Elapsed / Gets / Reads / Executions / Parse Calls)から原因SQLを特定する。

STEP 4: I/O・セグメントの特定

Tablespace IO Stats / File IO Stats / Segments by Physical Reads / Buffer Busy Waits を確認する。

STEP 5: メモリ・キャッシュ確認

Buffer Pool Statistics / PGA Aggr Target Stats / Buffer Pool Advisory / PGA Memory Advisory / Shared Pool Advisory でサイジングを確認する。

STEP 6: パラメータ・環境

init.ora Parameters / OS Statistics で設定・環境を裏付ける。

各定義シートの列構成

本シリーズの後続記事では、各セクションを以下の列構成でまとめています。

  • No: 連番
  • セクション名: STATSPACK上の英語表記(見出し)
  • 日本語訳: 通称・日本語訳
  • 何を表すか: このセクションの意味と主目的
  • 主要な列: 着目すべきカラム名
  • 読み方: 「ここをまず見る」「正常パターン」「異常パターン」の指針
  • 閾値・注意点: 数値的な目安、罠、誤読されやすい箇所
  • 関連セクション: 一緒に確認すべき他セクション
  • 使うシーン: このセクションが特に有用な場面