O script abaixo demonstra todos os objetos que estão locados
|
select o.OBJECT_TYPE
, o.object_name
, L.SESSION_ID
, S.SERIAL#
, nvl(lockwait,'active') "Wait"
, decode(l.locked_mode,
2, 'row share',
3, 'row exclusive',
4, 'share',
5, 'share row exclusive',
6, 'exclusive', 'unknown') "locked_mode"
, L.ORACLE_USERNAME
, S.STATUS
, S.OSUSER
, S.MACHINE
, S.PROGRAM
, S.MODULE
, S.LOGON_TIME
from v$locked_object l
, user_objects o
, v$session s
where l.object_id = o.OBJECT_ID
and s.sid = l.session_id
|
O script abaixo cria um script para matar a sessão que está locada
|
SELECT '/* ' || o.object_type || ': ' || o.object_name || ' */ ' || CHR(13) || CHR(10) ||
' -- USER_NAME: ' || L.ORACLE_USERNAME || CHR(13) || CHR(10) ||
' -- STATUS : ' || S.STATUS || CHR(13) || CHR(10) ||
' -- OSUSER : ' || S.OSUSER || CHR(13) || CHR(10) ||
' -- MACHINE : ' || S.MACHINE || CHR(13) || CHR(10) ||
' -- PROGRAM : ' || S.PROGRAM || CHR(13) || CHR(10) ||
'alter system disconnect session ''' || L.SESSION_ID || ',' || S.SERIAL# || ''' immediate;'
from v$locked_object l
, user_objects o
, v$session s
where l.object_id = o.OBJECT_ID
and s.sid = l.session_id
|
Resultado
|
/* TABLE: TESTE */
-- USER_NAME: USU_CLEIDE
-- STATUS : ACTIVE
-- OSUSER : BR03159
-- MACHINE : SAMERICA\BRSPL41633
-- PROGRAM : plsqldev.exe
alter system disconnect session '15,31974' immediate;
|
Para testar faça um insert em uma tabela sem “comitar” e execute o código.
Nenhum comentário :
Postar um comentário