Na verdade nem só desenvolvedor faz isso não, na época da v7 
principalmente já vi alguns produtos de terceiros que tacavam uma 
linha a mais na dual, ou que criavam uma tabela DUAL no schema deles, 
isso era o próprio balaio de gatos...

[]s

 Chiappa
--- Em oracle_br@yahoogrupos.com.br, Thiago Lazzarotto 
<[EMAIL PROTECTED]> escreveu
>
> Bem off-topic, mas só para descontrair, esse assunto me lembrou uma 
vez 
> em que um desenvolvedor
> inseriu uma linha na DUAL em produção.
> 
> Imaginem que beleza!
> Até hj tenho pena daquele DBA hehehe
> Todos os selects na dual davam TOO_MANY_ROWS!!!
> 
> Thiago.
> 
> jlchiappa 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
> >
> >
> >
> >
> > *Yahoo! Grupos, um serviço oferecido por:*
> > PUBLICIDADE
> >
> >
> > ------------------------------------------------------------------
------
> > *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]
> >       <mailto:[EMAIL PROTECTED]
subject=Unsubscribe>
> >        
> >     * O uso que você faz do Yahoo! Grupos está sujeito aos Termos 
do
> >       Serviço do Yahoo! <http://br.yahoo.com/info/utos.html>.
> >
> >
>






--------------------------------------------------------------------------------------------------------------------------
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