J'ai un code PL/SQL que je pense pourrait avoir une fuite de mémoire. Chaque fois que je l'exécute, il semble courir plus lentement et plus lentement que la fois précédente, même si maintenant je diminue la taille de l'entrée. Le code que je me méfie de se peuplait un tableau à partir d'un curseur à l'aide en vrac recueillir, quelque chose comme çaPL/SQL - vérifier les fuites de mémoire?
open c_myCursor(in_key);
fetch c_myCursor bulk collect into io_Array; /*io_array is a parameter, declared as in out nocopy */
close c_myCursor;
Je ne suis pas sûr de savoir comment vérifier pour voir ce qui cause ce ralentissement. Je sais qu'il existe des tables dans Oracle qui permettent de suivre ce type d'utilisation de la mémoire, mais je ne suis pas sûr qu'il soit possible de regarder ces tables et de trouver un moyen de revenir à quelque chose d'utile sur mon code.
En outre, j'ai essayé de déconnecter la session et de me reconnecter après environ 10-15 minutes, toujours très lent.
Oracle version est 10,2
Ainsi, il se là-bas était autre activité de base de données. Le DBA a décidé d'exécuter de gros travaux d'insertion et de mise à jour à peu près au même moment où j'ai commencé à modifier et à tester le code. Je soupçonnais que mon code était la cause première, car on ne m'avait pas parlé des autres travaux en cours (et j'ai seulement entendu parler de cet autre travail après avoir complètement gelé tout et tous les autres développeurs se sont énervés). C'était probablement la raison pour laquelle mon code devenait de plus en plus lent et lent.
Existe-t-il un moyen de trouver cela par programme, comme interroger une session en insérant/mettant à jour beaucoup de données, juste au cas où le DBA oublierait de me dire la prochaine fois qu'il le fera?
est PL/SQL, même vulnérable à des fuites de mémoire? SQL est un langage de très haut niveau et ceux-ci n'ont généralement pas ce problème. –