Liberar semaforos de SGA (ipcs) | ExpoDBA

Liberar semaforos de SGA (ipcs)

Liberar semaforos de SGA (ipcs)

Luego de que el PMON muera,  porque lo hayan matado o lo que fuera, puede haber quedado el semáforo sobre la SGA bloqueado, por lo tanto la memoria no se libera y no se puede volver a levantar la base (existe la memoria pero no los procesos).

 

Esto se puede manifestar como una sesion colgada al momento de conectarse, o una conexión con sqlplus que al intentar hacer un shutdown indica que no hay instancias activas (y es verdad porque no está el pmon), y que al querer hacer un startup indica que no se pudo reservar memoria (Es verdad porque ya está reservada)

 

En estos casos hay que liberar la memoria ocupada por la SGA, y eso lo hacemos liberando el semaforo que contiene este segmento de memoria.

 

ipcs -m muestra todos los semaforos bloqueados sobre segmentos de memoria:

server> ipcs -m

IPC status from /dev/mem as of Thu Feb 17 19:09:29 NFT 2011
T    ID    KEY    MODE    OWNER    GROUP
Shared Memory:

m 757071918 0xffffffff --rw-rw-rw-      root    system
m 855638063 0xdb93c4ec --rw-r-----    oracle   dba
m 147849266 0xffffffff --rw-------      root    system
m   2097208 0x4100232d --rw-rw-rw-    patrol staff

 

En este caso la base de datos está levantada con el usuario del sistema operativo oracle, por lo que el bloque que le corresponde es el

m 855638063 0xdb93c4ec --rw-r-----   oracle      dba

 

Por lo que debemos entonces liberar ese bloque de memoria y lo identificamos por la 2da columna del comando, así que ejecutamos:

ipcrm -m 855638063

 

Una vez ejecutado el comando la memoria ya queda liberada y se puede realizar un startup sin problemas.

 

Este caso es útil cuando tenemos un usuario distinto por cada base de datos o solo una base de datos levantada.

En el caso de que tengamos con el usuario Oracle más de una base de datos levantada va a ser un poco más complicado identificar la sesion.

 

La explicación completa en la nota: 

Memoria y semaforos bloqueados shutdown abort (ORA-7307, ORA-27123, etc)