Les Allergies
Alimentaires

Oracle - Cycle de vie des curseurs

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.
Publié par wjaouadi - Dernière mise à jour le 3 mai 2010 à 16:41 par spe2d
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.
Suggestions
  •  Oracle - Cycle de vie des curseurs
  •  Etapes du projet » Articles : Les étapes du projet Pour qu'il soit géré dans un contexte de qualité, un projet doit suivre différentes phases au terme desquelles des points de contrôle doivent être définis. Chaque étape fait l'objet d'un livrable et d'une validation à partir...
  •  Cycle de vie d'un logiciel » Articles : Cycle de vie d'un logiciel Le « cycle de vie d'un logiciel » (en anglais software lifecycle), désigne toutes les étapes du développement d'un logiciel, de sa conception à sa disparition. L'objectif d'un tel découpage est de permettre de définir des...
  •  Cycle de vie des servlets » Articles : Le cycle de vie d'une servlet Le cycle de vie d'une servlet est assuré par le conteneur de servlet. Ainsi afin d'être à même de fournir la requête à la servlet, récupérer la réponse ou bien tout simplement démarrer/arrêter la servlet, cette...
  •  Durée de vie des ordinateurs » Meilleure réponse: Entièrement daccord avec dpsc ! Peps arrêtes l'acharnement. Ok , tu prends pas trop bien le fait qu'on te dise que tu répond un peu à côté de la question PRATIQUE de la question. C'est un forum d'utilisateur , et la portée des question
  •  Méthodes agiles (RAD, XP) » Articles : Méthodes agiles Les méthodes de développement dites « méthodes agiles » (en anglais Agile Modeling, noté AG) visent à réduire le cycle de vie du logiciel (donc accélérer son développement) en développant une version minimale, puis en intégrant les...
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?
Oracle - Détection des objets débordant par rapport au MAXEXTEN
Oracle - Optimisation des opérations de tri