Caros colegas do SouJava,


    Primeiramente quero elogiar o excelente nivel das perguntas e 
respostas.
    E nitido o interesse em responder de forma correta e transparente todas
    as questoes colocadas. Parabens a todos que colaboram.

    Agora, tenho uma questao e ficarei grato se alguem puder me
    ajudar a resolver este pepino.

    O problema e um pouco dificil de esplicar mas me esforcarei em ser 
claro.

    Trata-se de um erro que o oracle retorna a partir de um certo tempo de 
navegacao
    pela minha aplicacao. ( Erro de ORA-01000 - Numero maximo de cursores 
ultrapassado.)

    E uma aplicacao em 3 camadas que acessa o banco de dados oracle. 
Applets
    clientes instanciam um objeto remoto via RMI e este objeto central faz 
as devidas consultas
    insercoes e updates no banco de dados, dependendo do metodo chamado e 
responde
    para os clientes retornado vetores dinamicos com os dados solicitados 
no caso de
    consultas ou com lista mensagens no caso dos metodos de persistencia.

    Este objeto central faz uma unica coneccao com o banco e atraves da 
mesma responte
    a todas a solicitacoes dos clientes. Todos os metodos de update deste 
objeto central sao sincronizados  e portanto nao podem ser disparados em 
paralelo. Os metodos de consulta
    nao sao sincronizados.

    Cada metodo do objeto remoto instancia seus proprios objetos Statement 
e ResultSet
    para fazer as consultas e manutencoes devidas no banco e eles sao 
imediatamente fechados
    no final de cada metodo atraves do metodo close().

    Inicialmente atribui o problema do estouro do numero maximo de cursores 
a problemas
    do Oracle ou do driver JDBC-ODBC. Sustitui o driver ODBC por JDBC/Thin 
da Oracle
    e o problema continuou.

    Escrevi entao uma mini aplicacao que pudesse reproduzir o problema para 
enviar a
    Oracle para analise. E um loop que executa sucessivamente uma serie de 
quaries
    no banco, usando o mesmo esquema de uma unica coneccao, criacao e 
fechamento
    dos objetos Statements e ResultsSets a cada iteracao do loop. 
Estranhamente
    esta mini app rodou a noite inteira sem acusar qualquer problema.
    A unica diferenca em relacao ao sistema real e que no sistema as 
chamadas
    aos metodos nao e feita atraves de loop local e sim atraves de chamadas 
a
    metodos do objeto remoto via RMI.

    Em sintese a questao e:

    Na mini app que que exige uma carga muito superior da coneccao com o 
banco
    o problema nao ocorreu e na aplicacao ele ocorre sempre. Porque?

    Desculpem-me  a extensao do texto, atenciosamente,

    Helio Rugani Brandao
Arquitetura de Sistemas e Tratamento da Informacao -
Telemar-MG - Tel.: 229-3243
mailto:[EMAIL PROTECTED]







    --------------------------- LISTA SOUJAVA ---------------------------
    http://www.soujava.org.br  -  Sociedade de Usu�rios Java da Sucesu-SP
    [para sair da lista: http://www.soujava.org.br/forum/cadastrados.htm]
    ---------------------------------------------------------------------

Responder a