Ola pessoal,

vasculhando uns scripts antigos achei uns outros legais.
Esse tenho até a fonte, achei legal o ano da criação:

Tabelas com Lock:
— Purpose: Display database locks and latched (with tables names, etc)
— Date: 12-Apr-1998
— Author: Frank Naude (frank@onwe.co.za)

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;

Esse outro é uma série de SQL’s básicos que podem ser executados no incio de uma análise de um banco.

Visão geral do banco de dados:

Select *
From V$database;

Select *
From V$instance;

Select *
From V$version;

Select a.Name, a.Value
From V$sga a;

Select Substr(c.Name, 1, 60) "Controlfile", Nvl(c.Status, 'UNKNOWN') "Status"
From V$controlfile c
Order By 1;

Select Substr(d.Name, 1, 60) "Datafile", Nvl(d.Status, 'UNKNOWN') "Status", d.Enabled "Enabled",
Lpad(To_Char(Round(d.Bytes / 1024000, 2), '9999990.00'), 10, ' ') "Size (M)"
From V$datafile d
Order By 1;

Select l.Group# "Group", Substr(l.Member, 1, 60) "Logfile", Nvl(l.Status, 'UNKNOWN') "Status"
From V$logfile l
Order By 1, 2;

Espero ter ajudado. O mais interessante disso é que aqui eles me ajudam em qualquer lugar, como ocorreu esses dias, guardado nos HDs externos da vida … ficam esquecidos.

Att,
capin