Inicio » Oracle » Parámetros del int » Semáforos oracle

Semáforos oracle

Oracle  necesita asignar un número de semáforos igual al número parámetro procesos en el “init.ora”. El parámeto processes especifica el número máximo de procesos de usuario del sistema operativo que se pueden conectar simultáneamente a Oracle. Este valor debe permitir todos los procesos de background, los procesos de colas de trabajo y las ejecuciones paralelas. Cuando una instancia Oracle se inicializa, todos los semáforos requeridos se asignan. Los semáforos se asignan en grupos.

Parámetros del /etc/system relacionados con la asignación de semáforos

SEMMSL= Número de semáforos en un conjunto de semáforos.
SEMMNI= Máximo número de conjuntos de semáforos.
SEMMNS= Número de semáforos en el sistema.
SEMOPM= Maximo número de operaciones por llamada semop = 100
SEMVMX = máximo número de semáforos = 32767

A pesar de que esté modificado el /etc/system, la manera más veraz de comprobarlo es:

> sysdef | grep SEMMNS

Dado que cada proceso Oracle requiere un semáforo, el número que se asigna es igual al valor del parámetro PROCESSES del init.ora. El número total de semáforos requeridos es la suma del parámetro PROCESSES de todas las instancias que existen en la máquina.

Puedes asignar todos los semáforos en uno o más grupos de semáforos. Si SEMMSL=PROCESSES, solo se necesita un grupo de semáforos. El máximo número de semáforos que se puede asignar será el menor entre (SEMMSL*SEMMNI) y SEMMNS. Si SEMMSL no es igual a PROCESSES, asegúrate que el número total de semáforos requeridos (la suma de procesos) no excede el máximo de SEMMSL*SEMMNI o SEMMNS. Por ejemplo, si SEMMSL=25 y SEMMNI=10, el total de semáforos requeridos (suma del parámetro Procesos) no debe exceder los 250 (10 grupos de semáforos * 25 semáforos/grupos).
Algunos sistemas operativos tienen un número máximo de semáforos.

Para  comprobar que semáforos han sido asignados, se utiliza el comando de Unix ipcs –bs

Ejemplo:ipcs -bs 
$ ipcs -bs
IPC status from as of Wed Dec  9 12:54:46 CET 2009
T         ID      KEY        MODE        OWNER    GROUP NSEMS
Semaphores:
s     196608   0x7af8298   --ra-r-----   oracle      dba   154
s     196609   0xe08a81b4  --ra-r-----   oracle      dba   154
s     196610   0xe16c6134  --ra-r-----   oracle      dba   154
s     196611   0x6f6a80    --ra-r-----   oracle      dba  1504

NSEMS=El número de semáforos en un grupo de semáforoEn este caso teníamos 4 instancias, 3 con el parámetro processes 150 y una con el parámetro processes igual a 1504

Caso Práctico:

Problema:

Nos reportan este error al intentar levantar una de las instancias en uno de los nodos del cluster:

symptom: ORA-27302: failure occurred at: skgpwreset1
symptom: ORA-27303: additional information: invalid shared ctx
symptom: ORA-27146 : post/wait initialization failed
symptom: ORA-27300: OS system dependent operation:semget failed with status: 28
symptom: ORA-27301: OS failure message: No space left on device
symptom: ORA-27302: failure occurred at: sskgpcreates

Diagnostico:

Era un cluster con 4 instancias en cada nodo, los pasos que seguimos fueron lo siguiente:

1.    Comprobar que los parámetro del /etc/system fueran correctos en ambos nodo lo del cluster. Y efectivamente estaban bien

2.    Comprobar que el suma del parámetro processes de las cuatro instancias no fuera mayor que el menor entre el menor entre (SEMMSL*SEMMNI) y SEMMNS. Y efectivamente no era mayor.

3.    Esto nos hizo suponer que seguramente se habían quedado pillados semáforos en el sistema operativo, lo comprobamos con un ipcs –bs y efectivamente aunque solo había tres instancias levantadas, existían 4 grupos de semáforos.

Solución:

Borrar el grupo de semáforos pillado:

  ipcrm-s 196611

Mas información en http://www.orafaq.com/node/8

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 )

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 )

Google+ photo

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

Conectando a %s