本書の位置づけ
本書は、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 は追加ライセンスなしで利用できる無償のパフォーマンス収集ツールです。主な違いを以下に示します。
| 観点 | STATSPACK | AWR |
|---|---|---|
| ライセンス | 追加不要(無償) | Diagnostics Pack(有償) |
| データ取得方式 | 手動または dbms_job/scheduler | 自動(デフォルト60分間隔) |
| Top Events 表示数 | Top 5 Timed Events | Top 10 Foreground Events |
| ADDM自動診断 | なし | あり |
| ASH(Active Session History) | なし | あり |
| Wait Classes 表 | なし | あり |
| SQL識別子 | Old Hash Value | SQL ID(英数字) |
| IO Profile(秒あたり) | なし(IO Stat by Functionで代替) | あり |
| セグメント統計 | Segments by Reads / Buffer Busy | より多種(Row Lock Waits等) |
STATSPACKレポートの大構造
STATSPACKレポートは以下の主要セクションで構成されます。
- レポートヘッダ — DB/Host/Snap情報、Cache Sizes、Load Profile、Instance Efficiency、Shared Pool Stats、Top 5 Timed Events、Host/Instance CPU、Memory Stats
- Time Model System Stats — DB Timeの機能別内訳
- Foreground / Background Wait Events — FG/BGセッションの待機イベント詳細
- Wait Events (fg and bg) — FG+BG合算の待機一覧
- Wait Event Histogram — 待機時間分布(ミリ秒バケツ別)
- SQL Statistics — CPU/Elapsed/Gets/Reads/Executions/Parse/Sharable Memory/Version Count 別ランキング
- Instance Activity Stats — V$SYSSTAT 由来の全カウンタ
- OS Statistics — OS全体のCPU・メモリ統計
- IO Stat by Function / Tablespace IO / File IO — I/O統計の多角的集計
- Memory Dynamic Components / Buffer Pool Advisory — メモリとアドバイザ
- Buffer Pool Statistics / PGA Aggr Target Stats — バッファプールとPGA統計
- PGA Memory Advisory / Buffer Waits / Enqueue Activity — PGAアドバイザと競合
- Undo Segment Summary / Stats — UNDOセグメント統計
- Latch Activity / Latch Sleep Breakdown — ラッチ競合の詳細
- Segment Statistics — Reads / Buffer Busy Waits によるセグメントランキング
- Dictionary Cache / Library Cache Activity — 共有プールの詳細統計
- Shared Pool Advisory / SGA Memory Summary / SGA Breakdown — メモリ配分
- 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上の英語表記(見出し)
- 日本語訳: 通称・日本語訳
- 何を表すか: このセクションの意味と主目的
- 主要な列: 着目すべきカラム名
- 読み方: 「ここをまず見る」「正常パターン」「異常パターン」の指針
- 閾値・注意点: 数値的な目安、罠、誤読されやすい箇所
- 関連セクション: 一緒に確認すべき他セクション
- 使うシーン: このセクションが特に有用な場面