A veces nos encontramos errores técnicos en aplicaciones, scripts, etc. y los resolvemos pero no guardamos en ningún lado la solución y los síntomas. Quise hacer una especie de repositorio de problemas/soluciones, y tener disponibles mis experiencias para todos. Espero no volver a decir "¡esto ya me había pasado, pero no me acuerdo cómo lo resolví!" [temas: Oracle DB, korn shell scripts, Oracle App Server, Oracle Collaboration Suite, Windows, Linux, ...]

jueves, octubre 19, 2006

cómo verificar objetos bloqueados en una Base de Datos Oracle

Existen dos vistas que registran los bloqueos de objetos en una base de datos oracle 10g:

1. DBA_DDL_LOCKS
2. DBA_DML_LOCKS

La primera registra los bloqueos por compilaciones, comandos alter ..., etc. La segunda registra los bloqueos por update, delete, insert, select.

La vista DBA_DML_LOCKS tiene un campo llamado BLOCKING_OTHERS, el cual registra si hay otros objetos "esperando" a que se desbloquee el objeto registrado como bloqueado.

Ambas vistas están accesibles para el usuario sys o system, y son útiles para detectar si algún objeto está bloqueado en modo "Exclusive" cuando ocurre un error como este:

ORA-04021: timeout occurred while waiting to lock object schema_user.object

Este error salió cuando se intentó compilar un package y dicho package estaba entretenido ejecutando un cliclo infinito. :) La solución fue reiniciar la aplicación (OAS) para poder volver a compilar el package. Quizá hubiera sido mejor identificar la sesión o sesiones bloqueadas y "matarlas", pero como no era un proceso crítico y no había mucho tiempo, se decidió reiniciar todo.

1 Comments:

Anonymous Anónimo said...

vaya que los ise's son raros... sobretodo si son expses.... a ver cuando se arma el billar...

saludos un iec :D

7:59 p.m.

 

Publicar un comentario

<< Home