比較読みの目的と準備
AWRの最大の強みの一つは複数スナップショットを比較できることです。 「問題発生時」のAWRだけを見ても、それが異常かどうか判断できない場合があります。 正常時との比較によって初めて異常を正確に検出できます。
比較読みが特に有効な場面:
- 「昨日まで速かったのに今日から遅い」という突発的な性能劣化
- 定期バッチの実行時間が徐々に長くなっている
- リリース前後での性能変化の確認
- 月次・年次など季節変動の確認
各セクションの読み方は PART 03 〜 PART 08 および AWRセクション定義書 を参照。
比較すべき指標
| 指標 | 見る場所 | 比較のポイント |
|---|---|---|
| DB Time / Elapsed Time 比率 | Report Summary | 全体的な負荷の変化 |
| Top 5 Wait Events の顔ぶれと割合 | Top 5 Timed Events | 新しいイベントの出現・既存イベントの急増 |
| Transactions / sec | Load Profile | トランザクション量の変化 |
| Hard Parses / sec | Load Profile | 急増はバインド変数問題のサイン |
| Buffer Cache Hit % | Instance Efficiency | 急落はデータ量増加のサイン |
| Top SQLの顔ぶれと % DB Time | SQL Ordered by Elapsed Time | 新しい重いSQLの出現、既存SQLの悪化 |
| PGA % Optimal | PGA Aggregate Statistics | 低下はデータ量増加によるメモリ不足 |
変化量の見方
AWRの値はスナップショット期間中の累積値または平均値です。 単純な数値の比較ではなく、期間で割った「1秒あたり」の値を比較することが重要です。
| 比較時の注意点 | 理由 |
|---|---|
| 期間(Elapsed Time)が異なる場合は /秒 に正規化する | 長い期間のAWRは累積値が大きくなるため |
| Load Profile の値はすでに /秒 または /トランザクション | そのまま比較可能 |
| 業務ピーク時間帯を合わせて比較する | オフピーク vs ピーク比較は意味がない |
| 同一スナップショット間隔(例:1時間)のAWRで比較する | 間隔が異なると単純比較できない |
💡 AWR Diff Report(差分レポート)の活用
OracleにはAWR Diff Reportという2つのAWRを比較する機能があります。@?/rdbms/admin/awrddrpt.sql で生成でき、正常時と問題時の差分を自動整理してくれます。
ベースライン作成のすすめ
比較読みを効果的に行うために、正常稼働時のAWRをベースラインとして保存しておくことをお勧めします。
Oracleには DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE でベースライン(スナップショット保存期間の延長)を作成する機能があります。
| ベースラインとして保存すべきタイミング |
|---|
| リリース直後(システムが正常に動作している状態) |
| 大規模バッチが正常完了した直後 |
| 月次・年次の業務ピークが正常に終了した直後 |
| チューニング前後(効果測定のため) |
比較チェックリスト
| チェック項目 | 正常時比較 | 問題発生時のアクション |
|---|---|---|
| DB Time比率 増加 | +50%超は要調査 | Top 5 Events で増加したイベントを確認 |
| 新しいWait Eventの出現 | 正常時に存在しないイベント | そのイベントに対応したPARTへ |
| Buffer Cache Hit Ratio 低下 | 5%超の低下 | PART 07 メモリ分析 |
| Top SQL の顔ぶれ変化 | 正常時に上位になかったSQL | PART 05 SQL特定 |
| Hard Parse比率 増加 | 5%超の増加 | PART 03 CPU分析 |