tris sur temp ou dans pga?
Bonjour à tous,
Je cherche à comprendre quelque chose que je n'ai pas reussi à trouver ou comprendre dans la doc.
Normalement les tris sont fait en PGA_AGGREGATE_TARGET puis s'il n'y a pas la place dans le tablespace temporaire. Il est donc interressant d'avoir une PGA elevée.
Je pense avoir cela en mode dedié.
Par contre quand on passe oracle en mode MTS, oracle semble ne plus utiliser la PGA_AGGREGATE_TARGET.
Pour le même select dans les deux configurations, je fais le tris en mémoire et dans le temp respectivement.
Quelqu'un a déjà eu ce problème et à une idée pour sa résolution?
a quoi peut donc bien servir la PGA_AGGREGATE_TARGET avec un shared serveur?
Re: tris sur temp ou dans pga?
Citation:
Envoyé par aline
Pour le même select dans les deux configurations, je fais le tris en mémoire et dans le temp respectivement.
a quoi peut donc bien servir la PGA_AGGREGATE_TARGET avec un shared serveur?
Dans une connection en Shared Sever, la PGA n'est pas utilisée. A la place, c'est la UGA dans la Large POOL qui est utlisée comme zone commune pour toutes les sessions en Shared server. Dans le cas d'un tri, ca fonctionne comme pour la PGA, si le tri ne peut se faire en memoire le tablespace temporaire sera utilisé.
Re: tris sur temp ou dans pga?
Citation:
Envoyé par thomasjcj
Citation:
Envoyé par aline
Pour le même select dans les deux configurations, je fais le tris en mémoire et dans le temp respectivement.
a quoi peut donc bien servir la PGA_AGGREGATE_TARGET avec un shared serveur?
Citation:
Envoyé par thomasjcj
Dans une connection en Shared Sever, la PGA n'est pas utilisée. A la place, c'est la UGA dans la Large POOL qui est utlisée comme zone commune pour toutes les sessions en Shared server.
oui
Citation:
Envoyé par thomasjcj
Dans le cas d'un tri, ca fonctionne comme pour la PGA, si le tri ne peut se faire en memoire le tablespace temporaire sera utilisé.
Je ne suis pas d'accord avec toi. Quand un tri doit se faire, avant de le faire dans le tablespaces temp, il est fait dans la PGA_AGGREGATE_TARGET qui n'est pas la même chose que la pga!
Pour rappel, c'est une zone alloué en mémoire à tout les utilisateurs pour le tri. Elle permet de remplacer avantageusement la sort area size.
Mais cela est vrai en dédié et pas en mts. Et la cette zone ne sert plus à rien!
Et c'est cela que je ne comprend pas!
Re: tris sur temp ou dans pga?
Citation:
Envoyé par aline
Quand un tri doit se faire, avant de le faire dans le tablespaces temp, il est fait dans la PGA_AGGREGATE_TARGET qui n'est pas la même chose que la pga!
Il faut essayer de ne pas mélanger les termes.
PGA_AGGREGATE_TARGET est un parametre et la PGA et une zone mémoire. PGA_AGGREGATE_TARGET defini la taille maximale que peut atteindre la PGA totale allouée a toute une Instance. Prenons une connection dediée, un user process va etre crée et une PGA va lui etre allouée. mettons que ce user process traite des requetes avec des gros tri. Oracle va tenter d'aggrandir la PGA allouée au user process dans la limite du prametre PGA_AGGREGATE_TARGET, et en tenant bien sur compte des eventuels autres PGA allouées par d'autres user Process.
Es c'que c'est plus clair :?:
Tu peux aussi voir la doc Oracle a ce sujet si tu ne l'a pas encore parcourue
http://download-west.oracle.com/docs...emor.htm#14491
PGA_AGREGATE_TARGET et versionning
Petite précision qui interressera Aline et d'autres sur la PGA_Agregate_target.
Citation:
As of now, the rule is that a single (serial) SQL operator cannot consume more than 5% of pga_aggregate_target and a single SQL operator executed in parallel (e.g. parallel create index) cannot consume more than 30% of the PGA memory
Donc en PGA_Agregate_target, si on a 1 Go on a de rééllement utilisable pour l'utilisateur 5% de 1Go en mode non parallélisé ==> Soit 52Mo
Et en mode parallélisé 30% par degré de parallélisation ==> Soit pour 4 process // ==> 78 Mo
Dû à un paramètre caché d'oracle _pga_max_size pour le non // et _smm_px_max_size en //.
ATTENTION: La modification de ces paramètres est à proscrire sans l'avis d'Oracle et de toute manière vous perdriez votre support en cas de modification (valabble pour toutes les modifications de paramètre caché).
De plus la modification conduit (inexpliqué aujourd'hui..) parfois à des erreurs ORA-04300 même avec de la mémoire disponible.
==> Donc pour les DATAWAREHOUSE, il faut tester avec les paramètres standards sans mode auto et la parallélisation.
La requête suivante (Collecter de manière régulière) peut aider à déterminer les types de SORT effectuer en base (HASH/join) pour définir les besoins (et donc désengorger le tablespace temporaire):
SELECT s.sid, u.segtype, blocks*p.value / 1024 / 1024 "Taille en MB"
FROM v$sort_usage u, v$session s,v$parameter p
WHERE u.session_addr = s.saddr
and p.name='db_block_size';
De plus en Version 9i la PGA_Agregate_target est utilisée pour les serveur dédié MAIS pas pour les serveurs MTS (où les paramètres *_AREA_SIZE seront utilisés à la place).
En version 10g la PGA_Agregate_target est utilisé en mode Dédié ou MTS.
Mais rappelons-le, il faut limiter voir proscrire les sorts....dans les requêtes SQL.