第一回：自動ワークロード・リポジトリ (AWR) の概要  (たとえ話と共に)

# はじめに
システム稼働中に性能問題 (DBのバージョンアップ後に応答速度が低下した！新システムを追加したら、特定の時間で急な遅延が発生するようになってしまった！等...) が発生した場合、
ボトルネックの特定に頭を悩まさることはしばしばあるかと思います。
- メモリ、またはCPU不足？
- SQL文の書き方が悪い？
- アクセスが集中している？
- データの断片化の発生？
- ディスクI/Oが遅い？
- パラメータ設定ミス？
- ネットワークの待機？

その性能問題の切り分け / 解決をしていく中で、
ボトルネックがAP・DB・NWの中で **DBが原因** として浮上した場合、
自動ワークロード・リポジトリ (AWR) を利用すると、
DBの中でも **どこにボトルネックがあるのかの切り分けがし易くなります**。

これから複数記事に分けて、AWRの概要/取得方法/レポートの読み方をまとめていこうと思います。
まずは、第一回目として「AWRの概要」を自分なりにまとめてみました。

# 1. そもそもAWRってナニ？？
- [Oracle Database 10g](https://oracle-base.com/articles/10g/automatic-workload-repository-10g) に登場
- それまで Oracle Database 8i や 9i で利用されていた [Statspack](https://oracle-base.com/articles/8i/statspack-8i) が自動化機能に進化
- DB の統計情報を一定時間ごとの断片 (スナップショット) で自動的に収集・記録し、
そのレポートの生成が可能
  ➡ デフォルトでは、**1時間毎** に統計情報を取得 (スナップショットを生成) し、
  　その統計情報はワークロードリポジトリに **8日間** 保存が可能 
　(デフォルト設定変更したい場合は[このマニュアル](https://docs.oracle.com/cd/F19136_01/tgdba/gathering-database-statistics.html#GUID-62D01B30-2687-4821-A651-DC0E4AAC3B01)を参照ください)
- DBの性能問題があった場合、取得したレポートから DB のボトルネックの発見が可能

と説明を見てもよく分からない・・・:frowning2: :thinking:
っとなった場合は、
[2. AWRの利用でどんなメリットがあるのかをもっと簡単に言うと？？](#2-awrの利用でどんなメリットがあるのかをもっと簡単に言うと) をご覧ください！

更に詳しい内容は、[データベース・パフォーマンス・チューニング・ガイド](https://docs.oracle.com/cd/F19136_01/tgdba/gathering-database-statistics.html#GUID-CE73D449-0EE9-4022-B1F1-AA12F0955C03)より抜粋した以下をご覧ください。
> **自動ワークロード・リポジトリ**
AWRは、問題の検出および自己チューニングを目的として、パフォーマンス統計を収集、処理およびメンテナンスします。この収集されたデータは、メモリーとデータベースの両方に格納され、レポートおよびビューに表示されます。
AWRにより収集され処理される統計は、次のとおりです。
>- データベース・セグメントのアクセス統計と使用統計を決定するオブジェクト統計。
>- アクティビティの時間使用に基づく時間モデル統計。V\\$SYS_TIME_MODELおよびV\\$SESS_TIME_MODELビューに表示されます。
>- V\\$SYSSTATおよびV\\$SESSTATビューで収集されるシステム統計とセッション統計の一部。
>- システム上で最大負荷を生成しているSQL文。経過時間やCPUタイムなどの基準に基づきます。
>- アクティブ・セッション履歴(ASH)統計は、最新のセッション・アクティビティの履歴を表します。
# 2. AWRの利用でどんなメリットがあるのかをもっと簡単に言うと？？
「**車の燃費**」で例えてみるとします！:red_car:
（下図内のレポート結果の極端さは、目をつむってください・・！:pray:）

1. とある日に**車の燃費の悪さ**が気になったとします (= **DBの性能が気になる**)。
【考えうる原因】①手荒い運転　
　　　　　　　　②タイヤの空気圧の低下 (道路との摩擦抵抗が高い)
　　　　　　　　③誤給油　　　　　　　　　　　　　　　　　　　　　　など。
2. その車は、下図のように**毎時で負荷を自動記録**していたとします
(= **1時間毎に取得する統計情報を自動で取得 (AWRスナップショットの取得)**)。
3. 最後に車を運転してから1週間も経っていないので、保存されている過去記録を抽出し、調査してみることにしました 
(= **スナップショットの保存期間は8日間 (デフォルト)** ＋ **AWRレポートの作成**)。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3079416/cc03282c-af3d-9c71-f39a-17d8e894343c.png "AWRのたとえ話")
4. 上記、作成されたレポートを確認すると、11:00 ～ 12:00 で**タイヤの空気圧が大幅に低下**していることが分かり、当初の【考えうる原因】の①・③の懸念点は排除できました
(= **DB性能劣化のボトルネックの特定**)。
5. これにより、「タイヤの交換をする」など対策を立てられるようになります 
(= **DBのパフォーマンスチューニング**)。

このようにして、何かしらのDBのパフォーマンス劣化があった際に、
AWRを利用すると、<font color="Red">**現状のDBの負荷状況を客観的に確認**出来たり、
**ボトルネックの特定** や **次の対策を立てやすく**なります！</font>
# 3. AWRをご利用いただく際の注意点
この章を簡単にまとめると、
「AWRを利用いただくには、**Oracle Database Enterprise Edition 10g 以降のバージョン**で、
　**Oracle Diagnostics Pack というオプションの追加** が必要」
ということを、証跡と共にまとめています。
## 3-1. 対応するDBバージョン
[1. そもそもAWRってナニ？？](#1-そもそもawrってナニ) にも記載ある通り、
**Oracle Database 10g** 以降であれば、ご利用可能です。
ただし、エディションに制限があるので、次をご覧ください。
## 3-2. 対応するDBエディション
Oracle Database の **Enterprise Edition** をご利用いただく必要があります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3079416/0cf0e33a-e631-83c5-ea1c-53871b6035df.png "DBエディションの確認")
参考：[データベース・ライセンス情報ユーザー・マニュアル](https://docs.oracle.com/cd/F19136_01/dblic/Licensing-Information.html#GUID-0F9EB85D-4610-4EDF-89C2-4916A0E7AC87)
## 3-3. 必要なライセンス
AWRをご利用いただくには、**Oracle Diagnostics Pack** の **オプション追加**が必要です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3079416/53e1a7c7-e755-34e3-898d-1d4b082a72e6.png "t対応するオプション機能の確認")
参考：[データベース・ライセンス情報ユーザー・マニュアル](https://docs.oracle.com/cd/F19136_01/dblic/Licensing-Information.html#GUID-68A4128C-4F52-4441-8BC0-A66F5B3EEC35)
## 3-4. 価格
[Oracleテクノロジー製品 価格表 (Oracle Technology Localizable Global Price List)(PDF)](https://www.oracle.com/jp/a/ocom/docs/jpy-tech-localizablepl.pdf)
→ 検索ワード：**diagnostics pack**
# まとめ
今回の内容は、概要中の概要です。
私自身、製品理解に苦労したことも踏まえ、漠然とでもイメージが湧くように身近なもので例え話も作ってみました。(もしかしたら、もっと他に良い例があったかもしれませんが、、、笑)
特にAWR初心者の方に、「なんとなくだけど、概要は分かった」程度の記事に慣れれば嬉しいです。
今後のDB運用で、少しでもお役に立てれればと思います。