Não sei se vai servir isso, pois o cara lá tá tendo DEADLOCKs, é algo diferente de LOCKs... Conflito de LOCKs entre sessões (duas querendo atualizar uma o registro que a outra já tem lockado) podem causar deadlocks, mas como ele diz que é uma sessão só, acho que não deve ser isso... Tamos por enquanto chutando Triggers e Falta de Índices em FKs como causas prováveis...
[]s Chiappa --- Em oracle_br@yahoogrupos.com.br, "Raul Francisco Costa F. de Andrade, DBA" <raulf...@...> escreveu > > Amigo estou enviando abaixo algumas queries detectoras de lock... roda lá > talvez consiga achar o que está ocasionando eles. > > > Um abraço, > > > Raul > > ######## 1- Verifica Lock ORACLE 10g ######## > > SELECT /*+ rule */ l.inst_id,s.event, l.SID, s.serial# serial, p.spid, > s.username, > s.status, s.osuser, s.machine, s.program, > to_char(s.logon_time,'dd/mm/yyyy hh24:mm:ss') LOGON_TIME, l.ctime > LOCK_TIME > FROM gv$lock l, gv$session s, gv$process p > WHERE s.inst_id = l.inst_id > and s.inst_id = p.inst_id > AND s.SID = l.SID > and s.PADDR = p.addr > AND (l.id1, l.id2, l.TYPE) IN (SELECT id1, id2, TYPE > FROM gv$lock > WHERE request > 0) > ORDER BY ctime DESC; > > > > -- 1.1 verifica lock e mostra a query > > SELECT w.SID, > w.event, > w.seconds_in_wait, > SQL.sql_text > FROM v$session_wait w, v$session s, v$process p, v$sqltext SQL > WHERE w.SID = s.SID > AND s.paddr = p.addr > AND SQL.address = s.sql_address > AND SQL.hash_value = s.sql_hash_value > AND w.wait_class != 'Idle' > ORDER BY w.seconds_in_wait, w.SID, SQL.piece; > > > ######## 3 - Verifica lock de dicionário de dados Oracle 10g ######## > > select /*+ ordered */ > w1.sid waiting_session, h1.sid holding_session, > w.kgllktype lock_or_pin, w.kgllkhdl address, > decode(h.kgllkmod, 0, 'None', 1, 'Null', 2, 'Share', 3, 'Exclusive', > 'Unknown') mode_held, > decode(w.kgllkreq, 0, 'None', 1, 'Null', 2, 'Share', 3, 'Exclusive', > 'Unknown') mode_requested > from > dba_kgllock w, > dba_kgllock h, > v$session w1, > v$session h1 > where > (((h.kgllkmod != 0) > and (h.kgllkmod != 1) > and ((h.kgllkreq = 0) or (h.kgllkreq = 1))) > and (((w.kgllkmod = 0) or (w.kgllkmod= 1)) > and ((w.kgllkreq != 0) > and (w.kgllkreq != 1)))) > and w.kgllktype = h.kgllktype > and w.kgllkhdl = h.kgllkhdl > and w.kgllkuse = w1.saddr > and h.kgllkuse = h1.saddr; > > Em 24 de março de 2010 13:20, Fábio Telles Rodriguez <fabio.tel...@... > > escreveu: > > > > > > > Senhores, estou com um Oracle 10.2.0.4 num Linux x86_64 com RH 4.6 e > > começando a utilizar swap. Ok, quando a memória se vai, os problemas > > começam > > e de fato ouveram algumas ocorrências isoladas de ORA-4031. > > > > Mas o que está estranho são os deadlocks recorrentes onde o mesmo deadlock > > surge várias veses no alert (com diferença de segundos) e apontando sempre > > para o mesmo trace. O SQL é sempre o mesmo, um DELETE, e o bizarro é com > > apenas uma sessão. Pelo que eu entendo, não é possível haver deadlock em > > uma > > única sessão. Alguma dica de qual o problema pode estar ocorrendo? > > > > *** 2010-03-22 15:20:04.817 > > *** ACTION NAME:(M_LAN_AMB_PARTICULAR) 2010-03-22 15:20:04.710 > > *** MODULE NAME:(MVFNCT ) 2010-03-22 15:20:04.710 > > *** SERVICE NAME:(SYS$USERS) 2010-03-22 15:20:04.710 > > *** SESSION ID:(498.12593) 2010-03-22 15:20:04.710 > > DEADLOCK DETECTED ( ORA-00060 ) > > [Transaction Deadlock] > > The following deadlock is not an ORACLE error. It is a > > deadlock due to user error in the design of an application > > or from issuing incorrect ad-hoc SQL. The following > > information may aid in determining the deadlock: > > Deadlock graph: > > ---------Blocker(s)-------- > > ---------Waiter(s)--------- > > *Resource Name process session holds waits process session holds > > waits* > > *TX-00150013-00031d12 30 498 X 30 498 > > X* > > session *498*: DID 0001-001E-00000206 session *498*: DID > > 0001-001E-00000206 > > Rows waited on: > > Session *498*: obj - rowid = 0000B8D0 - AAALjQAAGAADgRIAAj > > (dictionary objn - 47312, file - 6, block - 918600, slot - 35) > > Information on the OTHER waiting sessions: > > End of information on OTHER waiting sessions. > > Current SQL statement for this session: > > *DELETE FROM SCHEMA.ITREG_AMB WHERE CD_REG_AMB = :B2 AND DECODE(:B1 , NULL, > > 1,CD_ATENDIMENTO) = DECODE(:B1 , NULL, 1,:B1 )* > > > > Qualquer dica é bem vinda, uma vez que não encontrei nada parecido no > > google > > ou no metalink. > > > > Atenciosamente, > > -- > > blog: http://www.midstorm.org/~telles/ > > e-mail / jabber: fabio.tel...@... <fabio.telles%40gmail.com> > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > > > > > > > -- > -------------------------------------------------------------- > Raul Francisco da Costa Ferreira de Andrade > DBA - OCA - Oracle Certified Associate > COBIT Foundation 4.1 > Fone: (41)8855-8874 Brt > email: raulf...@... > Skype: raul.andrade > www.clickdba.com > "Deus não dá prova superior às forças daquele que a pede; > só permite as que podem ser cumpridas. > Se tal não sucede, não é que falte possibilidade, falta vontade." > > > [As partes desta mensagem que não continham texto foram removidas] >