Erro acesso ao BD Oracle com Red Hat Enterprise 64 bits [resolvido]

1 resposta
danieldestro

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?

1 Resposta

danieldestro

O maldito do firewall bloqueva queries “grandes”.

Resolvido!

Criado 11 de fevereiro de 2010
Ultima resposta 11 de fev. de 2010
Respostas 1
Participantes 1