› Fóruns › Banco de dados Oracle › Lockar Linha, tem como?? › Lockar Linha, tem como??
Li por alto novamente todas as postagens
e em dado momento vc diz que a origem dos problemas
é que aplicação fica bloqueada e não cosneguem identificar a
causa real do problema correto?!
No momento do problema tente responder esses questionamentos abaixo e poderá esclarecer as coisas.
1)Quem está bloqueando quem ?
2)Qual objetos é disputado pelas sessões ?
3)Qual linha da tabela está obstruida ?
4) O que o usuário está rodando?
Respostas.
1)
•SELECT substr(DECODE(request,0,’Holder: ‘,’Waiter: ‘)||sid,1,12) sess,
id1, id2, lmode, request, type, inst_id
FROM GV$LOCK
WHERE (id1, id2, type) IN
(SELECT id1, id2, type FROM GV$LOCK WHERE request>0)
ORDER BY id1, request;
2)
•select do.owner
, do.object_name
, row_wait_obj#
, row_wait_file#
, row_wait_block#
, row_wait_row#
, dbms_rowid.rowid_create (1, ROW_WAIT_OBJ#, ROW_WAIT_FILE#,
ROW_WAIT_BLOCK#, ROW_WAIT_ROW#)
from gv$session s
, dba_objects do
where sid= SID – Waiter da query 1
and s.ROW_WAIT_OBJ# = do.OBJECT_ID
/
3)
•select * from owner.table where
rowid = rowid – obtido na query 2 ;
— está query só funciona no momento da contenção
4)
Select * from v$open_cursor where sid = ‘Coleaquiodisbloqueadonaprimeiraconsulta’
😯
se for só isso… o Brasil goleia o chile hoje!! rsrs 😯