Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Vê só galera, vou tentar ser conciso, mas a duvida é meio complexa.
Resumindo:
Eu trabalho num sistema Web desenvolvido em JSP (Java) com servers Tomcat.
O acesso ao banco de dados pela aplicação JSP é todo configurado via Hibernate.
E o SGBD é Oracle 10g. A versao do java é 5. Eu faço parte da equipe de BD. Os desenvolvedores Java, recentemente se depararam com um problema e pediram uma solução:
O problema:
1)Eles têm uma consulta SQL (bem grande por sinal), em um dos arquivos JSP, que fica processando indefinidamente no banco e não retorna nunca, nunca acaba.
Parametros de conhecimento:
1)Eles têm outras consultas (grandes também, muito grandes), no MESMO arquivo (mesma classe JSP) e que funcionam perfeitamente.
2)Eu e o DBA vimos no Enterprise manager que a sessão fica trabalhando indefinidamente e não termina nunca, ocupando um poder computacional gigante
3)Pegamos os traces e vimos que ele fica lendo indefinidamente os DATA Files (sequencial read e scatter read)
4)Não achamos problemas nenhum na consulta, pois EU MESMO criei uma classe Java (sem ser JSP), só com um MAIN e uma conexão ORACLE com o driver que eles usam e a consulta retornou certinha.
5)Rodei a consulta no PL/SQL Developer e ela retornou.
6)Trocamos a string do SQL da consulta que não funciona para a string da consulta que funciona, e ela continuou sem funcionar (ou seja, poderiamos pensar que era alguma coisa no codigo java, mas subsituindo a consulta q funciona pela que não funciona, continua sem funcionar...)
7)O mesmo sistema JSP no ambiente de produção tem comportamento diferente do ambiente de desenvolvimento. Em desenvolvimento ele fica indefinindo. em produção ele ocupa todo o tablespace com a consulta..e começa a abrir sessoes uma atras da outra...e vira uma bola de neve.
8)Aconteceu com um fato que pode ajudar na investigação:
Uma consulta apresentou o mesmo problema e o DBA conseguiu fazer ela funcionar somente aumentando o Tablespace
Podemos pensar que é problema de performance entao. Mas em ambiente de Desenvolvimento a consulta problemática não chega a ocupar todo o Tablespace, então aumentá-lo não é a soluçao.
Voces tem alguma ideia do que pode ser?
Se for performance...que parametros podem ser modificados?
Obrigado pela atenção!
Att.
Marcelo
Carregando comentários...