GAGA LIFE.

インフラエンジニアブログ

スポンサーリンク

マルチテナント・データベース(PDB)のAWRスナップショットおよびレポート出力

概要

12.2よりPDBレベルでAWRレポートを作成できるようになりました。 その方法を記載します。

手順

PDB レベルで awr_pdb_autoflush_enabled=true を設定する

SQL> conn /as sysdba
接続されました。
SQL> show con_name

CON_NAME
------------------------------
CDB$ROOT
SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 PDB1                           READ WRITE NO

SQL> alter session set container=pdb1;

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

SQL> alter system set awr_pdb_autoflush_enabled=true;
システムが変更されました。

SQL> select * from cdb_hist_wr_control;
      DBID SNAP_INTERVAL                  RETENTION            TOPNSQL                            CON_ID   SRC_DBID SRC_DBNAME
---------- ------------------------------ -------------------- ------------------------------ ---------- ---------- --------------------
4110743488 +40150 00:01:00.0              +00008 00:00:00.0    DEFAULT                                 3 4110743488 PDB1

※awr_pdb_autoflush_enabledの設定のみでは、スナップショットの取得間隔が40150日(110年)であるため実質取られない

AWRスナップショットを任意の間隔に設定する(例:30分)

SQL> execute dbms_workload_repository.modify_snapshot_settings(interval => 30);
PL/SQLプロシージャが正常に完了しました。

SQL> select * from cdb_hist_wr_control;
      DBID SNAP_INTERVAL                  RETENTION            TOPNSQL                            CON_ID   SRC_DBID SRC_DBNAME
---------- ------------------------------ -------------------- ------------------------------ ---------- ---------- --------------------
4110743488 +00000 00:30:00.0              +00008 00:00:00.0    DEFAULT                                 3 4110743488 PDB1

複数PDBが存在する場合は、同時に複数のPDBがスナップショットを作成するときのパフォーマンスの問題を避けるために、AWR_SNAPSHOT_TIME_OFFSETを1000000に設定する。

SQL> alter system set AWR_SNAPSHOT_TIME_OFFSET=1000000 scope=both;
システムが変更されました。

注意点

PDB側でスナップショットが1度でも取得されるとCDB_HIST_SYSSTATなどのビューに情報が出力される動作となります。

SQL> conn /as sysdba
接続されました。

SQL> select distinct(CON_ID) from CDB_HIST_SYSSTAT;
    CON_ID
----------
         1

SQL> alter system set awr_pdb_autoflush_enabled=true;
システムが変更されました。

SQL> select * from cdb_hist_wr_control;
      DBID SNAP_INTERVAL                  RETENTION            TOPNSQL                            CON_ID   SRC_DBID SRC_DBNAME
---------- ------------------------------ -------------------- ------------------------------ ---------- ---------- --------------------
4110743488 +40150 00:01:00.0              +00008 00:00:00.0    DEFAULT                                 3 4110743488 PDB1

SQL> execute dbms_workload_repository.modify_snapshot_settings(interval => 30);
PL/SQLプロシージャが正常に完了しました。

SQL> select * from cdb_hist_wr_control;
      DBID SNAP_INTERVAL                  RETENTION            TOPNSQL                            CON_ID   SRC_DBID SRC_DBNAME
---------- ------------------------------ -------------------- ------------------------------ ---------- ---------- --------------------
4110743488 +00000 00:30:00.0              +00008 00:00:00.0    DEFAULT                                 3 4110743488 PDB1

SQL> exec dbms_workload_repository.create_snapshot();
PL/SQLプロシージャが正常に完了しました。

SQL> conn /as sysdba
接続されました。

SQL> select distinct(CON_ID) from CDB_HIST_SYSSTAT;
    CON_ID
----------
         1
         3 <---★

スポンサーリンク