[oracle] LOCK – Como buscar os dados que estão em lock

27 09 2011

Como reproduzir o problema

1) Em uma sessão A em transaction off


create table tstlock (foo varchar2(1), bar varchar2(1));
insert into tstlock values (1,'a');
insert into tstlock values (2, 'b');
commit;
update tstlock set bar='a' where bar='a' ;

2) Em uma sessão b em transaction off


update tstlock set bar='a' where bar='a' ;

Como achar os dados do lock

1) Recuperar que sessão esta boqueando outras sessões


select s1.username || '@' || s1.machine
|| ' ( SID=' || s1.sid || ' ) is blocking '
|| s2.username || '@' || s2.machine || ' ( SID=' || s2.sid || ' ) ' AS blocking_status
from v$lock l1, v$session s1, v$lock l2, v$session s2
where s1.sid=l1.sid and s2.sid=l2.sid
and l1.BLOCK=1 and l2.request > 0
and l1.id1 = l2.id1
and l2.id2 = l2.id2 ;

Exemplo de saída:


"NMS@cardoso ( SID=489 ) is blocking NMS@cardoso ( SID=479 )"

2) Busca ID do objeto que esta em lock


select row_wait_obj#, row_wait_file#, row_wait_block#, row_wait_row# from v$session where sid=479 ;

Exemplo de saída:


"82646 6 26236 0"

3) Busca NOME do objeto que esta em lock


select object_name from dba_objects where object_id=82646 ;

Exemplo de saída:


TSTLOCK

4) Busca o ID da linha que esta em lock


select 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 v$session s, dba_objects do
where sid=479
and s.ROW_WAIT_OBJ# = do.OBJECT_ID ;

Exemplo de saída:


"TSTLOCK 82646 6 26236 0 AAAULWAAGAAAGZ8AAA"

5) Mostra linha que esta em LOCK


select * from tstlock where rowid='AAAULWAAGAAAGZ8AAA' ;

Exemplo de saída:


"1 a"

FONTE: AQUI

Anúncios

Ações

Information

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s




%d blogueiros gostam disto: