Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Bloqueos de bbdd

Estas en el tema de Bloqueos de bbdd en el foro de Oracle en Foros del Web. Buenas a todos, Esta vez mi pregunta va sobre los bloqueos de bbdd. Alguien podría decirme exactamente qué es esto?? he leído muchas cosas y ...
  #1 (permalink)  
Antiguo 17/02/2010, 09:45
 
Fecha de Ingreso: enero-2010
Mensajes: 7
Antigüedad: 10 años, 9 meses
Puntos: 0
Bloqueos de bbdd

Buenas a todos,

Esta vez mi pregunta va sobre los bloqueos de bbdd.

Alguien podría decirme exactamente qué es esto?? he leído muchas cosas y todas varían bastante unas de otras. qué son, cuando suceden, como poder detectarlos y monitorizarlos...


Muchas gracias.
  #2 (permalink)  
Antiguo 22/02/2010, 08:51
Avatar de 8vio  
Fecha de Ingreso: marzo-2008
Ubicación: Detras del monitor
Mensajes: 168
Antigüedad: 12 años, 6 meses
Puntos: 6
Respuesta: Bloqueos de bbdd

Lo primero que tienes que saber es que existen dos tipo de bloqueos

1) DML o Bloqueos de Data:

- A nivel de filas

- A nivel de tabla (Este a su vez tiene varios modos por ejm row exclusive(rx) (insert, update, delete) )

2) DDL o Bloqueos de diccionario.

Este tema tiene mucha tela de donde cortar pero en general los bloqueos consisten en mantener la integridad de la data y de las estructuras de datos cuando son accedidas concurrentemente.

Si consigo un material que valga la pena de este tema lo anexo.

Para hacer memoria: No se si te acuerdas en la uni o en los cursos de los abrazos mortales( en ese momento te hablaban de bloqueos ).
  #3 (permalink)  
Antiguo 22/02/2010, 08:54
Avatar de 8vio  
Fecha de Ingreso: marzo-2008
Ubicación: Detras del monitor
Mensajes: 168
Antigüedad: 12 años, 6 meses
Puntos: 6
Respuesta: Bloqueos de bbdd

Algunas vistas para monitorear bloqueos

V$LOCK
V$LOCKED_OBJECT
DBA_WAITERS
DBA_BLOCKERS

Saludos.
  #4 (permalink)  
Antiguo 23/02/2010, 02:30
 
Fecha de Ingreso: junio-2007
Mensajes: 891
Antigüedad: 13 años, 4 meses
Puntos: 43
Respuesta: Bloqueos de bbdd

Yo uso esta query de manera frecuente.

Cuando hay bloqueos me los muestra con el usuario bloqueado / bloqueador, la maquina de los dos, etc etc etc.
Para ciertas tareas es super util.

SELECT /*+ CHOOSE */
BS.USERNAME "BLOCKING_USER",
BS.USERNAME "DB_USER",
BS.OSUSER "BLOCKING_OSUSER",
WS.USERNAME "WAITING_USER",
WS.OSUSER "WAITING_OSUSER",
BS.SID "SID",
WS.SID "WSID",
BS.SQL_ADDRESS "ADDRESS",
BS.SQL_HASH_VALUE "SQL_HASH",
BS.PROGRAM "BLOCKING_APP",
WS.PROGRAM "WAITING_APP",
BS.MACHINE "BLOCKING_MACHINE",
WS.MACHINE "WAITING_MACHINE",
BS.OSUSER "BLOCKING_OS_USER",
WS.OSUSER "WAITING_OS_USER",
BS.SERIAL# "SERIAL",
DECODE(wk.TYPE,
'MR', 'Media Recovery',
'RT', 'Redo Thread',
'UN', 'USER Name',
'TX', 'Transaction',
'TM', 'DML',
'UL', 'PL/SQL USER LOCK',
'DX', 'Distributed Xaction',
'CF', 'Control FILE',
'IS', 'Instance State',
'FS', 'FILE SET',
'IR', 'Instance Recovery',
'ST', 'Disk SPACE Transaction',
'TS', 'Temp Segment',
'IV', 'Library Cache Invalidation',
'LS', 'LOG START OR Switch',
'RW', 'ROW Wait',
'SQ', 'Sequence Number',
'TE', 'Extend TABLE',
'TT', 'Temp TABLE',
wk.TYPE) lock_type,
DECODE(hk.lmode,
0, 'None',
1, 'NULL',
2, 'ROW-S (SS)',
3, 'ROW-X (SX)',
4, 'SHARE',
5, 'S/ROW-X (SSX)',
6, 'EXCLUSIVE',
TO_CHAR(hk.lmode)) mode_held,
DECODE(wk.request,
0, 'None',
1, 'NULL',
2, 'ROW-S (SS)',
3, 'ROW-X (SX)',
4, 'SHARE',
5, 'S/ROW-X (SSX)',
6, 'EXCLUSIVE',
TO_CHAR(wk.request)) mode_requested,
TO_CHAR(hk.id1) lock_id1,
TO_CHAR(hk.id2) lock_id2
FROM
gv$lock hk, gv$session bs,
gv$lock wk, gv$session ws
WHERE
hk.block = 1
AND hk.lmode != 0
AND hk.lmode != 1
AND wk.request != 0
AND wk.TYPE (+) = hk.TYPE
AND wk.id1 (+) = hk.id1
AND wk.id2 (+) = hk.id2
AND hk.sid = bs.sid(+)
AND wk.sid = ws.sid(+)
ORDER BY 1

Etiquetas: bbdd, bloqueo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:12.