Since we were exploring enabling awr snapshots at pdb level , we came across below 3 parameters that control awr generation at pluggable database level .
AWR_PDB_AUTOFLUSH_ENABLED
Awr_snapshot_time_offset
AWR_PDB_MAX_PARALLEL_SLAVES
AWR_PDB_AUTOFLUSH_ENABLED
1. AWR Snapshots and reports can be created only at the container database (CDB) level in
Oracle 12c R1 (12.1.0.1.0 / 12.1.0.2.0)
2. AWR Snapshots and reports can be created at the container database (CDB) level as well as pluggable database (PDB) level
in Oracle 12c R2 (12.2.0.1.0)
3. By default, AWR Snapshots and reports can be generated only at the container database (CDB) level
The default value of AWR_PDB_AUTOFLUSH_ENABLED is false. Thus, by default, automatic AWR snapshots are disabled for all the PDBs in a CDB.
When you change the value of AWR_PDB_AUTOFLUSH_ENABLED in the CDB root, the new value takes effect in all the PDBs in the CDB.
You can also change the value of AWR_PDB_AUTOFLUSH_ENABLED in any of the individual PDBs in a CDB, and the value that is set for each individual PDB will be honored. This enables you to enable or disable automatic AWR snapshots for individual PDBs.
for specified PDB
alter session set container=PDBtest;
alter system set awr_pdb_autoflush_enabled=true;
for all pdbs and CDB
alter session set container=CDB$ROOT;
alter system set awr_pdb_autoflush_enabled=true;
set interval and retention period by PDB or CDB$ROOT level. for all PDBSs and CDB we have to run script separately. for 30 days retention and 60 minutes interval script can be below.
alter session set container=PDB1;
execute dbms_workload_repository.modify_snapshot_settings(interval => 60, retention=>64800);
SQL> set lines 100
SQL> select * from cdb_hist_wr_control;
SQL> SELECT con_id, to_char(end_interval_time, 'HH24:MI:SS') AS snap_time
2 FROM cdb_hist_snapshot
3 WHERE end_interval_time > to_timestamp('2020-10-02 11:45','YYYY-MM-DD HH24:MI')
4 ORDER BY snap_time, con_id;
select * from awr_pdb_snapshot ;
Awr_snapshot_time_offset
You might have observed those spikes on the top of every hour when all the AWR snapshots are taken and to avoid thiswe want snapshots taken on hour bases but within 5 minutes difference for every database
The parameter is specified in seconds. Normally, you set it to a value less than 3600. If you set the special value 1000000 (1,000,000), you get an automatic mode, in which the offset is based on the database name.
The automatic mode is an effective way of getting a reasonable distribution of offset times when you have a very large number of instances running on the same node.
SQL> alter session set container=CDB$ROOT;
Session altered.
SQL> SHOW CON_NAME
CON_NAME
------------------------------
CDB$ROOT
SQL> show parameter AWR_SNAPSHOT_TIME_OFFSET
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
awr_snapshot_time_offset integer 0
SQL> alter system set AWR_SNAPSHOT_TIME_OFFSET=1000000 scope=both;
AWR_PDB_MAX_PARALLEL_SLAVES
From version 18c onward, with the dynamic initialization parameter AWR_PDB_MAX_PARALLEL_SLAVES, you can specify the maximum number of background processes that the database engine can concurrently use to take automatic PDB-level snapshots. Valid values go from 1 to 30; the default is 10. Even though this initialization parameter doesn’t affect the automatic snapshots in the root container, it can only be set in the root container. The following examples illustrate the behaviour with three PDBs and an interval of 15 minutes:
AWR_PDB_MAX_PARALLEL_SLAVES = 1: only one PDB-level snapshot is taken at the same time as the snapshot in the root container
AWR_PDB_MAX_PARALLEL_SLAVES = 10: 10 PDB-level snapshots are taken at the same time as the snapshot in the root container
Known issue :
If _cursor_stats_enabled is set , sql statistics wont be generated on PDB level and pdb awr will have sql details missing in it .
References :
https://docs.oracle.com/en/database/oracle/oracle-database/12.2/refrn/AWR_PDB_AUTOFLUSH_ENABLED.html#GUID-08FA21BC-8FB1-4C51-BEEA-139C734D17A7
https://it.inf.unideb.hu/oracle/refrn/AWR_SNAPSHOT_TIME_OFFSET.html#GUID-90CD8379-DCB2-4681-BB90-0A32C6029C4E