はじめに
システム稼働中に性能問題 (DBのバージョンアップ後に応答速度が低下した!新システムを追加したら、特定の時間で急な遅延が発生するようになってしまった!等...) が発生した場合、
ボトルネックの特定に頭を悩まさることはしばしばあるかと思います。
- メモリ、またはCPU不足?
- SQL文の書き方が悪い?
- アクセスが集中している?
- データの断片化の発生?
- ディスクI/Oが遅い?
- パラメータ設定ミス?
- ネットワークの待機?
その性能問題の切り分け / 解決をしていく中で、
ボトルネックがAP・DB・NWの中で DBが原因 として浮上した場合、
自動ワークロード・リポジトリ (AWR) を利用すると、
DBの中でも どこにボトルネックがあるのかの切り分けがし易くなります。
これから複数記事に分けて、AWRの概要/取得方法/レポートの読み方をまとめていこうと思います。
まずは、第一回目として「AWRの概要」を自分なりにまとめてみました。
1. そもそもAWRってナニ??
- Oracle Database 10g に登場
- それまで Oracle Database 8i や 9i で利用されていた Statspack が自動化機能に進化
- DB の統計情報を一定時間ごとの断片 (スナップショット) で自動的に収集・記録し、
そのレポートの生成が可能
➡ デフォルトでは、1時間毎 に統計情報を取得 (スナップショットを生成) し、
その統計情報はワークロードリポジトリに 8日間 保存が可能
(デフォルト設定変更したい場合はこのマニュアルを参照ください) - DBの性能問題があった場合、取得したレポートから DB のボトルネックの発見が可能
と説明を見てもよく分からない・・・
っとなった場合は、
2. AWRの利用でどんなメリットがあるのかをもっと簡単に言うと?? をご覧ください!
更に詳しい内容は、データベース・パフォーマンス・チューニング・ガイドより抜粋した以下をご覧ください。
自動ワークロード・リポジトリ
AWRは、問題の検出および自己チューニングを目的として、パフォーマンス統計を収集、処理およびメンテナンスします。この収集されたデータは、メモリーとデータベースの両方に格納され、レポートおよびビューに表示されます。
AWRにより収集され処理される統計は、次のとおりです。
- データベース・セグメントのアクセス統計と使用統計を決定するオブジェクト統計。
- アクティビティの時間使用に基づく時間モデル統計。V\$SYS_TIME_MODELおよびV\$SESS_TIME_MODELビューに表示されます。
- V\$SYSSTATおよびV\$SESSTATビューで収集されるシステム統計とセッション統計の一部。
- システム上で最大負荷を生成しているSQL文。経過時間やCPUタイムなどの基準に基づきます。
- アクティブ・セッション履歴(ASH)統計は、最新のセッション・アクティビティの履歴を表します。
2. AWRの利用でどんなメリットがあるのかをもっと簡単に言うと??
「車の燃費」で例えてみるとします!
(下図内のレポート結果の極端さは、目をつむってください・・!)
- とある日に車の燃費の悪さが気になったとします (= DBの性能が気になる)。
【考えうる原因】①手荒い運転
②タイヤの空気圧の低下 (道路との摩擦抵抗が高い)
③誤給油 など。 - その車は、下図のように毎時で負荷を自動記録していたとします
(= 1時間毎に取得する統計情報を自動で取得 (AWRスナップショットの取得))。 - 最後に車を運転してから1週間も経っていないので、保存されている過去記録を抽出し、調査してみることにしました
(= スナップショットの保存期間は8日間 (デフォルト) + AWRレポートの作成)。
- 上記、作成されたレポートを確認すると、11:00 ~ 12:00 でタイヤの空気圧が大幅に低下していることが分かり、当初の【考えうる原因】の①・③の懸念点は排除できました
(= DB性能劣化のボトルネックの特定)。 - これにより、「タイヤの交換をする」など対策を立てられるようになります
(= DBのパフォーマンスチューニング)。
このようにして、何かしらのDBのパフォーマンス劣化があった際に、
AWRを利用すると、現状のDBの負荷状況を客観的に確認出来たり、
ボトルネックの特定 や 次の対策を立てやすくなります!
3. AWRをご利用いただく際の注意点
この章を簡単にまとめると、
「AWRを利用いただくには、Oracle Database Enterprise Edition 10g 以降のバージョンで、
Oracle Diagnostics Pack というオプションの追加 が必要」
ということを、証跡と共にまとめています。
3-1. 対応するDBバージョン
1. そもそもAWRってナニ?? にも記載ある通り、
Oracle Database 10g 以降であれば、ご利用可能です。
ただし、エディションに制限があるので、次をご覧ください。
3-2. 対応するDBエディション
Oracle Database の Enterprise Edition をご利用いただく必要があります。
参考:データベース・ライセンス情報ユーザー・マニュアル
3-3. 必要なライセンス
AWRをご利用いただくには、Oracle Diagnostics Pack の オプション追加が必要です。
参考:データベース・ライセンス情報ユーザー・マニュアル
3-4. 価格
Oracleテクノロジー製品 価格表 (Oracle Technology Localizable Global Price List)(PDF)
→ 検索ワード:diagnostics pack
まとめ
今回の内容は、概要中の概要です。
私自身、製品理解に苦労したことも踏まえ、漠然とでもイメージが湧くように身近なもので例え話も作ってみました。(もしかしたら、もっと他に良い例があったかもしれませんが、、、笑)
特にAWR初心者の方に、「なんとなくだけど、概要は分かった」程度の記事に慣れれば嬉しいです。
今後のDB運用で、少しでもお役に立てれればと思います。