Select s.Sid, s.Serial#,
Decode(s.Process, Null, Decode(Substr(p.Username, 1, 1), '?', Upper(s.Osuser), p.Username),
Decode(p.Username, 'ORACUSR ', Upper(s.Osuser), s.Process)) Process,
Nvl(s.Username, 'SYS (' || Substr(p.Username, 1, 4) || ')') Username,
Decode(s.Terminal, Null, Rtrim(p.Terminal, Chr(0)), Upper(s.Terminal)) Terminal,
Decode(l.Type,
-- Long locks
'TM', 'DML/DATA ENQ', 'TX', 'TRANSAC ENQ', 'UL', 'PLS USR LOCK',
-- Short locks
'BL', 'BUF HASH TBL', 'CF', 'CONTROL FILE', 'CI', 'CROSS INST F', 'DF', 'DATA FILE ', 'CU',
'CURSOR BIND ', 'DL', 'DIRECT LOAD ', 'DM', 'MOUNT/STRTUP', 'DR', 'RECO LOCK ', 'DX',
'DISTRIB TRAN', 'FS', 'FILE SET ', 'IN', 'INSTANCE NUM', 'FI', 'SGA OPN FILE', 'IR',
'INSTCE RECVR', 'IS', 'GET STATE ', 'IV', 'LIBCACHE INV', 'KK', 'LOG SW KICK ', 'LS',
'LOG SWITCH ', 'MM', 'MOUNT DEF ', 'MR', 'MEDIA RECVRY', 'PF', 'PWFILE ENQ ', 'PR',
'PROCESS STRT', 'RT', 'REDO THREAD ', 'SC', 'SCN ENQ ', 'RW', 'ROW WAIT ', 'SM',
'SMON LOCK ', 'SN', 'SEQNO INSTCE', 'SQ', 'SEQNO ENQ ', 'ST', 'SPACE TRANSC', 'SV',
'SEQNO VALUE ', 'TA', 'GENERIC ENQ ', 'TD', 'DLL ENQ ', 'TE', 'EXTEND SEG ', 'TS',
'TEMP SEGMENT', 'TT', 'TEMP TABLE ', 'UN', 'USER NAME ', 'WL', 'WRITE REDO ',
'TYPE=' || l.Type) Type,
Decode(l.Lmode, 0, 'NONE', 1, 'NULL', 2, 'RS', 3, 'RX', 4, 'S', 5, 'RSX', 6, 'X', To_Char(l.Lmode)) Lmode,
Decode(l.Request, 0, 'NONE', 1, 'NULL', 2, 'RS', 3, 'RX', 4, 'S', 5, 'RSX', 6, 'X', To_Char(l.Request)) Lrequest,
Decode(l.Type, 'MR', Decode(u.Name, Null, 'DICTIONARY OBJECT', u.Name || '.' || o.Name), 'TD',
u.Name || '.' || o.Name, 'TM', u.Name || '.' || o.Name, 'RW',
'FILE#=' || Substr(l.Id1, 1, 3) || ' BLOCK#=' || Substr(l.Id1, 4, 5) || ' ROW=' || l.Id2, 'TX',
'RS+SLOT#' || l.Id1 || ' WRP#' || l.Id2, 'WL', 'REDO LOG FILE#=' || l.Id1, 'RT',
'THREAD=' || l.Id1, 'TS', Decode(l.Id2, 0, 'ENQUEUE', 'NEW BLOCK ALLOCATION'),
'ID1=' || l.Id1 || ' ID2=' || l.Id2) Object
From Sys.v_$lock l, Sys.v_$session s, Sys.Obj$ o, Sys.User$ u, Sys.v_$process p
Where s.Paddr = p.Addr(+)
And l.Sid = s.Sid
And l.Id1 = o.Obj#(+)
And o.Owner# = u.User#(+)
And l.Type 'MR'
Union All /*** LATCH HOLDERS ***/
Select s.Sid, s.Serial#, s.Process, s.Username, s.Terminal, 'LATCH', 'X', 'NONE',
h.Name || ' ADDR=' || Rawtohex(Laddr)
From Sys.v_$process p, Sys.v_$session s, Sys.v_$latchholder h
Where h.Pid = p.Pid
And p.Addr = s.Paddr
Union All /*** LATCH WAITERS ***/
Select s.Sid, s.Serial#, s.Process, s.Username, s.Terminal, 'LATCH', 'NONE', 'X',
Name || ' LATCH=' || p.Latchwait
From Sys.v_$session s, Sys.v_$process p, Sys.v_$latch l
Where Latchwait Is Not Null
And p.Addr = s.Paddr
And p.Latchwait = l.Addr;
Fala, Capin!
Obrigado por compartilhar os scripts!
Estou com alguns também para divulgar, aliás, to com vários posts por fazer. Mas tá tendo que ser uma coisa de cada vez aqui, hehe.
Valeu! Continue postando!
Abraço!
Dae,
pois é, eu ainda estou ‘devendo’ os posts do GUOB, não está fácil não.
Obrigado e não devemos parar mesmo, com certeza estamos nos ajudando e mais alguém.
Abraços
capin
Olá Capin !
Conheci o seu blog por meio do blog do PHPDBA… já adicionei o blog nos meus favoritos, mas cadê o feed ? Habilita o Feed ? Ai fica mais fácil acompanhar o seu blog…
Att,
Sakamoto
MyTraceLog – Registro de um DBA
http://mytracelog.blogspot.com
Sakamoto,
blz? Obrigado pela visita.
Até aonde olhei aqui tem o feed normal do wordpress, tem gente me dizendo que segue pelo feed, então acho que funciona.
Atualizado: Colocado o RSS Feed!
Se quiser segue lá no twitter também.
Abraços
capin
Obrigado Capin!
Assinado o feed…
Att,
Sakamoto
MyTraceLog – Registro de um DBA
http://mytracelog.blogspot.com