Oracle - Cycle de vie des curseurs

Décembre 2016

La bonne compréhension du cycle de vie et du fonctionnement des curseurs, permet d'optimiser les applications exécutant des requêtes SQL.

Les étapes lors de l'exécution d'un curseur sont les suivantes :
  • Ouverture d'un curseur : une structure mémoire est allouée pour le curseur au niveau de la mémoire privée du processus serveur du côté serveur associée avec la session (UGA User Global Area). A noter qu'aucune requête SQL n'est encore associée au curseur.
  • Parcours du curseur : une requête SQL est associée au curseur. La représentation du parcours de la requête incluant son plan d'exécution, qui décrit comment le moteur SQL exécutera la requête SQL, est chargée dans la Shared Pool, plus précisément dans la library cache. La structure dans la UGA est mise à jour pour stocker un pointeur vers la zone associée au curseur dans la library cache.
  • Définition des variables de sortie : la requête SQL retourne des données, c'est pour cela que les variables qui les accueilleront doivent être définies. Cette définition est aussi nécessaire pour les requêtes Delete, Insert et Update qui utilisent la clause RETURNING.
  • Liaison des variables d'entrée : si la requête SQL utilise des variables liées, celles-ci doivent être fournies. Aucune vérification n'est effectuée lors du lien. Si des valeurs invalides sont transmises, une erreur d'exécution sera alors déclenchée.
  • Exécution du curseur : au niveau de cette étape, la requêtes SQL est exécutée. En fonction du moteur de base de données, la phase d'exécution réelle peut être différée à l'étape de fetch.
  • Fetch du curseur (récupération du contenu) : si la requête SQL retourne un résultat, c'est au niveau de cette étape qu'il est récupéré. En général c'est au niveau de cette étape que le traitement s'effectue.
  • Fermeture du curseur : les ressources associées au curseur au niveau de la UGA sont automatiquement libérées. Le curseur au niveau de la library cache n'est pas supprimé pour répondre à d'éventuelles futures utilisations.

Le schéma ci-dessous illustre le cycle de vie d'un curseur.

A voir également :

Ce document intitulé «  Oracle - Cycle de vie des curseurs  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.