Tengo una máquina potente con 70 GB de RAM. Creé una instancia de Oracle con 20 GB como sga_target. No puedo crear otra instancia de Oracle sga_target > 10G
incluso cuando mantengo la primera base de datos inactiva. Si lo configuro sga_target >=10G
da el siguiente error al inicio:
ORA-27104: los límites definidos por el sistema para la memoria compartida estaban mal configurados
Aunque free -m
muestra que hay suficiente memoria disponible sin embargo:
total used free shared buffers cached
Mem: 72419 34490 37928 0 618 28159
-/+ buffers/cache: 5711 66707
Swap: 2047 0 2047
¿Necesito aumentar el espacio de intercambio? Cualquier puntero a este respecto es muy apreciado.
También para 70 GB de memoria, para crear muchas instancias, ¿cuál sería el mejor valor para el espacio de intercambio? ¿Hay alguna forma de calcular esto? Mi objetivo es tener al menos dos instancias cada una sga_target=20G
y mantendré solo una instancia a la vez. Si me falta algún concepto aquí?
La salida de ipcs -im
es la siguiente
------ Shared Memory Limits --------
max number of segments = 4096
max seg size (kbytes) = 4194303
max total shared memory (kbytes) = 8388608
min seg size (bytes) = 1
fuente
El parámetro del kernel debe configurarse correctamente:
Guía de instalación de la base de datos Oracle, 11g versión 2 (11.2) para Linux, número de pieza E24321-04, 2.10 Configuración de los parámetros del kernel para Linux ,
fuente
Establecer el valor shmmax depende de si el sistema operativo es de 32 bits o de 64 bits. Hay una nota de metalink que explica esto en detalle.
Valores máximos de SHMMAX para Linux x86 y x86-64 [ID 567506.1]
Por favor échale un vistazo.
También hay una nota sobre Memoria compartida / Semáforos para Oracle que debería ser una lectura interesante.
TECNOLOGÍA: Semáforos de Unix y memoria compartida explicados [ID 15566.1]
Saludos, Nagendra Chillale
fuente