Oracleのパフォーマンス分析というと「AWR(Automatic Workload Repository)」が思い浮かぶかもしれませんが、AWRはEnterprise Edition(EE)限定で、Diagnostic Packのライセンスが必要です。
一方、Standard Edition(SE)やライセンス制限を意識する環境では、Statspackが今もなお根強く使われています。
この記事では、Statspackの基本的な役割、仕組み、AWRとの違い、導入前の理解ポイントまで、実務で活用できる視点で徹底解説します。
💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?
Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?
✅ Statspackとは?
Statspack(STATistics PACKage)とは、Oracleが提供するパフォーマンス診断用の統計情報を収集・分析するためのツールです。
主に以下の情報を収集し、ボトルネックの可視化や傾向分析を可能にします。
- 各種待機イベント(Wait Events)
- バッファキャッシュやライブラリキャッシュのヒット率
- 負荷の高いSQL(Top SQL)
- LatchやI/Oの状況 など
📌 ポイント:StatspackはSEでも使用可能(無償)
🔍 AWRとの違い
StatspackとAWRは非常に似ていますが、いくつか重要な違いがあります。以下に比較表を示します。
| 項目 | Statspack | AWR(Automatic Workload Repository) |
|---|---|---|
| 利用可能エディション | Standard Edition(SE)でも可 | Enterprise Edition(EE)のみ |
| ライセンス | 無償 | Oracle Diagnostic Packが必要 |
| スナップショット取得方式 | 手動 or ジョブでの定期実行 | 自動(毎時間) |
| 保存先 | perfstatスキーマ | SYSAUX表領域 |
| レポート作成スクリプト | spreport.sql | awrrpt.sql |
| 拡張性 | カスタマイズ可能 | 拡張性は低い(Oracle管理下) |
Statspackは、AWRの前身にあたるツールですが、今でもSE環境やライセンス制約があるケースでは最適な選択肢です。
📊 Statspackの全体イメージ
以下は、Statspackの構成と処理の流れを簡易的な図にしたものです。
┌────────────┐
│ ユーザー(DBA) │
└────┬───────┘
│手動または定期ジョブで実行
▼
┌────────────┐
│ statspack.snap │ ← スナップショット取得
└────┬───────┘
▼
┌────────────┐
│ perfstatスキーマ│ ← 統計情報を蓄積
└────┬───────┘
▼
┌────────────┐
│ spreport.sql │ ← 差分からレポート生成
└────────────┘
📌 「snap」処理で収集されたデータはDB内のperfstatスキーマに蓄積され、2つのsnap_id間で差分を取ってレポートを生成します。
🧠 Statspackで取得される主な情報
Statspackでは多岐にわたる情報が収集されます。特に以下の情報が有益です。
| カテゴリ | 説明 |
|---|---|
| Wait Events | セッションが待機したイベント(I/O、ラッチなど) |
| Instance Activity | 論理読取、物理読取、Redo生成量など |
| SQL Statistics | 実行回数・論理読取が多いSQL(Top SQL) |
| Latch Statistics | ラッチ競合や取得試行状況 |
| Buffer/Library Cache | キャッシュヒット率、再利用率など |
📌 Statspackのレポートでは、「Top 5 Timed Events」や「Instance Efficiency Percentages」などが特に注目ポイントです。
📈 レポート出力の例(spreport.sql)
Statspackで出力されるレポートには、以下のような情報が含まれます。
🔹 Top 5 Timed Events
Top 5 Timed Events
~~~~~~~~~~~~~~~~~~
Event Waits Time (s) % Total Call Time
----------------------------- ------ -------- -----------------
db file sequential read 1234 124 33.9
log file sync 456 85 23.2
CPU time 76 20.8
...
この表から、「どの待機イベントに時間がかかっているか」を把握できます。
💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?
Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?
⚙️ Statspackを利用する際のポイント
✅ 活用シーン
- Standard Editionでパフォーマンス調査をしたいとき
- AWRライセンスが使用できない環境
- ライセンス費用を抑えつつ性能傾向を見たいとき
✅ 注意点
| 注意点 | 補足内容 |
|---|---|
| スナップショットは定期取得が推奨 | 1時間毎、または2時間毎など |
| 表領域サイズに注意 | PERFSTATスキーマ用の表領域が肥大化する場合がある |
| データ保持ポリシーを考慮 | 古いスナップを定期的に削除する運用が必要 |
🗂️ Statspackの構成要素(スキーマ)
Statspackは、専用スキーマ PERFSTAT 内に統計情報を格納します。代表的な表は以下の通りです。
| 表名 | 説明 |
|---|---|
| STATS$SNAPSHOT | スナップショットのメタ情報(snap_id等) |
| V$SYSTEM_EVENT | システム全体の待機イベント情報 |
| STATS$SQL_SUMMARY | SQLの実行統計 |
| V$LATCH | ラッチ統計 |
| V$INSTANCE_RECOVERY | インスタンスリカバリ関連情報 |
🤔 よくある質問(FAQ)
Q1. AWRの代替として使って問題ないですか?
→ SE環境やライセンス制約がある場合は問題ありません。
ただし、AWRに比べて自動性や統合性には欠けるため、手動での管理・分析が必要です。
✅ まとめ
| ポイント | 内容 |
|---|---|
| ✅ ライセンス不要 | StatspackはOracle Standard Edition(SE)でも使用でき、ライセンスコストがかからないため、商用環境でも導入しやすい。 |
| ✅ 収集範囲が広い | 待機イベント、SQL実行情報、ラッチ、キャッシュ統計など、ボトルネック特定に必要な情報が一通り収集できる。 |
| ✅ 自動ではない | スナップショット取得は手動またはジョブ登録が必要で、AWRに比べて運用の工夫が求められる。 |
| ✅ 古いが有用 | AWR登場以降も、ライセンス制約やコストを理由にStatspackが現場で活躍するケースは多い。 |
| ✅ 計画的な運用がカギ | 表領域サイズの管理やスナップ保持方針(定期削除)を含めた計画的な設計が重要。 |
[参考]
Oracle® Databaseパフォーマンス・チューニング・ガイド 19c




コメント