Pessoal,
Problema estranho por aqui. Tenho uma aplicação Web (JSF) acessando BD Oracle via JPA/Hibernate.
Meu ambiente está assim:
- SO: Red Hat Enterprise Linux Server release 5.4 (Tikanga)
Linux absmclapp003 2.6.18-164.2.1.el5 #1 SMP Mon Sep 21 04:37:42 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux - JDK: jdk150_12
- JBoss: jboss-4.0.3SP1
- Driver Oracle:ojdbc5.jar
- Banco Oracle: Oracle 10g GRID 10.2.0.4
Acontece que uma das entidades gera um SQL cheio de “left outer joins” no “find”, devido ao seus relacionamentos, e isso dá timeout da conexão. Se tiro os relacionamentos a query fica simples e roda.
Fiz um simples programa de teste que usando tanto JPA/Hibernate e JDBC para executar as queries e o problema ocorre do mesmo jeito.
SQL com relacionamentos (dá erro):
select
atracao0_.COD_ATRACAO as COD1_7_0_,
/** CAMPOS OMITIDOS **/
grupoatrac12_.NOM_GRUPO_ATRACAO_PLURAL as NOM10_26_11_
from ATRACAO atracao0_
left outer join GRUPO_ATRACAO grupoatrac1_
on atracao0_.COD_GRUPO_ATRACAO=grupoatrac1_.COD_GRUPO_ATRACAO
left outer join OFERTA oferta2_
on grupoatrac1_.COD_OFERTA=oferta2_.COD_OFERTA
left outer join ATRACAO_AGRUPADA atracaoagr3_
on atracao0_.COD_ATRACAO=atracaoagr3_.COD_ATRACAO
left outer join GRUPO_ATRACAO grupoatrac4_
on atracaoagr3_.COD_GRUPO_ATRACAO=grupoatrac4_.COD_GRUPO_ATRACAO
left outer join ATRACAO_APLICACAO atracaoapl5_
on atracaoagr3_.COD_ATRACAO=atracaoapl5_.COD_ATRACAO
and atracaoagr3_.COD_APLICACAO=atracaoapl5_.COD_APLICACAO
left outer join ATRACAO atracao6_
on atracaoapl5_.COD_ATRACAO=atracao6_.COD_ATRACAO
left outer join LUGAR lugar7_
on atracao6_.COD_ATRACAO=lugar7_.COD_ATRACAO
left outer join TIPO_LUGAR tipolugar8_
on lugar7_.COD_TIPO_LUGAR=tipolugar8_.COD_TIPO_LUGAR
left outer join ENDERECO endereco9_
on atracao6_.COD_ATRACAO=endereco9_.COD_ENDERECO
left outer join TIPO_ENDERECO tipoendere10_
on endereco9_.COD_TIPO_ENDERECO=tipoendere10_.COD_TIPO_ENDERECO
left outer join GRUPO_ATRACAO_APLICACAO grupoatrac11_
on atracaoagr3_.COD_GRUPO_ATRACAO=grupoatrac11_.COD_GRUPO_ATRACAO
and atracaoagr3_.COD_APLICACAO=grupoatrac11_.COD_APLICACAO
left outer join GRUPO_ATRACAO grupoatrac12_
on grupoatrac11_.COD_GRUPO_ATRACAO=grupoatrac12_.COD_GRUPO_ATRACAO
where atracao0_.COD_ATRACAO=?
Io exception: Connection timed out
java.sql.SQLException: Io exception: Connection timed out
SQL SEM relacionamentos (funciona):
select
atracao0_.COD_ATRACAO as COD1_7_0_,
atracao0_.COD_GRUPO_ATRACAO as COD2_7_0_,
atracao0_.COD_LUGAR as COD3_7_0_,
atracao0_.COD_SITUACAO_ATRACAO as COD4_7_0_,
atracao0_.COD_USU_INC as COD5_7_0_,
atracao0_.DAT_ALT as DAT6_7_0_,
atracao0_.DAT_INAUGURACAO as DAT7_7_0_,
atracao0_.DAT_INC as DAT8_7_0_,
atracao0_.DAT_SITUACAO as DAT9_7_0_,
atracao0_.DSC_COMPLEMENTO_PRECO as DSC10_7_0_,
atracao0_.END_EMAIL as END11_7_0_,
atracao0_.END_URL as END12_7_0_,
atracao0_.IND_VISTA_PANORAMICA as IND13_7_0_,
atracao0_.NOM_ATRACAO as NOM14_7_0_,
atracao0_.NOM_ATRACAO_ABREVIADO as NOM15_7_0_,
atracao0_.NOM_COMPLEMENTO_ATRACAO as NOM16_7_0_,
atracao0_.NUM_LATITUDE as NUM17_7_0_,
atracao0_.NUM_LONGITUDE as NUM18_7_0_,
atracao0_.QTD_ALTITUDE as QTD19_7_0_,
atracao0_.QTD_FUNCIONARIO as QTD20_7_0_,
atracao0_.QTD_PRECISAO as QTD21_7_0_,
atracao0_.VLR_PRECO_MEDIO as VLR22_7_0_
from
ATRACAO atracao0_
where
atracao0_.COD_ATRACAO=?
Tudo me leva a crer que o problema seja a versão do SO + JDK + Driver Oracle.
Alguma ideia?