ORA-00054: resource busy and acquire with NOWAIT specified

Ana Jim?x
30 de Enero del 2004
Hola,

Creo que se me ha bloqueado una tabla de mi base de datos y estoy intentado desbloquearla, pero no se muy bien como hacerlo, ¿algun consejao? He realizado un commit y nada. Estoy ejecutando una aplication de java (con Webshere) y al realizar un insert en una tabla se me para la aplicación.

Gracias
Un saludo

Ana.

Douglas
30 de Enero del 2004
Hola.

Tu problema es que se te han quedado cursores abiertos que bloquean la tabla o algunos de los registros de la misma.

Soluciones:
- Cierra los cursores de la base de datos. Si no tienes acceso de dba te recomiendo que cierres el pool de conexiones de tu websphere.
Controla muy bien el tema de los cursores mediante pool, si no haces un close se te quedaran abiertos y llegaras a petar la memoria de Oracle.

- Libera la tabla o registros a mano. Para ello necesitas permiso para borrar registros en tablas propias del sistema.

Recomiendaciones:
Cierra cursores
Cierra el objeto conexión de jdbc
Al lorito con los insert select que a veces dejan bloqueos.

Un saludo

set
30 de Enero del 2004
otra cosa que puedes hacer es
sacar al usuario que pego la base de datos para asegurarse de que no tiene algua otra session activa,
luego consulta en la tabla de v$session con un query parecido a este:
select sid, serial#, username, osuser, status
from v$session
where upper (osuser) = '&osuser'
order by osuser
/

en caso de que detectes procesos del usuario entonces lo que debes hacer es matarlos con:

alter system kill session 'sid, serial#';

en donde el sid y el serial# son los que retorna el query.
se debe digitar con la comilla asi como esta y separado por al coma.

Slds