Vous êtes sur la page 1sur 7

White Papers TAFORA

www.tafora.fr

Radu Caulea, TAFORA

TAFORA

ORACLE au quotidien

White Papers TAFORA pour ORACLE 7,8,8i,9i


PGA_aggregate_target
DRAFT 2.11.502 - 03/01/2004 15:33

Prservez vos donnes! O cassons los pour avoir la moelle!

TWP_PGA_Aggregate.doc

Radu Caulea, TAFORA

www.tafora.fr

White Papers TAFORA

1
1 2

Table de matires
TABLE DE MATIERES............................................................................................................................... 2 PGA_AGGREGATE_TARGET ................................................................................................................. 3 2.1 LA ZONE PGA......................................................................................................................................... 3 2.1.1 Fonctionnement............................................................................................................................ 3 2.1.2 Contenu ......................................................................................................................................... 3 2.2 LA ZONE UGA (USER GLOBAL AREA).............................................................................................. 3 2.3 PGA_AGGREGATE_TARGET (9I+) ................................................................................................. 3 2.3.1 Informations dans V$SYSSTAT................................................................................................. 4 2.3.2 Informations dans v$pgastat ...................................................................................................... 4 2.3.3 Informations dans v$process ..................................................................................................... 5 2.3.4 Acclrer les tris........................................................................................................................... 6 2.3.5 Gestion des tris............................................................................................................................. 6

La zone PGA

PGA_aggregate_target

www.tafora.fr

Radu Caulea, TAFORA

PGA_AGGREGATE_TARGET

2.1 La zone PGA


2.1.1 Fonctionnement
La PGA (Program Global Area ou Process Global Area) est une zone mmoire non partageable alloue un process serveur utilisateur ds sa connexion la base de donnes. Elle est accessible en lecture/criture exclusivement par le noyau ORACLE agissant pour le compte de l'utilisateur.

2.1.2 Contenu
Le contenu de la PGA dpend de l'architecture ORACLE : multi-thread ou non. La PGA contient la sort area, les informations sur le session, les informations sur les curseurs (private sql area), le stack space. Elle est utilise par un seul process serveur, elle est alloue ds que le process est dmarr et dsalloue quand celui-ci est tu (ou termin). Dans le cas du serveur ddi, elle contient la sort_area, les rceptacles des curseurs de la session, les variables relles (pas les bind variables), le stack space. La PGA n'est pas partage. Notons que dans le cas de MTS (Shared Servers), les informations de la session sont stockes dans le Shared Pool. Dans le traitement SQL, une zone prive situe dans la PGA fera transiter les rsultats.

2.2 La zone UGA (USER GLOBAL AREA)


