同じ確認漏れを何度も繰り返さないよう、自分用に作っていたメモを10項目のチェックリストとして整理し直しました。シリーズの締めくくりとして活用してもらえればと思います。

分析チェックリスト(10項目)

分析チェックリスト図

図1: AWRレポート分析10項目チェックリスト

AWRレポートを手にしたとき、まず確認すべき10のポイントです。順番に潰していけば、大半のパフォーマンス問題の仮説が立てられます。

# 確認項目 確認すべき値・判断基準
1レポート期間・スナップショット番号を確認した問題発生時刻がレポート範囲内に含まれているか
2DB Time と Elapsed Time の比率(平均AAS)を確認したAAS = DB Time / Elapsed Time。CPUコア数と比較する
3Top 5 Timed Events の1位の待機イベントを特定したCPU time・db file sequential read・log file sync 等の意味を把握する
4CPU time の割合が 50% 以上か確認した50%以上ならCPU処理が主。50%未満は待機が支配的
5Elapsed Time Top 10 SQL を確認したSQL_IDを控え、実行計画を確認する
6Physical Reads Top 10 SQL を確認したEXECUTIONS(実行回数)と組み合わせて判断する
7Buffer Cache Hit Ratio が 95% 以上か確認した95%未満はキャッシュ不足またはフルスキャン多発の疑い
8PGA Over-Allocation Count を確認した0 が理想。0より大きいとSpill to Diskが発生している
9Tablespace I/O で偏りがないか確認したTEMP・UNDO・REDOへの集中はそれぞれ異なる原因を示す
10log file sync が Top 5 に含まれる場合はCOMMIT頻度を確認したコミット頻度を下げる・REDOログディスクのI/O性能を確認する
このチェックリストを手順通り実施すれば、大半のパフォーマンス問題の仮説を立てることができます

代表的な問題パターンと対処の早見表

Top 5 Timed Events に現れやすい待機イベントと、その対処方針をまとめます。

待機イベント(Top 5 に登場) 原因の可能性 最初の対処
db file sequential readインデックス読み込みのI/O遅延SQL Statistics → 実行計画確認
db file scattered readフルスキャン多発Physical Reads Top 10 → インデックス追加
log file syncCOMMIT頻度過多・REDOディスク遅延Redo Size / commit比 → コミット頻度調整
enq: TX - row lock contention同一行への集中UPDATE長時間ロックを保持するセッション特定 → ロジック見直し
latch: shared poolハードパース多発Parse Calls Top 10 → バインド変数化

シリーズまとめ

AWRレポートはOracleの「総合健康診断書」。一度に全部を読もうとせず、以下の流れで進めるのが効率的です。

  1. まず DB Time と Top 5 Timed Events で「何が重い」かを把握
  2. SQL Statistics で「どのSQLが悪い」かを特定
  3. Memory / I/O 統計 でインフラ側のボトルネックも確認
  4. チェックリストを活用して体系的に分析を進める

本シリーズでカバーした内容は入門レベルですが、このフローを習得するだけで多くの性能問題の初期調査が自力でできるようになります。大切なのは「仮説を持って読む」こと——Top 5 Timed Events で方向性を決め、その仮説を裏付けるセクションを選んで深掘りする、というアプローチです。

次のステップ

本シリーズは「入門」レベルです。実務で深掘りしていくには、以下のような領域に進んでいくと良いでしょう。

  • ASHレポート(Active Session History): 1秒単位のセッション状態履歴。AWRより細かい粒度で問題の瞬間を特定できる。ashrpt.sql で生成。
  • SQLトレース(イベント10046): 個別SQLの詳細な実行プロファイル。バインド変数の値や待機イベントの発生タイミングまで記録される。
  • AWR差分レポート: 異なる2期間(正常時 vs 異常時)の統計差分を自動集計。性能劣化の原因切り分けに非常に有効。awrddrpt.sql で生成。
  • SQL Tuning Advisor: Oracle が推奨するチューニング提案を自動生成する機能。SQL_IDを投入するだけでインデックス・SQL書き換えのヒントを返す。
  • Statspack: Diagnostics Pack ライセンスがない環境向けのAWR代替ツール。
継続的な AWR 分析で Oracle DB を健全に保ちましょう。

AWR分析を深めるための実践ポイント

場面活用するツール・手順ポイント
定常監視(週次・月次) AWR差分レポート(awrddrpt.sql) 通常時と比較して「増えた待機イベント」「新しく現れたSQL」を素早く検出する
バッチ処理の調査 バッチ前後の手動スナップショット + 専用AWR 定時スナップショットでは1時間に埋もれるため、EXEC CREATE_SNAPSHOTで区切る
SQL単体の詳細調査 ASHレポート(ashrpt.sql) AWRは集計値のため、特定SQLの詳細なタイムライン(どのセッションが待っていたか)はASHで確認する
実行計画の変化を確認 DBMS_XPLAN.DISPLAY_AWR 性能劣化が突然起きた場合、統計収集や再コンパイルによる実行計画変化を過去計画と比較する