X

A blog about Oracle Technology Network Japan

第14回 AWRレポート作成とAWRスナップショット取得(PDB単位)

基本からわかる!高性能×高可用性データベースシステムの作り方 indexページ

第13回ではCDB全体のAWRレポートの作成とAWRスナップショットの取得に関するコマンドラインでの操作について説明しました。今回はPDB単位でのAWRについてです。Oracle Database 12c Release 2からはPDB単位でもAWRレポートを作成できるようになっています。CDB全体とは異なり、PDB単位のAWRスナップショット取得はデフォルトでは有効になっていません。

PDB単位のAWRスナップショット自動取得の有効化

CDB全体のAWRスナップショット取得はCREATE DATABASEした時点でデフォルトで有効になっています。CDB全体で作成したAWRレポートにはすべてのPDBのアクティビティが混在して記載されます。しかし、PDB単位のAWRスナップショットの自動取得はデフォルトでは無効になっています。
PDB単位のAWRスナップショット自動取得を有効にするには初期化パラメータAWR_PDB_AUTOFLUSH_ENABLEDをTRUEに設定します。この設定には2階層あって、CDB$ROOTで設定するとすべてのPDBで有効になります。個別のPDBで設定するとそのPDBでのみ有効になります。

SQL> SHOW PDBS

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 SIPDB19A1                      READ WRITE NO
         4 SIPDB19A2                      READ WRITE NO

SQL> ALTER SESSION SET CONTAINER=SIPDB19A1;

セッションが変更されました。

SQL> ALTER SYSTEM SET AWR_PDB_AUTOFLUSH_ENABLED = TRUE;

システムが変更されました。

SQL> SHOW PARAMETERS AWR_PDB_AUTOFLUSH_ENABLED

NAME                                 TYPE                              VALUE
------------------------------------ --------------------------------- ------------------------------
awr_pdb_autoflush_enabled            boolean                           TRUE

PDBごとのAWRスナップショットの取得間隔と保存期間の設定はPDBごとに設定でき、CDB全体の場合と同じくDBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGSプロシージャを使用します。各PDB上で実行し、設定単位は分です。以下の例は取得間隔(interval)を10分、保存期間(retention)を44640分(=60分×24時間×31日)に設定しています。

SQL> EXEC DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS (interval=>10,retention=>44640);

PL/SQLプロシージャが正常に完了しました。

設定の確認はAWR_PDB_WR_CONTROLビューを見ます。

SQL> SELECT CON_ID,SNAP_INTERVAL,RETENTION FROM AWR_PDB_WR_CONTROL;

    CON_ID SNAP_INTERVAL        RETENTION
---------- -------------------- --------------------
         3 +00000 00:10:00.0    +00031 00:00:00.0

PDB単位でのAWRスナップショットの手動取得もCDB全体の場合と同じくDBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOTプロシージャまたはファンクションを実行します。個別のPDB上で実行するとそのPDBのAWRスナップショットが作成されます。ファンクションをSELECT文で実行するとAWRスナップショットIDが返されるのはCDB全体の場合と同じです。PDBごとのAWRスナップショットIDはAWR_PDB_SNAPSHOTビューで調べることができます。

SQL> SELECT DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT() FROM DUAL;

DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT()
------------------------------------------
                                        14

SQL> SELECT MAX(SNAP_ID) FROM AWR_PDB_SNAPSHOT;

MAX(SNAP_ID)
------------
          14

PDB単位でのAWRスナップショットIDはPDBごとに独立したシーケンスです。CDB全体のスナップショットIDとも異なります。

PDB単位のAWRレポートの作成コマンド

PDB単位のAWRレポートの作成にはsqlplusでOracleインスタンスに接続し、該当のPDBにログインしてAWRレポート作成のSQLスクリプトを実行します。CDB全体の場合と異なるのは個別のPDB上でSQLスクリプトを実行するというところです。
AWRレポートはHTMLもしくはテキスト形式のファイルとして出力されますが、そのファイルはsqlplusを起動したカレント・ディレクトリに作成されるため、ファイルを出力させたいディレクトリに移動してからsqlplusを起動します。管理者権限でログインします。

$ sqlplus / as sysdba

SQL> ALTER SESSION SET CONTAINER=SIPDB19A1;

セッションが変更されました。