Cette zone de mmoire (situe l'exterieur de la SGA) correspond un espace allou une session utilisateur. En architecture dedicated server, elle fait partie de la PGA et est libre une fois la connexion finie. En architecture MTS, elle figure dans le shared pool.

2.3 PGA_AGGREGATE_TARGET (9i+)


Avant Oracle9i l'optimisation de la PGA tait difficilement ralisable et largement dpendante du type d'opration excute. A partir de la version 9i, Oracle prend en charge l'optimisation de cette zone. Le paramtre PGA_AGGREGATE_TARGET indique la mmoire alloue globalement pour les zones PGA attaches l'instance. En rgle gnrale, elles peuvent occuper toute la mmoire alloue pour Oracle en dehors de la SGA. L'optimisation est effectue par Oracle si les parametres suivants sont renseigns : WORKAREA_SIZE_POLICY Ce paramtre peut tre AUTO: Oracle optimise l'utilisation des zones PGA (le paramtre suivant doit tre galement spcifi) MANUAL: Les zones PGA seront fixes avec les paramtres SORT_AREA_SIZE, HASH_AREA_SIZE, BITMAP_MERGE_AREA_SIZE, CREATE_BITMAP_AREA_SIZE

PGA_AGGREGATE_TARGET = 100000K (10M 4G) Les valeurs pour cette zone peuvent tre dcides initialement ainsi: PGA_AGGREGATE_TARGET = (MEM * 80%) * 20% pour un systme OLTP PGA_AGGREGATE_TARGET = (MEM * 80%) * 50% pour un systme dcisionnel Une des nouveauts invaluables de la version 9i est la possibilit de scruter l'utilisation de la mmoire par les process individuels ainsi que la possibilit d'allouer une zone commune de mmoire auto optimizable pour les process. En 9i, la PGA est constitue d'une partie optimisable et une autre non optimisable. La premire partie est constitue de la mmoire utilise par les zones de travail temporaires SQL. La gestion automatise de la PGA optimise la partie optimisable. En regle generale, la taille mmoire non optimisable + taille mmoire optimisable doit tre infrieure PGA_AGGREGATE_TARGET. Le paramtre PGA_AGGREGATE_TARGET (nouveau en 9i) spcifie la quantit de mmoire utilisable par les process pour accomplir leur tache. En mode shared servers (ancien MTS), le fonctionnement de la mmoire alloue avec PGA_AGGREGATE_TARGET a un fonctionnement similaire au Large Pool.
PGA_AGGREGATE_TARGET 3

Radu Caulea, TAFORA

www.tafora.fr

White Papers TAFORA

L'avantage de ce nouveau dcoupage de la mmoire est que chaque process peut employer jusqu' 5% de la mmoire allou pour les activits de tri et de hash join (contrairement SORT_AREA_SIZE dans les versions antrieures). Avant de le comprendre, soyons surs que si trop petit il pnalisera les traitements, trop grand il provoquera le swap OS de la mmoire. Quelques rgles au pif pour vrifier la justesse de son choix :

2.3.1

Informations dans V$SYSSTAT

SQL> select name,value 2 from V$SYSSTAT 3 where name like 'workarea executions%'; NAME VALUE ----------------------------------- ---------workarea executions - optimal 9140 workarea executions - onepass 47 workarea executions - multipass 0 Lors d'un tri ou d'une operation de type hash-join, un process cherchera dans la partie de la RAM protge par pga_aggregate_target (dans la limite de 5% de son volume) un ensemble contig de RAM pour effectuer l'operation. Si il aboutit, le compteur workarea executions - optimal est incrment. Si la quantit de mmoire est acquise pendant une seule visite de la rgion scanne, le compteur workarea executions onepass est incrment. Si plusieurs visites sont ncessaires, le compteur workarea executions - multipass est incrment. Ce que vous voulez est dans l'ordre de l'importance: ne pas avoir une valeur significative pour ' workarea executions - multipass'. ne pas avoir une valeur significative pour ' workarea executions - onepass'. Idalement, le premier paramtre sera zero. La mmoire est bien utilise si onepass et multipass sont zro, auquel cas vous pouvez diminuer le paramtre ! En rgle gnrale, vous devriez vous assurer que plus de 95% des process accident leur mmoire d'une manire optimale.

2.3.2

Informations dans v$pgastat

La vue v$pgastat montre le volume de RAM utilis par divers activits dans l'instance, ce qui permet de connatre les utilisations maximales et infrer les divers allocations maximales. SQL> select * from v$pgastat; NAME VALUE UNIT ---------------------------------------- ---------- -----------aggregate PGA target parameter 25165824 bytes aggregate PGA auto target 8312832 bytes global memory bound 1257472 bytes total PGA inuse 16083968 bytes total PGA allocated 27065344 bytes maximum PGA allocated 31510528 bytes total freeable PGA memory 0 bytes PGA memory freed back to OS 0 bytes total PGA used for auto workareas 0 bytes maximum PGA used for auto workareas 1462272 bytes total PGA used for manual workareas 0 bytes maximum PGA used for manual workareas 0 bytes over allocation count 0 bytes processed 4402482176 bytes extra bytes read/written 791804928 bytes cache hit percentage 84,75 percent

PGA_AGGREGATE_TARGET (9i+)

PGA_aggregate_target

www.tafora.fr

Radu Caulea, TAFORA

Ce que vous cherchez est que 'over allocation count' soit zro, que 'cache hit percentage' avoisine 100 (%) et que 'aggregate PGA auto target' soit sensiblement gale 'aggregate PGA target parameter'. 3. SQL> 2 3 4 5 select round(pga_target_for_estimate/1024/1024) PGA_EST_MB, bytes_processed,estd_extra_bytes_rw, estd_pga_cache_hit_percentage, estd_overalloc_count from v$pga_target_advice; Octets Vehicules ---------4472026112 4472026112 4472026112 4472026112 4472026112 4472026112 4472026112 4472026112 4472026112 4472026112 4472026112 4472026112 Octets PGA % Estimation Surestimes Hit Surallocation ---------- ---------- ------------1751924736 72 47 1751924736 72 47 419942400 91 0 419942400 91 0 419942400 91 0 419942400 91 0 419942400 91 0 419942400 91 0 419942400 91 0 419942400 91 0 419942400 91 0 419942400 91 0

Estimation PGA (MB) ---------12 18 24 29 34 38 43 48 72 96 144 192

Dans ce cas, PGA_AGGREGATE_TARGET est x Megas. Si on l'agrandit y megas, les octets surestims tend vers zero et le hit ratio tend vers 91%. Une surallocation de la PGA de plus de z MB n'apporte pas des bnfices complmentaires.

2.3.3

Informations dans v$process

Des colonnes supplmentaires (pga_used_memory, pga_allocated_memory, et pga_max_memory) marquent des dtails concernant l'utilisation des PGAs par des procs (background et utilisateurs) SQL> 2 3 4 5 6 select program c1,pga_used_mem c2,pga_alloc_mem c3,pga_max_mem c4 from v$process order by c4 desc;

PGA PGA PGA Program Used Allocated Maximum Name Memory Memory Memory ------------------------------ ------------ ------------ -----------ORACLE.EXE 4,348,892 7,415,080 7,415,080 ORACLE.EXE 4,347,340 4,471,236 4,471,236 ORACLE.EXE 4,347,340 4,471,236 4,471,236 ORACLE.EXE 135,832 3,279,212 3,279,212 ORACLE.EXE 144,960 2,864,168 2,864,168 ORACLE.EXE 466,944 737,820 1,962,124 ORACLE.EXE 183,160 777,948 777,948 ORACLE.EXE 442,240 509,884 509,884 ORACLE.EXE 194,032 257,960 300,408 ORACLE.EXE 158,768 225,220 225,220 ORACLE.EXE 169,104 225,220 225,220 ORACLE.EXE 161,552 225,220 225,220 ORACLE.EXE 141,652 208,180 208,180 ORACLE.EXE 142,036 208,180 208,180 ORACLE.EXE 133,340 199,668 199,668
PGA_AGGREGATE_TARGET 5

Radu Caulea, TAFORA ORACLE.EXE ORACLE.EXE ORACLE.EXE ORACLE.EXE PSEUDO 20 rows selected. SQL>

www.tafora.fr 56,792 56,792 56,792 56,792 0 145,020 145,020 145,020 145,020 0

White Papers TAFORA 145,020 145,020 145,020 145,020 0

2.3.4

Acclrer les tris

Utiliser des tablespaces ddis aux segments temporaires (sur des disques rapides) ventuellement en stripe sur plusieurs disques. Utiliser ces tablespaces temporaires pour les utilisateurs : CREATE TABLESPACE temp1 TEMPORARY . . . ; CREATE temporary TABLESPACE temp2 tempfile . . . ; ALTER USER UTILISATEUR TEMPORARY TABLESPACE tempx; Faire souvent un coalesce de ces tablespaces : le default storage a imprativement un PCTINCREASE de 0 qui empche SMON de faire ce travail (Prcaution devenue caduque avec l'apparition des tempfiles) Employer les options NOSORT/NOLOGGING/UNRECOVERABLE (dans le cas de l'utilisation de nosort, la table doit tre pr-trie). CREATE INDEX dept_idx ON dept (deptno) NOSORT NOLOGGING PARALLEL (DEGREE 3); Les tris sont utiliss par les oprations suivantes : Cration d'index Les ordres utilisant GROUP BY, ORDER BY, DISTINCT Les jointures Les ordres utilisant UNION, INTERSECT, MINUS Les tris peuvent tre effectus soit en mmoire, soit sur disque. Ils gnrent alors un nombre important d'entres/sorties. Il est possible de vrifier le nombre de tris qui ont t effectus sur disque : SELECT name, value FROM V$SYSSTAT WHERE name in ('sorts(memory)', 'sorts(disk)'); Si le nombre de tris sur disque parat important, il peut tre intressant d'augmenter la valeur du paramtre SORT_AREA_SIZE.

2.3.5

Gestion des tris

SELECT * FROM DBA_TABLES order by table_name; Comparez les tris (disque) au ratio des tris (mmoire). Interrogez la vue V$SYSSTAT : select disk.value "Disk", mem.value "Mem", (disk.value/mem.value)*100 "Ratio" from V$SYSSTAT mem, V$SYSSTAT disk where mem.name = 'sorts (memory)' and disk.name = 'sorts (disk)'; select tablespace_name, current_users, total_extents,
6 PGA_AGGREGATE_TARGET (9i+)

PGA_aggregate_target

www.tafora.fr

Radu Caulea, TAFORA

used_extents, extent_hits, max_used_blocks, max_sort_blocks from v$sort_segment; Effectuez un tri et interrogez la table select tablespace_name, current_users, total_extents, used_extents, extent_hits, max_used_blocks, max_sort_blocks from v$sort_segment; Si 'sorts (disk)'/'sorts (memory)' > 5% (dans V$SYSSTAT) alors augmenter la valeur du paramtre d'initialisation sort_area_size (modifiable dynamiquement).

PGA_AGGREGATE_TARGET

Vous aimerez peut-être aussi