STATSPACKレポートを受け取って、最初の3分で「問題あり/なし」を判断しなければならない場面がよくあります。細かい数値を全部読んでいては間に合いません。Time ModelのDB CPU比率やHard Parse比率など、短時間でアタリを付けるための6つの指標に絞って解説します。

ヘルスチェックの目的

STATSPACKヘルスチェック指標図

図1: STATSPACKヘルスチェック指標の読み方

STATSPACKレポートを受け取ったとき、詳細分析の前に「問題があるかどうか」を短時間で判断することが重要です。 本記事で挙げる指標を数分でスキャンするだけで、問題の有無と大まかな方向性が絞り込めます。

全体フローは PART 01 — 全体読み方フロー を参照。

Elapsed Time比率でざっくり判断

AWRのDB Timeに相当する直接指標はSTATSPACKにありません。代わりに Time Model System StatsDB CPU(% DB Time)と Load ProfileLogical reads/sTransactions/s の組み合わせで全体負荷を判断します。

Time Model DB CPU %判断アクション
80%超CPUボトルネックPART 03 CPU分析
20〜80%CPU+待機の混在Top 5 Events で待機イベントを確認
20%未満待機がボトルネックPART 04 Wait分析

Time Model System Statsの詳細は PART 04 — Wait Events Statistics 詳細(定義書) を参照。

CPU使用率の目安(Time Model)

Time Model System Stats はSTATSPACKでも確認できます。 DB CPUsql execute elapsed timeparse time elapsed の割合が診断の基点です。

Time Model 項目% DB Time の目安判断
DB CPUバランスを確認高すぎ → SQL/ハードパース問題
parse time elapsed10%超ハードパース過多の可能性
PL/SQL execution elapsed time30%超PL/SQLのチューニングが必要

キャッシュヒット率の目安

Instance Efficiency Percentages(レポートヘッダ内)でキャッシュ効率を確認します。

指標目安問題時のアクション
Buffer Nowait %99%以上低い場合 → buffer busy waitsを確認
Buffer Hit %95%以上低い場合 → PART 07 メモリ分析
Library Hit %99%以上低い場合 → ハードパース・共有プール不足
Latch Hit %99.9%以上低い場合 → PART 08 Latch分析

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

Hard Parse比率の目安

Load ProfileHard ParsesParses の比率でバインド変数問題を判断します。

Hard Parse比率判断
5%未満良好
5〜20%要確認 — バインド変数未使用の可能性
20%超問題ありPART 03 CPU分析 で詳細確認

複数指標が同時に問題の場合

複数の指標が同時に悪化している場合は、単独指標よりも組み合わせで判断することで診断の精度が上がる。

組み合わせパターン推定される原因参照PART
DB CPU % 高 + Hard Parse比率 高 バインド変数未使用によるハードパース過多 PART 03 CPU分析
Buffer Hit % 低 + db file sequential readが上位 インデックスが機能していないか、データが大きすぎてキャッシュに乗らない PART 06 I/O分析
Latch Hit % 低 + enq: TX – row lock contention ロック競合とLatch競合が同時発生(特定テーブルへの集中アクセス) PART 08 Latch/Lock
Buffer Hit % 低 + バッチ直後 大量データを読むバッチがキャッシュを圧迫、通常クエリが物理I/Oに PART 07 メモリ分析

ヘルスチェックリスト

チェック項目見る場所目安問題時のアクション
DB CPU %Time Model System Statsバランスを確認PART 03
Top 1 Wait EventTop 5 Timed EventsCPU timeが1位が理想PART 04
Buffer Hit %Instance Efficiency95%以上PART 07
Latch Hit %Instance Efficiency99.9%以上PART 08
Hard Parse比率Load Profile5%未満PART 03
重いSQLSQL ordered by Elapsed Time突出したSQLがないかPART 05

ヘルスチェックでよくある誤り

ヘルスチェックの指標は「正常の入口」であり、これだけで全体を判断しようとすると見落としが生じる。

誤り何が起きるか正しい使い方
Buffer Hit % 95%超で「キャッシュ問題なし」と判断する全体の命中率が高くてもHot Segmentへの集中や大量Full Scanは見逃すヘルスチェック後にI/O分析(PART 06)とSQL分析(PART 05)で実際のI/Oパターンを確認する
Hard Parse比率が低いので「SQLは問題なし」と判断するHard Parseが少なくてもElapsed/Execute が突出するSQLはありえるSQL ordered by Elapsed Timeで重いSQLの有無を独立して確認する
チェック項目がすべて閾値内なので「問題なし」と報告する閾値は目安であり、業務特性(バッチ多用/OLTP中心)によって許容値は変わる前回比較(PART 09)で変化傾向を確認し、「正常値だが悪化傾向」を見逃さない