Statspackとは?SEでも使えるOracle性能診断ツールの基本と活用法

AWR/statspack

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は非常に似ていますが、いくつか重要な違いがあります。以下に比較表を示します。

項目StatspackAWR(Automatic Workload Repository)
利用可能エディションStandard Edition(SE)でも可Enterprise Edition(EE)のみ
ライセンス無償Oracle Diagnostic Packが必要
スナップショット取得方式手動 or ジョブでの定期実行自動(毎時間)
保存先perfstatスキーマSYSAUX表領域
レポート作成スクリプトspreport.sqlawrrpt.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_SUMMARYSQLの実行統計
V$LATCHラッチ統計
V$INSTANCE_RECOVERYインスタンスリカバリ関連情報

🤔 よくある質問(FAQ)

Q1. AWRの代替として使って問題ないですか?

SE環境やライセンス制約がある場合は問題ありません。
ただし、AWRに比べて自動性や統合性には欠けるため、手動での管理・分析が必要です。


✅ まとめ

ポイント内容
✅ ライセンス不要StatspackはOracle Standard Edition(SE)でも使用でき、ライセンスコストがかからないため、商用環境でも導入しやすい。
✅ 収集範囲が広い待機イベント、SQL実行情報、ラッチ、キャッシュ統計など、ボトルネック特定に必要な情報が一通り収集できる。
✅ 自動ではないスナップショット取得は手動またはジョブ登録が必要で、AWRに比べて運用の工夫が求められる。
✅ 古いが有用AWR登場以降も、ライセンス制約やコストを理由にStatspackが現場で活躍するケースは多い。
✅ 計画的な運用がカギ表領域サイズの管理やスナップ保持方針(定期削除)を含めた計画的な設計が重要。


[参考]
Oracle® Databaseパフォーマンス・チューニング・ガイド 19c

💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?

Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?

コメント

タイトルとURLをコピーしました