Dimensionnement de la mémoire totale (MEMORY_TARGET)

Le paramètre MEMORY_TARGET définit la mémoire utilisable pour l'ensemble du système Oracle, à la fois mémoire SGA et mémoire PGA. Avant Oracle Database version 11g, la mémoire SGA et la mémoire PGA devaient être ajustées séparément.

Lors d'une mise à niveau d'Oracle 10g vers 11g, il suffit, pour déterminer la valeur de MEMORY_TARGET, d'additionner la valeur qu'avaient SGA_TARGET et PGA_AGGREGATE_TARGET pour la base de données Oracle 10g.

Lors d'une mise à niveau d'Oracle 9i vers 11g, il faut, pour déterminer la valeur de MEMORY_TARGET, additionner PGA_AGGREGATE_TARGET et tous les composants SGA, y compris DB_CACHE_SIZE, SHARED_POOL_SIZE, LARGE_POOL_SIZE, JAVA_POOL_SIZE, etc.

Lorsqu'une base de données ne résulte pas de la mise à niveau d'une version antérieure et n'a pas de références historiques, Oracle recommande d'attribuer au départ à ce paramètre une valeur comprise entre 1 et 3 Go, en fonction des ressources et des limites du système. Ensuite, une fois que la base de données a été utilisée pendant un certain temps, ce paramètre peut être ajusté comme suit : (Cet ajustement vaut également pour les deux scénarios de mise à niveau ci-dessus.)

SQL> select * from v$memory_target_advice order by memory_size;
MEMORY_SIZE MEMORY_SIZE_FACTOR ESTD_DB_TIME ESTD_DB_TIME_FACTOR VERSION
180 .5 458 1.344 0
270 .75 367 1.0761 0
360 1 341 1 0
450 1.25 335 .9817 0
540 1.5 335 .9817 0
630 1.75 335 .9817 0
720 2 335 .9817 0

La ligne dans laquelle la valeur de MEMORY_SIZE_FACTOR est 1 montre la taille actuelle de la mémoire, telle que définie par le paramètre d'initialisation MEMORY_TARGET, et le temps base de données requis pour venir à bout de la charge actuelle. Les lignes précédentes et suivantes font varier la valeur de MEMORY_TARGET et indiquent le résultat correspondant. Pour chaque taille de mémoire sont indiqués le facteur de taille (le multiplicateur de la taille actuelle) et le temps base de données qu'il faudrait pour venir à bout de la charge actuelle si la valeur de MEMORY_TARGET était cette autre taille. Remarquez que lorsque la taille de la mémoire totale est inférieure à la valeur actuelle de MEMORY_TARGET (en l'occurrence 360), le temps base de données estimé (ESTD_DB_TIME) augmente. Remarquez également que, dans cet exemple, il est inutile de faire augmenter la taille de la mémoire totale au-delà de 450 Mo car la valeur de ESTD_DB_TIME ne diminue plus. Par conséquent, dans cet exemple, la valeur suggérée pour MEMORY_TARGET est 450 Mo.