Legal Chiappa, Vou fazer mais alguns testes com esse script que vc me mandou, porém não acredito que alguma aplicação esteja fazendo coisa do tipo select na DUAL com for update.
Talvez seja alguma coisa relacionada com contençao mesmo pq estou tendo um problema seríssimo de latches ... muitos eventos de "Latch free" e "cache buffer chains" .. chega a ter quase 30 sessões "esperando". Já constatei que existem problemas com algumas aplicações fazendo milhões de buffer gets. Abri um chamado na Oracle e o primeiro diagnóstico foi de "hot block" que na verdade tem tudo a ver .. porém achei outros docs da Oracle dizendo que pode existir algum bug relacionado com esse "latch free" pro 9.2.0.6 na plataforma Itanium mas nada de concreto. Aproveitando :) .. só pra vc ver como o ambiente está "estranho" tenho um outro problema com (GAPS) em sequences. Explo: tenho uma sequence que cria uma PK (atraves de trigger) pra uma tabela com 46 mil linhas .. e a sequence (LAST_NUMBER) está com mais de 28 MILHOES !!! Geram muitos archives .. coisa de 1 por minuto .. cada um tem 100 MB ! Olhando neles com o logminer, 90% é update na SEQ$ (sequence). O cache dessas sequences estava com ZERO. ALterei para 1000 .. deve melhorar em termos de performance mas o estranho é ter um GAP tão grande na numeração. Como pode perceber a "coisa" tá muito estranha. Valeu ! []s --- Em oracle_br@yahoogrupos.com.br, "jlchiappa" <[EMAIL PROTECTED]> escreveu > > Bom, a primeira coisa é ** realmente ** conferir o que está sendo > mesmo lockado, pode ser com o script de locked_objs mais abaixo > mostrado. Notar porém que a tabela DUAL ** pertence ** ao SYS, objetos > do SYS são ** internos **, vc é absolutamente proibido de fazert DMLs > neles, e locks vc só obtém dando um comando de lock ou um DML, tipo : > > [EMAIL PROTECTED]:SQL>select 1 from dual; > > D > - > X > > ==> consulto locks de objs, não há nada na dual, como deve ser : > > [EMAIL PROTECTED]:SQL>@locked_objs > > SID SERIAL# PROCESS USERNAME TERMINAL TYPE LMOD > LREQ OBJECT > ------- ------- -------- ------------ ------------ ------------ ---- > ---- ----------- > 3 1 596 SYS (SYST) CHIAPPA-WIN2 REDO THREAD X > NONE THREAD=1 > 4 1 1048 SYS (SYST) CHIAPPA-WIN2 TYPE=XR NULL > NONE ID1=4 ID2=0 > 5 1 1936 SYS (SYST) CHIAPPA-WIN2 TEMP SEGMENT RX > NONE NEW BLOCK ALLOCATION > > ==> agora mando todas as regras de bom senso pro espaço e faço um DML > numa tabela do sys, a dual : > > [EMAIL PROTECTED]:SQL>select 1 from dual for update; > > 1 > ------------------ > 1 > > [EMAIL PROTECTED]:SQL>@locked_objs > > SID SERIAL# PROCESS USERNAME TERMINAL TYPE LMOD > LREQ OBJECT > ------- ------- -------- ------------ ------------ ------------ ---- > ---- ----------------- > 3 1 596 SYS (SYST) CHIAPPA-WIN2 REDO THREAD X > NONE THREAD=1 > 4 1 1048 SYS (SYST) CHIAPPA-WIN2 TYPE=XR NULL > NONE ID1=4 ID2=0 > 5 1 1936 SYS (SYST) CHIAPPA-WIN2 TEMP SEGMENT RX > NONE NEW BLOCK ALLOCATION > 11 78 1772:186 SCOTT CHIAPPA-WIN2 DML/DATA ENQ RS > NONE SYS.DUAL > > > Note que só há uma entrada na v$session_wait ** SE ** houver outra > sessão esperando pelo meu lock, no caso atual por enquanto não há : > > [EMAIL PROTECTED]:SQL>@sids_waiting_now > > Sessões esperando por sql*net message estão aguardando > por resposta do usuário. > Sessões com wait_time <> 0 => consomem CPU > > Atenção à Coluna State, se ela for : > Waiting => ignore Waited Secs, Waited So Far=tempo até agora > Wait.Short Time => menos q um tick de CPU, ignorar > Wait. Know Time => Waited Secs=tempo total esperado, ignore Wait So Far > > > Waited Waited so > SID SEQ# Seconds Wait Event far (sec) Wait State > ---- ------ -------- ----------------------------- --------- > --------------- > 1 1631 0 pmon timer 4802 WAITING > 2 1809 0 rdbms ipc message 40 WAITING > 3 16727 0 rdbms ipc message 12 WAITING > 4 3764 0 rdbms ipc message 3 WAITING > 5 204 0 smon timer 1092 WAITING > 6 7 0 rdbms ipc message 4735 WAITING > 7 943 0 rdbms ipc message 4771 WAITING > 8 560 0 wakeup time manager 14 WAITING > 9 123 -1 SQL*Net message to client 0 WAITED > KNOWN TI > 11 180 0 SQL*Net message from client 859 WAITING > [EMAIL PROTECTED]:SQL> > > ==> agora vou ter outra: > > [EMAIL PROTECTED]:SQL>select 1 from dual for update; > > [EMAIL PROTECTED]:SQL>@sids_waiting_now > > Sessões esperando por sql*net message estão aguardando > por resposta do usuário. > Sessões com wait_time <> 0 => consomem CPU > > Atenção à Coluna State, se ela for : > Waiting => ignore Waited Secs, Waited So Far=tempo até agora > Wait.Short Time => menos q um tick de CPU, ignorar > Wait. Know Time => Waited Secs=tempo total esperado, ignore Wait So Far > > > Waited Waited so > SID SEQ# Seconds Wait Event far (sec) Wait State > ---- ------ -------- ----------------------------- --------- > --------------- > 1 1695 0 pmon timer 4995 WAITING > 2 1875 0 rdbms ipc message 18 WAITING > 3 17391 0 rdbms ipc message 6 WAITING > 4 3920 0 rdbms ipc message 0 WAITING > 5 205 0 smon timer 1285 WAITING > 6 7 0 rdbms ipc message 4928 WAITING > 7 981 0 rdbms ipc message 4964 WAITING > 8 572 0 wakeup time manager 24 WAITING > 9 137 -1 SQL*Net message to client 0 WAITED > KNOWN TI > 10 68 0 enqueue 9 WAITING > 11 180 0 SQL*Net message from client 1052 WAITING > [EMAIL PROTECTED]:SQL> > > ==> SE é isso que está ocorrendo aí, a sua aplicação tem um BUG enorme > e gigantesco, corrija isso pra ONTEM , enquanto isso não ocorrer o > banco VAI serializar acesso, uma sessão VAI interferir na outra como > vc mandou, simples assim. > > []s > > Chiappa > > [EMAIL PROTECTED]:SQL> > 1 rem > -------------------------------------------------------------------- --- > 2 rem Filename: lock.sql > 3 rem Purpose: Display database locks and latched (with tables > names, etc) > 4 rem Date: 12-Apr-1998 > 5 rem Author: Frank Naude ([EMAIL PROTECTED]) > 6 rem > -------------------------------------------------------------------- --- > 7 # > 8 col sid format 999999 > 9 col serial# format 999999 > 10 col username format a12 trunc > 11 col process format a8 trunc > 12 col terminal format a12 trunc > 13 col type format a12 trunc > 14 col lmode format a4 trunc > 15 col lrequest format a4 trunc > 16 col object format a73 trunc > 17 select > 18 s.sid, s.serial#, > 19 decode(s.process, null, > 20 decode(substr(p.username,1,1), '?', upper (s.osuser), > p.username), > 21 decode( p.username, 'ORACUSR ', upper (s.osuser), > s.process) > 22 ) process, > 23 nvl(s.username, 'SYS ('||substr(p.username,1,4)||')') > username, > 24 decode(s.terminal, null, rtrim(p.terminal, chr(0)), > 25 upper(s.terminal)) terminal, > 26 decode(l.type, > 27 -- Long locks > 28 'TM', 'DML/DATA ENQ', 'TX', 'TRANSAC ENQ', > 29 'UL', 'PLS USR LOCK', > 30 -- Short locks > 31 'BL', 'BUF HASH TBL', 'CF', 'CONTROL FILE', > 32 'CI', 'CROSS INST F', 'DF', 'DATA FILE ', > 33 'CU', 'CURSOR BIND ', > 34 'DL', 'DIRECT LOAD ', 'DM', 'MOUNT/STRTUP', > 35 'DR', 'RECO LOCK ', 'DX', 'DISTRIB TRAN', > 36 'FS', 'FILE SET ', 'IN', 'INSTANCE NUM', > 37 'FI', 'SGA OPN FILE', > 38 'IR', 'INSTCE RECVR', 'IS', 'GET STATE ', > 39 'IV', 'LIBCACHE INV', 'KK', 'LOG SW KICK ', > 40 'LS', 'LOG SWITCH ', > 41 'MM', 'MOUNT DEF ', 'MR', 'MEDIA RECVRY', > 42 'PF', 'PWFILE ENQ ', 'PR', 'PROCESS STRT', > 43 'RT', 'REDO THREAD ', 'SC', 'SCN ENQ ', > 44 'RW', 'ROW WAIT ', > 45 'SM', 'SMON LOCK ', 'SN', 'SEQNO INSTCE', > 46 'SQ', 'SEQNO ENQ ', 'ST', 'SPACE TRANSC', > 47 'SV', 'SEQNO VALUE ', 'TA', 'GENERIC ENQ ', > 48 'TD', 'DLL ENQ ', 'TE', 'EXTEND SEG ', > 49 'TS', 'TEMP SEGMENT', 'TT', 'TEMP TABLE ', > 50 'UN', 'USER NAME ', 'WL', 'WRITE REDO ', > 51 'TYPE='||l.type) type, > 52 decode(l.lmode, 0, 'NONE', 1, 'NULL', 2, 'RS', 3, 'RX', > 53 4, 'S', 5, 'RSX', 6, 'X', > 54 to_char(l.lmode) ) lmode, > 55 decode(l.request, 0, 'NONE', 1, 'NULL', 2, 'RS', 3, 'RX', > 56 4, 'S', 5, 'RSX', 6, 'X', > 57 to_char(l.request) ) lrequest, > 58 decode(l.type, 'MR', decode(u.name, null, > 59 'DICTIONARY OBJECT', > u.name||'.'||o.name), > 60 'TD', u.name||'.'||o.name, > 61 'TM', u.name||'.'||o.name, > 62 'RW', 'FILE#='||substr(l.id1,1,3)|| > 63 ' BLOCK#='||substr(l.id1,4,5)||' ROW='||l.id2, > 64 'TX', 'RS+SLOT#'||l.id1||' WRP#'||l.id2, > 65 'WL', 'REDO LOG FILE#='||l.id1, > 66 'RT', 'THREAD='||l.id1, > 67 'TS', decode(l.id2, 0, 'ENQUEUE', > 68 'NEW BLOCK ALLOCATION'), > 69 'ID1='||l.id1||' ID2='||l.id2) object > 70 from sys.v_$lock l, sys.v_$session s, sys.obj$ o, sys.user$ u, > 71 sys.v_$process p > 72 where s.paddr = p.addr(+) > 73 and l.sid = s.sid > 74 and l.id1 = o.obj#(+) > 75 and o.owner# = u.user#(+) > 76 and l.type <> 'MR' > 77 UNION ALL /*** LATCH HOLDERS ***/ > 78 select s.sid, s.serial#, s.process, s.username, s.terminal, > 79 'LATCH', 'X', 'NONE', h.name||' ADDR='||rawtohex(laddr) > 80 from sys.v_$process p, sys.v_$session s, sys.v_$latchholder h > 81 where h.pid = p.pid > 82 and p.addr = s.paddr > 83 UNION ALL /*** LATCH WAITERS ***/ > 84 select s.sid, s.serial#, s.process, s.username, s.terminal, > 85 'LATCH', 'NONE', 'X', name||' LATCH='||p.latchwait > 86 from sys.v_$session s, sys.v_$process p, sys.v_$latch l > 87 where latchwait is not null > 88 and p.addr = s.paddr > 89 and p.latchwait = l.addr > 90 / > =========================================================== > [EMAIL PROTECTED]:SQL>get sids_waiting_now > 1 # > 2 SET PAGES 999 > 3 column sid format 999 > 4 column seq# format 99999 > 5 column event format a29 heading "Wait Event" trunc > 6 column state format a15 heading "Wait State" trunc > 7 column secs format 9999999 heading "Waited so|far (sec)" > 8 column wt format 9999999 heading "Waited|Seconds" > 9 prompt > 10 prompt Sessões esperando por sql*net message estão aguardando > 11 prompt por resposta do usuário. > 12 prompt Sessões com wait_time <> 0 => consomem CPU > 13 prompt > 14 prompt Atenção à Coluna State, se ela for : > 15 prompt Waiting => ignore Waited Secs, Waited So Far=tempo até agora > 16 prompt Wait.Short Time => menos q um tick de CPU, ignorar > 17 prompt Wait. Know Time => Waited Secs=tempo total esperado, > ignore Wait So Far > 18 prompt > 19 SELECT sid, seq#, wait_time wt , event, seconds_in_wait secs, state > 20 FROM v$session_wait > 21 ORDER BY sid, wait_time, event > 22 / > > --- Em oracle_br@yahoogrupos.com.br, "zelobr" <[EMAIL PROTECTED]> escreveu > > > > Colegas, > > > > Estou com problema de lock EXCLUSIVE MODE na tabela SYS.DUAL ! Várias > > vezes já ocorreu de uma sessão estar travando outra (vejo pelo utllockt > > e evento ENQUEUE na v$session_Wait). A sessão que obteve o lock está > > rodando um select na sys.dual e não aparece o OBJ# na v$session. PElo > > enterprise manager também não aparece o nome/ID do objeto. Alguém tem > > alguma idéia de como solucionar isso? > > > > Oracle Standard Edition 9.2.0.6 > > RX 4640 Itanium 2 - 2 CPUs - 5 Gb RAM > > HP-UX 11.23 > > Aprox. 500 sessões abertas > > > > Tks > > > -------------------------------------------------------------------------------------------------------------------------- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --------------------------------------------------------------------------------------------------------------------------__________________________________________________________________ Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ <*> Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html