Bom dia pessoal, td blz??
seguinte… ontem quebrei a kbça a tarde inteira por causa de um erro que estava dando na minha aplicação…
o erro q dava era —> ORA-01000: maximum open cursors exceeded.
dei uma pesquisa no Mestre Google…heheh… e achei um monte de mail list falando sobre isso… esse erro é ocasionado quando vc não finaliza resultSets, statements ou connections, assim ele deixa em aberto muitas queries…
se vc quiserem visualizar os cursors em aberto utilizem essa query a seguir:
/* SELECIONA TODOS OS OPEN CURSORS DE CADA MAQUINA */
SELECT v.value as numopencursors ,s.machine ,s.osuser,s.username
FROM V$SESSTAT v, V$SESSION s
WHERE v.statistic# = 3 and v.sid = s.sid
/* SELECIONA DADOS DE CADA OPEN CURSOR */
select user_name, status, osuser, machine, a.sql_text, c.sql_text
from v$session b, v$open_cursor a, V$SQLAREA c
where a.sid = b.sid
and c.address = a.address
até ai td bem… já havia descoberto o q estava ocasionando o problema…
mas o problema estava AONDE isso estava ocorrendo no meu código…
depois de horas “perdidas”… achei aonde era…
num trecho do meu código eu tenho 6 queries distintas, com 1 resultSet para cada… só q eu estava reutilizando o statement para efetuar a pesquisa de cada query… é ai q está o problema… pq quando eu fiz o teste de colocar um statement para cada resultSet, funcionou perfeitamente… não haviam mais open cursors desnecessários…
ok… eu resolvi o problema… mas não entendi o pq que eu não posso reutilizar o statement para vários resultSets…
ALGUÉM poderia me responder??
Obrigado,
Henrique