- Este tópico contém 10 respostas, 4 vozes e foi atualizado pela última vez 16 anos, 11 meses atrás por
vieri.
-
AutorPosts
-
17 de abril de 2009 às 10:32 pm #86306
ebp_78
ParticipanteAlguém pode me ajudar a esclarecer o que pode ter ocorrido no erro
abaixo?
Segue;
Tenho um Banco 10g (10.2.0.3) com SO Windows 2003 Server ,é um bano estático , com schema só , e de uma hora para outra o banco ficou lentíssimo começei a averiguar e no alert log
tinha este erro:
WAITED TOO LONG FOR A ROW CACHE ENQUEUE LOCK! pid=54Grato
Edinaldo Borges
17 de abril de 2009 às 10:51 pm #86308Ishii
ParticipanteOlá,
1) Existem outros processos rodando?
2) Há outros usuários ou não?Se tiver verifique se há locks ocorrendo nos processos.
[]s Ishii
17 de abril de 2009 às 11:10 pm #86311ebp_78
Participante[quote=”Ishii”:2dvaygt0]Olá,
1) Existem outros processos rodando?
2) Há outros usuários ou não?Se tiver verifique se há locks ocorrendo nos processos.
[]s Ishii[/quote]
Olá amigo boa tarde ,
Então , para resolver o problema foi executado um Shutdown immediate ,
esse banco tem um usúário só , eu consigo descobrir o que causou este lok?17 de abril de 2009 às 11:19 pm #86313Marcio68Almeida
ParticipanteCertamente o processo que você executou deu lock em uma tabela ou registro que tentou ser atualizado por outro processo.
Existem diversas formas de você encontrar quem está prendendo as referidas linhas, a mais simples é consultando a v$lockSegue uma das muitas consultas que te podem auxiliar :
Select s.sid, s.serial#, o.owner, s.lockwait, s.username, s.osuser, s.terminal, s.status, l.id2, decode (NVL (l.id2, 0), 0, o.object_name, 'Trans-' || to_char (l.id1)) object_name, decode (NVL (l.type, '.'), 'BL', 'Buffer hash table instance', 'CF', 'Control file schema global enqueue', 'CU', 'Cursor bind', 'CI', 'Cross-instance function invocation instance','DF', 'Data file instance', 'JQ', 'Job queue', 'DL', 'Direct loader parallel index create', 'TX', 'Transaction enqueue', 'UL', 'User supplied', 'DM', 'Mount/startup db primary/secondary instance', 'DR', 'Distributed recovery process', 'DX', 'Distributed transaction entry', 'TM', 'DML enqueue', l.type) type, decode (NVL (l.lmode, 0), 0, '--Waiting--', 1, 'Null', 2, 'Row Share', 3, 'Row Excl', 4, 'Share', 5, 'Sha Row Exc', 6, 'Exclusive', 'Other') "Lock Mode", decode (NVL (l.request, 0), 0, ' - ', 1, 'Null', 2, 'Row Share', 3, 'Row Excl', 4, 'Share', 5, 'Sha Row Exc', 6, 'Exclusive', 'Other') "Req Mode"
From v$lock l, v$session s, dba_objects o
Where s.sid = l.sid (+)
and l.id1 = o.object_id (+)
and s.username is not null
Order by l.id2, s.sid
17 de abril de 2009 às 11:29 pm #86315Ishii
ParticipanteOlá,
Um ponto para esclarecer:
Um usuário (OWNER) não significa que só há um usuário logado no sistema. Verifique isso na v$session
select * from v$sessionHá uma coluna OSUSER que mostrar os acessos ao BD…
[]s Ishii17 de abril de 2009 às 11:43 pm #86316ebp_78
ParticipanteOlá , muito obrigado , vou executar este select e verificar
Obrigado,
17 de abril de 2009 às 11:48 pm #86317ebp_78
Participante[quote=”Ishii”:1p038vkd]Olá,
Um ponto para esclarecer:
Um usuário (OWNER) não significa que só há um usuário logado no sistema. Verifique isso na v$session
select * from v$sessionHá uma coluna OSUSER que mostrar os acessos ao BD…
[]s Ishii[/quote]Sim , verifiquei e tem vários usários ACTIVE lá , tanto do Oracle e da aiplcação.
17 de abril de 2009 às 11:54 pm #86318ebp_78
Participanteexecutei , tem lá vários processos , ACTIVe e INACTIVE como eu sei qual que causou lock?
18 de abril de 2009 às 12:02 am #86320Ishii
ParticipanteOlá,
Use a query do Márcio.
[]s Ishii18 de abril de 2009 às 12:05 am #86322ebp_78
ParticipanteValeu amigo pela atenção , muito obrigado
até breve!!!!!!!!..19 de abril de 2009 às 3:18 am #86326vieri
Participantecaso não seja oracle rac, pode utilizar a view dba_waiters para verificar problemas com bloqueios…
-
AutorPosts
- Você deve fazer login para responder a este tópico.