ORA-00845: MEMORY_TARGET not supported on this system

Hace unos dias se tuvo que hacer un redimensionamiento de la memoria donde hubo dos componentes en la memoria:

  1. Quitar del manejo automatico la memoria.
  2. Aumentar el valor de la memoria.

Revisamos los parametros y vemos que la memoria se encuentra configurada de modo automatica.

SQL> sho parameter sga

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
lock_sga                             boolean     FALSE
pre_page_sga                         boolean     FALSE
sga_max_size                         big integer 7960M
sga_target                           big integer 0

Configuramos los parametros para colocar los nuevos valores:

SQL> alter system set sga_max_size = 10240M scope=spfile;
System altered.
SQL>

Cuando inicio la instancia me encuento con el siguiente error:

SQL> startup mount
ORA-00845: MEMORY_TARGET not supported on this system
SQL>

Bien, revisemos que nos cuenta Oracle acerca de ello:

00845, 00000, "MEMORY_TARGET not supported on this system"
// *Cause: The MEMORY_TARGET parameter was not supported on this operating system 
or /dev/shm was not sized correctly on Linux.
// *Action: Refer to documentation for a list of supported operating systems.
Or, size /dev/shm to be at least the SGA_MAX_SIZE on each Oracle instance running on the system.

Observemos que cuando la instancia de Oracle tiene configurado el uso de la memoria de forma automatica, requiere en los Sistemas Operativos Linux el uso de la archivo temporal de almacenamiento llamado /dev/shm .

El concepto de tmpfs utiliza la memoria RAM para el almacenamiento de respaldo. Puede funcionar como una memoria compartida de aplicación que facilita el IPC.

El filesystem /tmp es la ubicación de los archivos temporales, cunpliendo asi con el estandar de Sistemas de Archivos, que se cumplimenta en la mayoria de sistemas Unix y de las distribuciones de Linux.

Ya que la RAM es mucho más rápido que el almacenamiento en disco, se puede utilizar el sistema de archivos /dev/shm para mejorar el rendimiento, en lugar del /tmp,  si se tratare de un proceso es intensivas de I/O y utiliza ampliamente archivos temporales.

El uso de la memoria automática requiere el uso de /dev/shm en Linux para la administración de la SGA y la PGA.

Este error también puede ocurrir si el parámetro memory_target o memory_max_target son mayores al que se encuentra configurado en /dev/shm

Entendiendo esto, aseguremonos que el tamaño de /dev/shm es suficiente.

Lo haremos por medio de la ejecucion del siguiente comando.

# mount -t tmpfs shmfs -o size=15000m /dev/shm

Para que el parametro quede seteado de forma permanente debemos hacerlo desde el archivo de configuracion /etc/fstab de acuerdo con la opinion del administrador de OS para que los valores se validen.

[root@src01 ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Thu Jul 30 22:33:34 2015
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/vg_labo01-lv_root /                       ext4    defaults        1 1
UUID=59adbf2c-8e57-49de-9461-b34a9d6a56a2 /boot                   ext4    defaults        1 2
/dev/mapper/vg_labo01-lv_swap swap                    swap    defaults        0 0
#tmpfs                   /dev/shm                tmpfs   defaults        0 0
tmpfs                   /dev/shm                tmpfs    15000M       0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
[root@src01 ~]#

Luego probamos que los parametros impactados son los correctos por medio de la ejecucion del startup de la base.

$ sqlplus / as sysdba
SQL> startup mount
ORACLE instance started.
...
Database mounted.
SQL>

 

2 thoughts on “ORA-00845: MEMORY_TARGET not supported on this system

Comments are closed.