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.
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.
Can we have english version of this post?.
ResponderEliminar