概要
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 <---★