Skip to content

Instantly share code, notes, and snippets.

@rmgimenez
Created June 7, 2016 12:21
Show Gist options
  • Save rmgimenez/34057643767e28dbe61e24a5842b567a to your computer and use it in GitHub Desktop.
Save rmgimenez/34057643767e28dbe61e24a5842b567a to your computer and use it in GitHub Desktop.
Script para destravar registro travado no banco de dados Oracle
Select l1.sid,
' esta bloqueando ' "Esta bloqueando",
l2.sid,
' matar esse => ' "Matar esse",
l1.sid,
l3.serial#,
'ALTER SYSTEM KILL SESSION '''|| l1.sid || ','|| l3.serial# ||'''' comando
From v$lock l1,
v$lock l2,
v$session l3
Where l1.block = 1
And l2.request > 0
And l1.id1=l2.id1
And l1.id2=l2.id2
and l1.sid = l3.sid
order by 1
--ALTER SYSTEM KILL SESSION '872,9183'
/*
SELECT
S.LOCKWAIT,
v.ORACLE_USERNAME,
v.OS_USER_NAME,
s.sid,
s.serial#,
a.OBJECT_NAME,
s.status,
s.fixed_table_sequence,
a.object_type,
s.TERMINAL,
to_char(s.logon_time,'DD/MM/YYYY HH24:MI:SS') LOGON_TIME
FROM
v$locked_object v,
all_objects a,
v$session s
WHERE
a.OBJECT_ID = v.OBJECT_ID AND
s.SID = v.SESSION_ID
--and s.SID in (769, 408)
ORDER BY s.logon_time
/*
ALTER SYSTEM KILL SESSION '471,20002'
Se a coluna lockwait aparecer preenchida, significa que essa sessão está em
lock.
ATENÇÃO: NÃO MATAR A SESSÃO EM LOCK, O PROBLEMA NÃO SERÁ RESOLVIDO.
Ação: Procurar pelo nome do objeto que essa sessão está tentando atualizar
em outros registros onde a coluna lockwait não está preenchida.
Através do SID e SERIAL# da sessão que está com o lockwait em branco efetuar
o seguinte comando:
ALTER SYSTEM KILL SESSION '642,36866';
select sid, serial#, username, osuser, process, machine,
ROW_WAIT_OBJ#, ROW_WAIT_FILE#, ROW_WAIT_BLOCK#, ROW_WAIT_ROW#
from v$session
where lockwait is not null
ALTER SYSTEM KILL SESSION '671,29074'
Select l1.sid,
' esta bloqueando ' "Esta bloqueando",
l2.sid,
' matar esse => ' "Matar esse",
l1.sid,
l3.serial#,
'ALTER SYSTEM KILL SESSION '''|| l1.sid || ','|| l3.serial# ||'''' comando
From v$lock l1,
v$lock l2,
v$session l3
Where l1.block = 1
And l2.request > 0
And l1.id1=l2.id1
And l1.id2=l2.id2
and l1.sid = l3.sid
order by 1
ALTER SYSTEM KILL SESSION '405,18427'
Select l1.sid, ' esta bloqueando ', l2.sid
From v$lock l1, v$lock l2
Where l1.block = 1
And l2.request > 0
And l1.id1=l2.id1
And l1.id2=l2.id2
order by 1
*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment