Seguramente nos ha pasado que hemos intentado generar algún AWR en una PDB creada recientemente y nos ha arrojado el siguiente error:
Este error sucede porque no está habilitado la generación de AWR a nivel de PDB. ¿Cómo podemos configurarlo? Pues bien, lo primero que tenemos que hacer, es conectarnos a la CDB$ROOT, aunque lo hagamos a este nivel, los cambios también aplicarían a nivel de PDB (tenemos la opción de hacerlo a nivel de PDB). Además si hacemos el cambio a nivel de CDB$ROOT, cada vez que creemos una nueva PDB, automáticamente el AWR estará habilitado o no, dependiendo de esta configuración.
Revisamos el valor del parámetro awr_pdb_autoflush_enabled
Habilitamos el parámetro
Una vez habilitado, debemos configurar el intervalo de tiempo de generación snapshots de AWR con el paquete DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSH_SETTINGS.
Este procedimiento recibe los siguientes parámetros:
Retention: Tiempo de retención en minutos. El valor especificado debe estar en el mínimo (1 día) o el máximo (100 años). Si especificamos el valor ZERO, los snapshot se conservarán para siempre. Se dejará el valor que había en caso de que sea nulo.
Interval: Intervalo de tiempo entre cada snapshot en minutos, el valor mínimo son 10 minutos y el máximo 1 año. Igual que el parámetro anterior, puede ser ZERO o nulo, aquí la diferencia con el parámetro anterior, es que si es ZERO los snapshot, ya sean automáticos o manuales, se deshabilitarán.
Topnsql: Este parámetro admite valores números o de tipo varchar2, se puede especificar los valores DEFAULT, MAXIMUM, N, donde N es el número de SQL. En caso de no especificar, el valor por defecto dependerá del parámetro STATISTICS_LEVEL. Si el valor del parámetro es TYPICAL el número será 30 y en caso de que el valor sea ALL el número será 100.
Dbid: Identificador de la BBDD en AWR, en caso de ir nulo, el valor del local dbid será usado.
Tablespace_name: Especificamos un tablespace para almacenar AWR data, en caso que no se especifique, se almacenará en SYSAUX.
Una cosa a tener en cuenta, en caso de que nuestro CDB$ROOT tenga varias PDB y para evitar problemas de performance cuando se estén creando snapshots en simultaneo, deberíamos configurar el parámetro AWR_SNAPSHOT_TIME_OFFSET en 1000000 para evitar este tipo de problemas.
Una vez configurado, nos conectamos a la PDB y generamos un SNAPSHOT de forma manual, con el paquete DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT;
Esperamos el intervalo de tiempo que hemos configurado y ya podemos generar nuestros informes AWR a nivel de PDB
¡Espero que os sirva!