[ 2017-09-12 ]

Automatic Memory Management en Oracle ASM

Cada vez que una instancia ASM se inicia, se le asigna un área de memoria compartida denominada System Global Area (SGA) al igual que ocurre con una base de datos normal.  Además de esta asignación de memoria, también se inician los procesos background correspondientes a Oracle ASM.
La combinación de los procesos background y la memoria SGA asignada, es denominada "instancia ASM". Esta instancia representa los componentes de CPU y RAM en un entorno ASM en ejecución.
La asignación y uso de memoria SGA en una instancia ASM es diferente al de una instancia de base de datos. La SGA de ASM se divide en cuatro áreas principales:

  • Shared Pool: Usada para información de metadatos.
  • Large Pool: Utilizada para operaciones en paralelo.
  • ASM Cache: Se usa para leer y escribir bloques durante las operaciones de rebalanceo.
  • Free Memory: Memoria disponible NO asignada.    
Podemos verlo en el siguiente gráfico:


Si nos conectamos a la instancia ASM podemos ver la configuración de la memoria:

[grid@server01 ~]$ export ORACLE_SID=+ASM1
[grid@server01 ~]$ sqlplus / as sysasm

SQL*Plus: Release 11.2.0.4.0 Production on Tue Sep 12 18:56:47 2017

Copyright (c) 1982, 2013, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Real Application Clusters and Automatic Storage Management options

SQL> show parameter memory

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
memory_max_target                    big integer 1076M
memory_target                        big integer 1076M


SQL> show sga

Total System Global Area 1135747072 bytes
Fixed Size                  2260728 bytes
Variable Size            1108320520 bytes
ASM Cache                  25165824 bytes

El modo de gestión “Automatic Memory Management (AMM)” se encuentra habilitado por defecto, y de esta manera se ajustarán dinámicamente los tamaños de los componentes individuales de memoria SGA.
A grandes rasgos, la cantidad de memoria que se necesita para una instancia ASM va a depender de la cantidad de espacio en disco que será administrada por ASM. Por tal motivo es probable que con la utilización y debido al crecimiento  del storage sea necesario posteriormente algún ajuste.

Al igual que en una instancia de base de datos normal, “Automatic Memory Management (AMM)”  gestiona de manera automática los parámetros relacionados con la memoria de Oracle ASM, utilizando para ello el parámetro MEMORY_TARGET.  Como comentaba anteriormente, AMM  será habilitado de manera predeterminada, aun cuando el parámetro no esté definido de manera explícita.
La cantidad mínima de memoria recomendada para una instancia ASM es de 1GB, por tal motivo en valor mínimo para el parámetro MEMORY_TARGET es ese. En el caso de ser especificado por debajo, Oracle lo lleva a 1GB de manera automática.
El valor "default" utilizado para MEMORY_TARGET resulta aceptable para la mayoría de los entornos. Establecido este parámetro se administrará la memoria completa de la instancia ASM.

Oracle recomienda encarecidamente la utilización de la administración automática de memoria para Oracle ASM.

Si no se establece un valor para MEMORY_TARGET, pero se establecen valores para otros parámetros relacionados con la memoria, Oracle calculará internamente el valor óptimo para MEMORY_TARGET en función de esos parámetros. También la gestión automática, puede llegar a aumentar  el valor de MEMORY_TARGET dinámicamente, hasta el  límite del parámetro MEMORY_MAX_TARGET, tal como sucede en una instancia de base de datos tradicional.

Aunque no es lo recomendable, se puede deshabilitar la administración automática de memoria estableciendo el valor de MEMORY_TARGET en 0 en el archivo de parámetros de Oracle ASM o simplemente ejecutando la instrucción ALTER SYSTEM SET MEMORY_TARGET = 0 conectados a la instancia ASM con SQL*Plus.
Cuando se deshabilita la administración automática de memoria, Oracle vuelve al modo de gestión  automática de memoria compartida y de memoria PGA.  Para volver a la funcionalidad de Oracle Database 10g Release 2 (10.2) de administrar manualmente la memoria SGA de ASM, tenemos que ejecutar también la sentencia ALTER SYSTEM SET SGA_TARGET = 0.
Personalmente, creo que esta no debería ser necesario salvo en determinados casos puntuales.

A menos que se especifique explícitamente, el comportamiento de los parámetros de "Automatic Memory Management" en las instancias de Oracle ASM  es similar  a de las instancias de Oracle Database.

Hasta aquí, una breve introducción a la gestión de memoria en una instancia ASM.

1 comentario: