CPU使用率やキャッシュヒット率の数字だけを見て「問題なし」と判断し、後で痛い目に遭ったことはないでしょうか。目安の数値を鵜呑みにして見落としをした経験から、判断基準を整理しました。

ヘルスチェックの目的

ヘルスチェック指標図

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

AWRを受け取って最初にすることは、詳細分析の前に「問題があるかどうか」を短時間で判断することです。 ここで挙げる指標を数分でスキャンするだけで、問題の有無と大まかな方向性を絞り込めます。

全体フローは PART 01 — 全体読み方フロー を参照。チェックリスト全体は PART 07 — 分析チェックリスト(AWR入門) も合わせて確認してください。

DB Time 比率でざっくり判断

DB Time ÷ Elapsed Timeが最初の判断軸です。 DB Timeはすべてのセッションが消費したフォアグラウンド時間の合計で、 CPUコア数×Elapsed Timeを超えると明らかな過負荷サインです。

比率判断アクション
1未満正常他の指標も念のため確認
1〜CPUコア数要確認Top 5 Eventsを詳しく見る
CPUコア数超問題ありボトルネック分析へ進む

詳細は PART 03 — DB Time と Elapsed Time(AWR入門) を参照。

CPU使用率の目安

Time Model Statistics% DB Time を確認します。 DB CPU の % が高ければCPUボトルネック、低くてもDB Timeが大きければ待機が多いことを示します。

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

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

Buffer Cache Hit Ratio(バッファキャッシュヒット率)はメモリにデータがあった割合を示します。 90%を下回ると物理I/Oが増加し、I/Oボトルネックになります。

Buffer Cache Hit Ratio判断アクション
95%以上良好問題なし
90〜95%要確認トレンドを確認
90%未満要対処PART 07 メモリ分析

詳細は PART 06 — メモリ・I/O統計の見方(AWR入門) を参照。

Parse比率の目安

ハードパース(SQL解析の都度実行)が多いとCPU使用率を押し上げ、ライブラリキャッシュ競合を引き起こします。 Hard Parse / Total Parse の比率が重要です。

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

ヘルスチェックリスト

チェック項目見る場所目安問題時の次アクション
DB Time比率Report SummaryCPUコア数以下全体分析へ
DB CPU %Time Model Statisticsバランスを確認PART 03
Top 1 Wait EventTop 5 Timed EventsCPU timeが1位が理想PART 04
Buffer Cache HitInstance Efficiency95%以上PART 07
Hard Parse比率Load Profile5%未満PART 03
重いSQLSQL Ordered by Elapsed Time突出したSQLがないかPART 05

より詳細なチェックリストは PART 07 — 分析チェックリストとまとめ(AWR入門) を参照。

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

AWRヘルスチェックは指標を読むだけでは不十分。判断の誤りが誤診につながる。

誤り何が起きるか正しい読み方
1つのAWRレポートだけで判断する業務ピーク時間帯のスナップショットを見ていないと「問題なし」という誤診になる問題が報告された時間帯のスナップショット間隔に絞ったAWRレポートで確認する
Buffer Cache Hit Ratioが95%以上なので「I/O問題なし」と判断する大量スキャンのSQLが存在していてもHit RatioはI/O Statを見るまで分からないHit Ratioとともに「Av Rd(ms)」・I/O Statセクションの物理I/O量も必ず確認する
Hard Parse比率が低いので「共有プール問題なし」と判断するLiteral SQLが少ないだけで、Shared Pool Free %が枯渇している可能性があるMemory StatisticsのShared Pool Free %も合わせて確認する

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

実際の障害調査では、複数の指標が同時に悪化していることが多い。その場合は「どれが根本原因でどれが結果か」を判断することが重要だ。

同時に問題が出ている指標の組み合わせ根本原因の候補次の診断先
DB CPU高い + Hard Parse高いバインド変数未使用のSQL大量発行PART 03 CPU分析
Buffer Cache Hit低い + db file sequential read が Top Waitフルスキャン or インデックス不足でデータが毎回ディスクから読まれているPART 06 I/O分析
DB Time高い + CPU低い + 待機イベント上位にlockロック競合(長時間のトランザクションや更新集中)PART 08 Latch・Lock
Buffer Cache Hit低い + 夜間バッチ後バッチによる大量読み込みがキャッシュをフラッシュしたPART 07 メモリ分析