Un comando de memoria útil que puede utilizar para supervisar Oracle SGA es el comando ipcs. El comando ipcs muestra el tamaño de cada segmento de memoria compartida para el SGA. Si no hay suficiente memoria para que todo el SGA quepa en una pieza de memoria contigua, el SGA se construirá en segmentos de memoria no contiguos. En caso de un bloqueo instantáneo, es posible que la memoria no se libere. Si esto le sucede, tenga en cuenta que el comando ipcrm elimina los segmentos (ipcrm –m para segmentos de memoria e ipcrm –s para segmentos de semáforo). Utilice ipcs-b en Solaris e ipcs –a en Linux, HPUX y AIX.
En el ejemplo anterior, el SGA está construido en tres segmentos no contiguos (que conforman el SGA de más de 100 M). La instancia se apaga y se inicia con un SGA más pequeño (por lo que el SGA se compone de piezas de memoria contiguas). Después de que el SGA se haya reducido a 70 M, vuelvo a emitir el comando ipcs:
El ajuste de todo el SGA en un solo segmento de memoria compartida es generalmente preferible debido a la sobrecarga que se puede requerir para rastrear más de un segmento y el tiempo requerido para cambiar de un segmento a otro. Puede aumentar el tamaño máximo de un único segmento de memoria compartida aumentando la configuración SHMMAX en el archivo /etc/system (o /etc/sysctl).conf dependiendo de la versión). Consulte la documentación de instalación de Oracle para obtener información más específica para su plataforma. En Solaris 10, la configuración de los parámetros de memoria compartida se movió al control de recursos, por lo que si modifica el archivo /etc/system, cualquier cambio que realice se ignorará. Por último, si configura páginas de Hug, la memoria se extrae de un grupo y no se utilizan semáforos. AMM requiere el uso de semáforos, por lo que si configura MEMORY_TARGET, no puede usar páginas Hug.
SUGERENCIA
Utilice el comando ipcs para ver si su SGA se construye utilizando varias piezas de memoria no contiguas. Un bloqueo de la base de datos puede causar problemas al no liberar la memoria. Use el comando ipcrm (solo si las piezas SGA no se liberan después de un bloqueo de la base de datos) para luego eliminar las piezas SGA de la memoria. No emita el comando ipcrm con una base de datos en ejecución.