PR

Oracle Database AWR入門

スポンサーリンク
ORACLE

Oracle Databaseの性能を分析する際に便利な機能として使えるのがAWR(自動ワークロード・リポジトリ)レポートです。

AWRレポートは、特定の期間内のデータベースのパフォーマンスと負荷の詳細を分析するために、データベース管理者にとって非常に重要なツールとなります。

性能分析はとても奥が深いのですが、とても面白い分野でもあります。

今回はAWR入門として、AWRとは何かを紹介したいと思います。

性能分析の目的

性能とは、スループットやレスポンスタイム等の処理結果を返す力です。

レスポンス遅延やスループットの低下が発生した場合「性能問題」となり、早急に解決しなければなりません。

性能改善のアプローチとして、まずは性能分析し、問題解決方法の考察、改善施策の実施を行います。

そのため、最初のアプローチとなる性能分析は特に重要な役割となります。

データベースの性能分析

多くのシステムでは、データベースが性能問題の原因となるケースが多く見られます。

データベースの性能を分析する際には、どのデータを取得すればよいか、性能情報をどう出力すればよいか等、分析前に考えなければならない事が多くあります。

Oracle Database 10gから、AWRという機能が追加され、性能分析をするための情報取得、レポート作成が容易に行えるようになりました。

本記事では、このAWRについて説明します。

AWRとは

AWR(Automatic Workload Repository)とは、Oracleデータベース内で自動取得されている稼働統計情報です。

AWRはデフォルトでは自動で1時間に1回、MMONが稼働統計情報をスナップショットとして取得しており、取得した稼働統計情報を確認することで、Oracleデータベースの稼働に問題がないかを確認することができます。

また、障害が起こった場合は障害発生付近のOracleデータベースの稼働状況を確認することができるため、原因分析にも役立ちます。

AWRで取得したデータを参照するためにはDiagnostic Packというオプションライセンスが必要になります。

AWRレポートとは

AWRのレポートは、ある2つの時点で取得した内部統計データの差分を基に、その間のパフォーマンス統計データをレポートに出力するものです。

このレポートから、データベースの動作変動を分析することが可能です。

AWRレポート取得方法

SYSDBA権限でSQL*PlusでOracle Databaseに接続

$ sqlplus "/as sysdba"                                               

Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

SQL> alter session set container = pdbdekiru1;

Session altered.

AWRレポートを取得するためのSQLを実行

SQL> @?/rdbms/admin/awrrpt.sql

Current Instance
~~~~~~~~~~~~~~~~

   DB Id    DB Name      Inst Num Instance
----------- ------------ -------- ------------
 1628947476 NAME                1 dekirudb        

Specify the Report Type
~~~~~~~~~~~~~~~~~~~~~~~
AWR reports can be generated in the following formats.  Please enter the
name of the format at the prompt.  Default value is 'html'.             

'html'          HTML format (default)
'text'          Text format          
'active-html'   Includes Performance Hub active report

レポート出力形式(HTMLかTEXT)を選択

Enter value for report_type: html

Type Specified:  html


Instances in this Workload Repository schema
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

   DB Id     Inst Num DB Name      Instance     Host
------------ -------- ------------ ------------ ------------
* 1628947476        1 NAME         dekirudb     dekisrv01     
  1628947476        1 NAME         name         dekisrv01     

Using 1628947476 for database Id
Using          1 for instance number


Specify the number of days of snapshots to choose from
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Entering the number of days (n) will result in the most recent
(n) days of snapshots being listed.  Pressing  without
specifying a number lists all completed snapshots.            

直近何日分を対象にするか選択

Enter value for num_days: 1

Listing the last day's Completed Snapshots

 Snap
Instance     DB Name        Snap Id    Snap Started    Level
------------ ------------ --------- ------------------ -----
dekirudb     NAME                 6 30 Jan 2020 09:28      1
                                  7 30 Jan 2020 10:00      1
                                  8 30 Jan 2020 11:00      1
                                  9 30 Jan 2020 12:00      1
                                 10 30 Jan 2020 13:00      1
                                 11 30 Jan 2020 14:00      1
                                 12 30 Jan 2020 15:00      1
                                 13 30 Jan 2020 16:00      1
                                 14 30 Jan 2020 17:00      1
                                 15 30 Jan 2020 17:33      1
                                 16 30 Jan 2020 19:00      1
                                 17 30 Jan 2020 20:00      1



Specify the Begin and End Snapshot Ids
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

開始スナップIDを入力

Enter value for begin_snap: 15
Begin Snapshot Id specified: 15

終了スナップIDを入力

Enter value for end_snap: 16
End   Snapshot Id specified: 16


Specify the Report Name
~~~~~~~~~~~~~~~~~~~~~~~
The default report file name is awrrpt_1_15_16.html.  To use this name,
press  to continue, otherwise enter an alternative.

出力AWRレポート名を入力。 ※Enterを押下するとデフォルトの出力名となる

Enter value for report_name: dekiru_awrrpt.html

~~~ 大量にHTMLが出力されるので省略 ~~~

SQL> exit
Disconnected from Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
$ ls *html
dekiru_awrrpt.html

AWRレポートの見方

以下の記事にAWRレポートのサンプルを記載していますので、参考にして頂ければと思います。

レポートの概要を確認する

AWRレポートの最初のセクションには、OS情報、インスタンス情報、およびレポート取得期間が表示されます。

DBのパフォーマンス概要を確認する

AWRレポートのサマリセクションには、データベース全体のパフォーマンスの概要が表示されます。このセクションには、データベースの総負荷、CPUの使用率、メモリの使用率、I/Oの使用率、REDO生成サイズ、SQL実行回数などが含まれます。

パフォーマンス指標を確認する

AWRレポートの次のセクションには、主要なパフォーマンス指標が表示されます。これらの指標には、平均負荷、平均待ち時間、平均I/O待ち時間、およびCPU使用率が含まれます。

レポートの詳細を確認する

一般的なセクションには、ワークロードプロファイル、データベースインスタンス、トップウェイティングイベント、SQLステータスなどがあり、さまざまなパフォーマンスメトリックスの詳細が表示されます。これらのメトリックスには、セッション、SQLステートメント、およびI/O統計が含まれます。各セクションには、最も問題のある項目が強調表示されている場合があります。CPU負荷が高いSQLのTOP10や、読み取りブロック数が多いSQLのTOP10など、データベースに占める性能負荷の高いSQLの分析もできますので、こちらを参考にSQLチューニングをすると効果的です。

AWRレポートのサンプル

以下の記事にAWRレポートのサンプルを記載していますので、参考にして頂ければと思います。

Oracle Database AWRレポートの取得方法
Oracleの性能分析ツールで無償なのはStatspackですが、有償のDiagnostics Packライセンスを購入することで使用できるのが、Statspackよりも高機能なAWR(Automatic Workload Repository)です。

さいごに

AWRレポートを理解するには、データベースのパフォーマンスに関する基本的な知識が必要です。データベースの性能チューニングに関する経験がない場合は、オラクルのドキュメンテーションや、パフォーマンスチューニングに関する書籍やオンラインコースなどのリソースを活用することをお勧めします。