Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment gérer les grosses transactions sous Oracle ?

Oracle crée un curseur pour chaque jeu de résultats et le libère à la fermeture du jeu de résultats (jdbc ResultSet.close() ou similaire). La valeur par défaut de 50 curseurs ouverts par session est suffisante pour toute application bien conçue (une fois que je l'ai mesurée, et en mode production, elle n'a jamais dépassé 20).

Vous devriez vérifier comment faire en sorte que Hibernate ferme les jeux de résultats après la récupération. Généralement, je ne peux pas imaginer ce que la session devrait faire si elle nécessite vraiment 1000 curseurs ouverts. Je n'ai jamais vu max_open_cursors plus de 1000 définis, donc, je suppose que c'est aussi suffisant pour les applications mal conçues (mais... il n'y a pas de limite à la perfection en fait, et je n'utilise jamais Hibernate).

Chaque curseur signifie de la mémoire, donc augmenter max_open_cursors n'est pas une solution de contournement à prix nul.