!
!
!
!
!
!
!
!

Curseur revisités

J'aimerais savoir quand on fait un open sur un curseur(PL/SQL) est ce qu'on récupère un tableau d'adresse des résultats ou bien une table temporaire contenant les résultats?

Quand un curseur est ouvert, une zone mémoire minimale est employée. Chaque fetch provoquera des allers retours entre la PGA (partie UGA) et la SGA (pour recuperer la ligne suivante dans cette zone minimale). (Le nom curseur est bien choisi :-))

Le curseur ne contiendra jamais plus d'une occurrence d'un set resultat (à part bien sur les versions futées munies de bulk fetch, etc) (definies en dur dans le code pl).

La PGA (Program Global Area ou Process Global Area) est une zone mémoire non partageable allouée à un process serveur associé à un process utilisateur dès sa connexion à la base de données. Elle est accessible en lecture/écriture exclusivement par le noyau ORACLE agissant pour le compte de l'utilisateur. Elle contient notamment des informations sur les ressources système utilisées par le process. Son contenu dépend de l'architecture ORACLE : multi-thread ou non.

  • Le STACK SPACE (Espace de pile) comprend les variables, les arrays spécifiques à la session de l'utilisateur.

  • SESSION INFORMATION
    Informations spécifiques de la session de l'utilisateur, les zones SQL privées et d'autres données. Si l'instance tourne en serveur multi-thread, SESSION INFORMATION est allouée dans la SGA, si l'instance tourne sans le multi-thread, SESSION INFORMATION est allouée dans la PGA. Des paramètres comme DB_FILES, LOG_FILES (avant 8i) et CONTROL_FILES influent sur sa taille. Certains paramètres spécifiques au système d'exploitation peuvent affecter la taille de la PGA.

La UGA (user global area) contient des informations sur une session utilisateur. Parmi ces informations se trouvent les parties persistantes et transientes des curseurs, des informations sur les packages utilisés, les rôles actifs, les traces des events, les database links. Des paramètres comme MAX_ENABLED_ROLES, OPEN_CURSORS et OPEN_LINKS influent sur sa taille. En architecture MTS, la UGA se trouve dans le LARGE POOL ou SHARED POOL. En architecture 'dedicated server', ou un processs utilisateur déclenche un process serveur, la UGA réside dans la PGA.


Copyright © 1998-2012 Radu Caulea, TAFORA MAJ 19/05/2012 !
Commentaires et suggestions radu[CHEZ]tafora.fr