Petit problème de curseurs non fermés dans une applie Java sur Oracle par JDBC
16 réponses
Trognon Patrice
Bonjour,
J'ai une application Java sur une base Oracle 10g sous linux.
La connection sur la base est assurée par le driver JDBC
d'Oracle de type 4, à savoir j'utilise les jar fournis par
Oracle dans la distribution 10g :
orai18n.jar
ojdbc14.jar
<-----------------Question 1----------------->
Dans mon code j'ai bien vérifié je ferme bien mes curseurs
en appelant la méthode close() du la classe Statement, dans
le doute j'ai aussi invoqué la méthode close() de la
classe ResultSet. Mon application ne fonctionne qu'en select
je n'ai aucunne requete d'INSERT, UPDATE ou DELETE.
Sur un gros traitement je fini par tomber sur un erreur Oracle
m'indiquant que le nombre maximum de curseurs est dépassé :
ORA-01000: nombre maximum de curseurs ouverts dépassé
Comme je ferme bien mes Statement (et meme les ResultSet), je
ne comprends pas d'ou cela vient.
Est ce un bug dans le driver JDBC d'Oracle ?
Est ce un bug au niveau d'Oracle ?
Je ne pense pas que ce soit le cas, tout de même
cela me semble gros !!!
Sinon d'ou cela peut il venir ?
Voila, si quelqu'un est déjà tombé sur le problème et l'a
résolu je suis interessé par tout information.
<-----------------/Question 1----------------->
<-----------------Question 2----------------->
Au passage, seconde question, je voudrais bien loguer dans un
fichier debug.log les requêtes, je travaille uniquement
en PreparedStatement qui sont ensuite bindés par Statement.setX(...).
Comment recupérer le texte de la requete une fois le bind-in
effectué afin de la loguer en clair, pour l'instant je retrouve
dans mon fichier de log les querys avec les ? des paramètres.
<-----------------/Question 1----------------->
En sortant le PreparedStatement de la boucle et donc en l'utilisant comme il devrait l'etre, ca résoudrait pas ton pb ?
Trognon Patrice
Trognon Patrice wrote:
Bonjour,
Comme je ferme bien mes Statement (et meme les ResultSet), je ne comprends pas d'ou cela vient.
Est ce un bug dans le driver JDBC d'Oracle ? Est ce un bug au niveau d'Oracle ?
Je ne pense pas que ce soit le cas, tout de même cela me semble gros !!!
Bonjour,
J'ai tout vérifié, c'est correct je ferme bien tout :(
Bon, j'implemente un workaround, je vais encapsulé l'appel a Connection.prepareStatement() pour compter le nombre de curseur, et quand j'arrive au MAX_CURSOR je ferme et re-ouvre la connection.
c'est crade, mais ca marche :(
Me reste à trouver comment recupérer le nombre max de curseurs par un query SQL au debut de mon code, mais ca je vais trouver google est mon ami ;)
Merci à tous pour vos réponse.oui
-- Cordialement,
Patrice Trognon http://wwW.javadevel.com
Trognon Patrice wrote:
Bonjour,
Comme je ferme bien mes Statement (et meme les ResultSet), je
ne comprends pas d'ou cela vient.
Est ce un bug dans le driver JDBC d'Oracle ?
Est ce un bug au niveau d'Oracle ?
Je ne pense pas que ce soit le cas, tout de même
cela me semble gros !!!
Bonjour,
J'ai tout vérifié, c'est correct je ferme bien tout :(
Bon, j'implemente un workaround, je vais encapsulé l'appel
a Connection.prepareStatement() pour compter le nombre
de curseur, et quand j'arrive au MAX_CURSOR je ferme
et re-ouvre la connection.
c'est crade, mais ca marche :(
Me reste à trouver comment recupérer le nombre max de curseurs
par un query SQL au debut de mon code, mais ca je vais trouver
google est mon ami ;)
Comme je ferme bien mes Statement (et meme les ResultSet), je ne comprends pas d'ou cela vient.
Est ce un bug dans le driver JDBC d'Oracle ? Est ce un bug au niveau d'Oracle ?
Je ne pense pas que ce soit le cas, tout de même cela me semble gros !!!
Bonjour,
J'ai tout vérifié, c'est correct je ferme bien tout :(
Bon, j'implemente un workaround, je vais encapsulé l'appel a Connection.prepareStatement() pour compter le nombre de curseur, et quand j'arrive au MAX_CURSOR je ferme et re-ouvre la connection.
c'est crade, mais ca marche :(
Me reste à trouver comment recupérer le nombre max de curseurs par un query SQL au debut de mon code, mais ca je vais trouver google est mon ami ;)
Merci à tous pour vos réponse.oui
-- Cordialement,
Patrice Trognon http://wwW.javadevel.com
jerome moliere
Trognon Patrice wrote:
Trognon Patrice wrote:
Bonjour,
Comme je ferme bien mes Statement (et meme les ResultSet), je ne comprends pas d'ou cela vient.
Est ce un bug dans le driver JDBC d'Oracle ? Est ce un bug au niveau d'Oracle ?
Je ne pense pas que ce soit le cas, tout de même cela me semble gros !!!
Bonjour,
J'ai tout vérifié, c'est correct je ferme bien tout :(
Bon, j'implemente un workaround, je vais encapsulé l'appel a Connection.prepareStatement() pour compter le nombre de curseur, et quand j'arrive au MAX_CURSOR je ferme et re-ouvre la connection.
c'est crade, mais ca marche :(
Me reste à trouver comment recupérer le nombre max de curseurs par un query SQL au debut de mon code, mais ca je vais trouver google est mon ami ;)
Merci à tous pour vos réponse.oui
a ta place je changerai de driver c'est moins crade plus rapide et pas
tres cher,quand on a les moyens d'avoir du oracle en prod alors on peut s'acheter un driver moins crade.... pour ta question sur les preparedstatement jettes un oeil aux proxies JDBC dont le plus sympa est irongrid sql..
HTH Jerome
-- Auteur cahier du programmeur Java tome 2 - Eyrolles 10/2003 http://www.eyrolles.com/php.informatique/Ouvrages/ouvrage.php3?ouv_ean1382212111941
Trognon Patrice wrote:
Trognon Patrice wrote:
Bonjour,
Comme je ferme bien mes Statement (et meme les ResultSet), je
ne comprends pas d'ou cela vient.
Est ce un bug dans le driver JDBC d'Oracle ?
Est ce un bug au niveau d'Oracle ?
Je ne pense pas que ce soit le cas, tout de même
cela me semble gros !!!
Bonjour,
J'ai tout vérifié, c'est correct je ferme bien tout :(
Bon, j'implemente un workaround, je vais encapsulé l'appel
a Connection.prepareStatement() pour compter le nombre
de curseur, et quand j'arrive au MAX_CURSOR je ferme
et re-ouvre la connection.
c'est crade, mais ca marche :(
Me reste à trouver comment recupérer le nombre max de curseurs
par un query SQL au debut de mon code, mais ca je vais trouver
google est mon ami ;)
Merci à tous pour vos réponse.oui
a ta place je changerai de driver c'est moins crade plus rapide et pas
tres cher,quand on a les moyens d'avoir du oracle en prod alors on peut
s'acheter un driver moins crade....
pour ta question sur les preparedstatement jettes un oeil aux proxies
JDBC dont le plus sympa est irongrid sql..
HTH
Jerome
--
Auteur cahier du programmeur Java tome 2 - Eyrolles 10/2003
http://www.eyrolles.com/php.informatique/Ouvrages/ouvrage.php3?ouv_ean1382212111941
Comme je ferme bien mes Statement (et meme les ResultSet), je ne comprends pas d'ou cela vient.
Est ce un bug dans le driver JDBC d'Oracle ? Est ce un bug au niveau d'Oracle ?
Je ne pense pas que ce soit le cas, tout de même cela me semble gros !!!
Bonjour,
J'ai tout vérifié, c'est correct je ferme bien tout :(
Bon, j'implemente un workaround, je vais encapsulé l'appel a Connection.prepareStatement() pour compter le nombre de curseur, et quand j'arrive au MAX_CURSOR je ferme et re-ouvre la connection.
c'est crade, mais ca marche :(
Me reste à trouver comment recupérer le nombre max de curseurs par un query SQL au debut de mon code, mais ca je vais trouver google est mon ami ;)
Merci à tous pour vos réponse.oui
a ta place je changerai de driver c'est moins crade plus rapide et pas
tres cher,quand on a les moyens d'avoir du oracle en prod alors on peut s'acheter un driver moins crade.... pour ta question sur les preparedstatement jettes un oeil aux proxies JDBC dont le plus sympa est irongrid sql..
HTH Jerome
-- Auteur cahier du programmeur Java tome 2 - Eyrolles 10/2003 http://www.eyrolles.com/php.informatique/Ouvrages/ouvrage.php3?ouv_ean1382212111941
Trognon Patrice
jerome moliere wrote:
a ta place je changerai de driver c'est moins crade plus rapide et pas tres cher,quand on a les moyens d'avoir du oracle en prod alors on peut s'acheter un driver moins crade....
Tu me conseilles lequel ?
-- Cordialement,
Patrice Trognon http://wwW.javadevel.com
jerome moliere wrote:
a ta place je changerai de driver c'est moins crade plus rapide et pas
tres cher,quand on a les moyens d'avoir du oracle en prod alors on peut
s'acheter un driver moins crade....
a ta place je changerai de driver c'est moins crade plus rapide et pas tres cher,quand on a les moyens d'avoir du oracle en prod alors on peut s'acheter un driver moins crade....
Tu me conseilles lequel ?
-- Cordialement,
Patrice Trognon http://wwW.javadevel.com
jerome moliere
Trognon Patrice wrote:
jerome moliere wrote:
a ta place je changerai de driver c'est moins crade plus rapide et pas tres cher,quand on a les moyens d'avoir du oracle en prod alors on peut s'acheter un driver moins crade....
Tu me conseilles lequel ?
datdirect marche tres bien...
jamais eu de soucis, plus leger (qq dizaines de ko) par contre pas teste avec du 10G en RAC!!! mais vu les focntionnalites niveau clustering du driver thind 'oracle cela ne peut etre pire :)
-- Auteur cahier du programmeur Java tome 2 - Eyrolles 10/2003 http://www.eyrolles.com/php.informatique/Ouvrages/ouvrage.php3?ouv_ean1382212111941
Trognon Patrice wrote:
jerome moliere wrote:
a ta place je changerai de driver c'est moins crade plus rapide et pas
tres cher,quand on a les moyens d'avoir du oracle en prod alors on peut
s'acheter un driver moins crade....
Tu me conseilles lequel ?
datdirect marche tres bien...
jamais eu de soucis, plus leger (qq dizaines de ko)
par contre pas teste avec du 10G en RAC!!!
mais vu les focntionnalites niveau clustering du driver thind 'oracle
cela ne peut etre pire :)
--
Auteur cahier du programmeur Java tome 2 - Eyrolles 10/2003
http://www.eyrolles.com/php.informatique/Ouvrages/ouvrage.php3?ouv_ean1382212111941
a ta place je changerai de driver c'est moins crade plus rapide et pas tres cher,quand on a les moyens d'avoir du oracle en prod alors on peut s'acheter un driver moins crade....
Tu me conseilles lequel ?
datdirect marche tres bien...
jamais eu de soucis, plus leger (qq dizaines de ko) par contre pas teste avec du 10G en RAC!!! mais vu les focntionnalites niveau clustering du driver thind 'oracle cela ne peut etre pire :)
-- Auteur cahier du programmeur Java tome 2 - Eyrolles 10/2003 http://www.eyrolles.com/php.informatique/Ouvrages/ouvrage.php3?ouv_ean1382212111941