AWRレポート作成のSQLスクリプトもCDB全体の場合と同じで、もっとも基本的なものがawrrpt.sqlです。awrrpt.sqlはログインしたデータベースのDBIDとOracleインスタンスでのAWRスナップショットからAWRレポートを作成します。CDB全体の場合と異なり、途中でPDB単位のレポートを作成するかが問われます。
sqlplusは@マークを付けたテキストファイルを読み取りそこに記述されているSQLスクリプトを実行します。awrrpt.sqlは$ORACLE_HOME/rdbms/admin/ディレクトリにあります。sqlplusは”?”の記号をORACLE_HOMEのディレクトリと解釈するため以下のように記述できます。

SQL> @?/rdbms/admin/awrrpt

awrrpt.sqlを実行するとまず出力するファイル形式を問われます。デフォルトはHTML形式です。

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

report_typeに値を入力してください:
旧   1: select 'Type Specified: ',lower(nvl('&&report_type','html')) report_type from dual
新   1: select 'Type Specified: ',lower(nvl('','html')) report_type from dual

Type Specified:                                  html

ファイル形式はtextではなくデフォルトのhtmlをお勧めします。text形式はコピー&ペーストして報告書の作成などには便利ですが、長いSQL文が途中で省略されてしまいます。HTML形式はSQLが全文出力されます。「AWRレポートを提供してください」と言われたときは(デフォルトの)HTML形式のことだと思っておくとよいでしょう。
次にPDB単位のレポートを作成するかが問われます。PDB単位のレポートを作成するのでAWR_PDBを指定します。

Specify the location of AWR Data
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
AWR_ROOT - Use AWR data from root (default)
AWR_PDB - Use AWR data from PDB
awr_locationに値を入力してください: AWR_PDB

Location of AWR Data Specified:
AWR_PDB

次はDBIDとOracleインスタンスの指定です。awrrpt.sqlの場合はこれらが今接続しているOracleインスタンスに決め打ちです。

Current Instance
~~~~~~~~~~~~~~~~
DB Id          DB Name        Inst Num       Instance       Container Name
-------------- -------------- -------------- -------------- --------------
 4081308537     SIDB19A                     1 sidb19a        SIPDB19A1



Root DB Id      Container DB Id AWR DB Id
--------------- --------------- ---------------
   4140346382      4081308537      4081308537






Instances in this Workload Repository schema
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  DB Id      Inst Num   DB Name      Instance     Host
------------ ---------- ---------    ----------   ------
  4081308537     1      SIDB19A      sidb19a      jphppt07.jp.

Using 4081308537 for database Id
Using          1 for instance number

次に入力するnum_daysは何日前のAWRスナップショットまでさかのぼってリストに出すかです。何も入力せずにreturnを押すと記録が残っているすべてのAWRスナップショットがリストされます。以下の例では直近の1日分を出すために1と指定しています。

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 <return> without
specifying a number lists all completed snapshots.


num_daysに値を入力してください: 1

Listing the last day's Completed Snapshots
Instance     DB Name      Snap Id       Snap Started    Snap Level
------------ ------------ ---------- ------------------ ----------

sidb19a      SIDB19A              7  13 11月 2019 13:49   1
                                  8  13 11月 2019 13:53   1

num_daysを入力するとAWRスナップショットを取得した時刻とそのSnap Idが列挙されます。2つのSnap Idを指定した間のAWRレポートが作成されます。begin_snapにはレポートする開始時刻のSnap Idを入力します。end_snapは終了時刻のSnap Idです。

Specify the Begin and End Snapshot Ids
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
begin_snapに値を入力してください: 7
Begin Snapshot Id specified: 7

end_snapに値を入力してください: 8
End   Snapshot Id specified: 8

最後に出力するファイル名を入力します。デフォルトの名前は指定したSnap Idから生成されています。enterを押すとAWRレポートが生成されます。画面にはHTMLが流れますが、それがsqlplusを起動したカレント・ディレクトリにファイルとして記録されます。

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

report_nameに値を入力してください:

Using the report name awrrpt_1_7_8.html
<p />
<p />
<p />
End of Report
</body></html>

Report written to awrrpt_1_7_8.html
SQL> exit

これでAWRレポートが生成されました。sqlplusからexitするとカレント・ディレクトリに指定したファイル名で出力されています。

基本からわかる!高性能×高可用性データベースシステムの作り方 indexページ

 

Be the first to comment

Comments ( 0 )
Please enter your name.Please provide a valid email address.Please enter a comment.CAPTCHA challenge response provided was incorrect. Please try again.