x

Cómo revisar los bloqueos actuales en una base de datos Oracle

Por sara wayne
El bloqueo que se gesta con el programa Oracle protege la integridad de los datos.
lock image by Dwight Davis from Fotolia.com

El programa Oracle utiliza una función de bloqueo para garantizar que más de una función actualice los datos a la vez y, de esta manera, mantener la integridad de la información. El bloqueo ocurre en muchos niveles, incluyendo las filas, tablas y espacios en tablas. El bloqueo a nivel de usuario, el comando "commit" hace que los cambios sean permanentes y elimina el bloqueo. El comando "rollback" revierte los cambios antes de liberar el bloqueo. El programa Oracle registra la información del bloqueo en una tabla del sistema, el cual se denomina "v$lock" y lo podrás consultar usando el Lenguaje de consulta estructurado (SQL).

Paso 1

Revisa la tabla Oracle "v$lock" para bloquear la información. Utiliza la opción "Seleccionar" para ver "sid", "type", "lmode" y "request". Sid representa el número ID de sesión e identifica la sesión que posee el bloqueo.

select sid, type, lmode, request from v$lock;

Paso 2

Une la tabla Oracle "v$session" a la tabla "v$lock" para determinar quién está bloqueando la base de datos. Une la sesión sid (sesión ID) para encontrar el nombre de usuario.

select s.username, s.sid, l.type, l.lmode, l.request from v$lock l, v$session s where l.sid = s.sid;

Paso 3

Consulta la tabla "v$locked_object" para obtener más información sobre lo que la está bloqueando. Une la tabla "dba_objects" para el nombre y el tipo. El nombre del objeto indica que está bloqueado y las columnas del nombre de usuario identifica a quién ha creado el bloqueo.

select oracle_username os_user_name, locked_mode, object_name, object_type from v$locked_object lo,dba_objects do where lo.object_id = do.object_id;