¿Que relación tiene la partición tmpfs /dev/shm con  AMM memory_target? – ORA-00845: MEMORY_TARGET not supported on this system

¿Se han percatado que cada vez que consultamos los filesystem de nuestros entornos Linux, tenemos un filesystem tmpfs /dev/shm ?.

shm_memory

La partición del sistema /dev/shm, es la memoria compartida del servidor, esta tiene relación directa con la memoria asignada al SGA en bases de datos Oracle cuando usamos Automatic Memory Management(AMM).
Como regla, la cantidad de memoria asignada a la partición /dev/shm debe ser lo suficientemente grande para soportar a los parámetros MEMORY_TARGET y MAX_MEMORY_TARGET,como buena practica /dev/shm, debe ser al menos poco mas de la suma total del parámetro max_memory_target de todas las instancias de Base de Datos que corren en un servidor.

Por ejemplo, si tenemos 3 base de datos desplegadas en un mismo servidor:

tmpfs /dev/shm > max_memory_target BD1 + max_memory_target BD2 + max_memory_target BD3

Es recomendable dimensionar /dev/shm teniendo en cuenta que debe quedar al menos el 5%-10% para el overhead del sistema operativo.

NOTA: En entornos RAC,este cálculo debe realizarse por cada nodo.

Si asignamos al parámetro memory_target mayor valor que el disponible en /dev/shm, oracle nos mostrará el siguiente mensaje de error:
ORA-00845: MEMORY_TARGET not supported on this system
Si creamos una nueva BD en un servidor de base de datos, que ya tiene previamente otras BDs creadas y no hay mas memoria SHM disponible en el servidor, se mostrará el siguiente mensaje:
SOLUCIÓN:
Para superar este inconveniente, se puede optar por dos opciones:
  • A)Disminuir el valor del parámetro memory_target
  • B)Aumentar espacio asignado a la partición tempfs /dev/shm.
La opción A) parece muy obvia , así que vayamos por la opción B):
En caso de requerir adicionar mayor espacio al SHM , tu Administrador de Sistema Operativo, debería realizar los siguientes pasos con el usuario root:

.

# umount tmpfs
# mount -t tmpfs shmfs -o size=15g /dev/shm
En caso se muestre el siguiente mensaje
“umount: /path: device is busy”
Esto es por que la memoria compartida aun esta en uso, para investigar que proceso lo usa podemos usar-> lsof /dev/shm y liberar dichos procesos  ó usar la opción force umount -f.
Recordar, que para hacer persistente este cambio,posteriormente debe ser registrado en el fstab.
[root@oracle-jeanp~]# cat /etc/fstab
tmpfs /dev/shm tmpfs size=15g  0  0

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s