La gestión de memoria ASMM en Oracle 11g
Con la función de gestión de memoria compartida automática de Oracle 11g ( ASMM ) la gestión de los diversos parámetros de memoria de Oracle se ha convertido esencialmente en el establecimiento de un solo parámetro. Sin embargo para entender cómo funciona la gestión de memoria en versiones anteriores de Oracle así como para entender qué es lo que realmente está sucediendo en la memoria es conveniente tener algunos conceptos básicos claros.
Las dos áreas de memoria principal de Oracle son el Área Global del Sistema (SGA) y el Área Global de Programa (PGA) . En el SGA, la memoria está dividida en varias áreas para el proceso de sentencias SQL, bloques de datos, y log buffers. El PGA es el área de carga de trabajo para los procesos del servidor.
En Oracle9i y Oracle 10g , los parámetros de memoria dinámica permiten ajustes dentro de la SGA. Estableciendo los parámetros SGA_MAX_SIZE y SGA_TARGET, la memoria se ajusta entre DB_CACHE_SIZE, SHARED_POOL_SIZE, y los otros pool (tales como LARGE_POOL_SIZE y JAVA_POOL_SIZE). Esto permite el proceso a los sistemas que pueden tener diferentes tipos de carga de trabajo en momentos diferentes. Sin intervención manual, las asignaciones pueden ajustarse en base a las necesidades de memoria de las diferentes áreas. Por supuesto, para el establecimiento de los parámetros SGA_MAX_SIZE y SGA_TARGET, las estadísticas deben estar en el nivel óptimo para que al ser leídas proporcionen los datos necesarios para ajustar las áreas de memoria. Cabría deducir entonces que situando SGA_TARGET y SGA_MAX_SIZE a los mismos valores, se está asignando un valor máximo de memoria a Oracle? Y, en ese caso, ¿por qué no hay un solo parámetro para ajustarlos?
En Oracle 11g y con el uso de ASMM, se establece solamente el MEMORY_TARGET y Oracle se encarga del resto. En esta versión, la asignación de memoria en el sistema operativo se divide en fragmentos más pequeños. Los segmentos de memoria compartida están disponibles para que Oracle los utilice para el SGA.