[ 2018-05-08 ]

Oracle Database 12.2: Gestión de memoria a nivel PDB en ambientes multitenant

Artículo publicado en Oracle Technology Network (OTN) en español -  mayo de 2018 


Introducción

En Oracle Database 12.1 un CDB (“Container Database”) tiene una única asignación de memoria SGA (“System Global Area”), la cual es compartida por todos los contenedores, el root container y todas las PDBs.
Lo mismo ocurre con la PGA (“Program Global Area”), donde el parámetro PGA_AGGREGATE_TARGET especifica el objetivo de memoria “target” para la PGA compartida por todos los “server process” conectados a la instancia.
Gran parte de la SGA actúa como una memoria cache que favorece a los objetos accedidos con mayor frecuencia, esto ocurre por ejemplo con el “data buffer cache”, la “shared pool”  y otras estructuras de memoria. Se dá entonces una suerte de competencia entre las distintas sesiones y procesos por la utilización de este espacio en la SGA y sus distintas estructuras asociadas.  Por tal motivo, en versión 12.1 es probable que una PDB con mucha actividad, pueda llegar a tener un dominio claramente marcado en la utilización del espacio de SGA, generando problemas de performance en otras PDBs.

Algo similar a lo anteriormente comentado, ocurre con la utilización de la PGA.

En Oracle Database 12.2 se introduce una nueva manera de gestionar la memoria permitiendo que tanto la SGA como la PGA puedan ser controladas a nivel PDB.

Gestión de SGA en PDBs


  1. Podemos utilizar el parámetro SGA_TARGET para limitar el tamaño máximo de SGA utilizado por cada PDB. En una PDB, SGA_TARGET se debe configurar con un valor menor o igual al valor del mismo parámetro en el root container.

  2. También podemos utilizar el parámetro SGA_MIN_SIZE para especificar el tamaño mínimo de SGA utilizado por una PDB. La configuración de este  parámetro, garantiza que la SGA de esa PDB nunca alcance un tamaño por debajo del valor especificado.
    Los aspectos a tener en cuenta para la configuración del parámetro SGA_MIN_SIZE (SGA mínima garantizada) son:
    • Debe ser menor o igual al 50% de la configuración para SGA_TARGET en el root CDB.
    • Debe ser menor o igual al 50% de la configuración para SGA_TARGET en el PDB.
    • La suma de las configuraciones SGA_MIN_SIZE para todos los PDB debe ser menor o igual al 50% de la configuración para SGA_TARGET en el root CDB.

    Una buena práctica es limitar la suma de los valores SGA_MIN_SIZE de todos los PDB al 50% o menos del tamaño de la SGA del CDB.

    Tanto la configuración indicada con el parámetro SGA_TARGET como con SGA_MIN_SIZE,  van a ser aplicadas de forma efectiva a nivel  “Pluggable Database”, solo si el parámetro SGA_TARGET en el root CDB está configurado con un valor distinto de cero.

    Ambos parámetros SGA_TARGET y SGA_MIN_SIZE pueden ser establecidos a nivel PDB.

    Ejemplo:

    El procedimiento para configurar los parámetros es similar al utilizado en una instancia Oracle tradicional. Debemos tener la precaución de posicionarnos previamente en la PDB adecuada antes de correr las sentencias.

    Veamos un ejemplo de cómo realizar la configuración:

No hay comentarios:

Publicar un comentario