--- André_Vieira_Gonçalves <[EMAIL PROTECTED]> escreveu:
Andre,

Toda vez que vc utiliza um ResultSet (rs) e um preparedStatement (ps) vc deixa aberto um cursor no banco de dados. A melhor prática indica que o rs e o ps devam sempre ser fechados quando não mais utilizados, preferencialmente em um bloco finally, para que seja realmente garantida a liberação do(s) cursor(es) .

Se vc está retornando ResultSet a partir de um metodo, recomendo que vc utilize o objeto RowSet ou transforme os dados retornados em uma outra estrutura de dados como um Vector ou ArrayList.

Mesmo assim, voce pode continuar estourando a quantidade maxima de cursores. Neste caso, vc pode aumentar o parametro OPEN_CURSORS no arquivo INIT.ORA, que é o responsável por manter os parâmetros de inicializacao do banco de dados . Tambem pode ser aumentado o numero de processos no parametro PROCESSES.

Outra boa pratica é ter um DBA sempre por perto pra monitorar o banco de dados enquanto você está fazendo testes na sua aplicação. A minha experiência mostra que cerca de 75% dos problemas de performance e escalabilidade em aplicativos Java estão relacionados a como é feita a interação entre o aplicativo e o banco de dados.

Para mais detalhes sobre JDBC, inclusive com dicas sobre tunning e escalabilidade acesse o link http://otn.oracle.com/tech/java/sqlj_jdbc/content.html

Espero que tenha ajudado. Caso precise de mais ajuda entre em contato.

 

[]s

Maiko


> Senhores,
>
> se alguem souber como me ajudar agradeço.
> tenho uma classe que retorna um resultset.
> toda vez que for utilizá-la tenho que criar um
> statement e se não fechá-lo,
> eu excedo o limite de cursor..
> Alguém pode me ajudar ? Tem alguma idéia de como
> retornar um resultset e
> fechar o statement ?
>
> André Vieira Gonçalves
> Programador pleno
> [EMAIL PROTECTED]
> Multimedia Café
> http://www.mmcafe.com.br
> (55 11) 3266-4266
> Web Thinking
>
>
>



Yahoo! GeoCities
Tenha seu lugar na Web. Construa hoje mesmo sua home page no Yahoo! GeoCities. É fácil e grátis!

Responder a