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

 


Responder a