Blog ENI : Toute la veille numérique !
💥 Un livre PAPIER acheté
= La version EN LIGNE offerte pendant 1 an !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici

Gestion de l'instance

Gestion des paramètres d’initialisation

1. Modifier les paramètres d’initialisation

a. Les types de paramètres

Les paramètres peuvent être classés en deux catégories :

  • les paramètres dynamiques ;

  • les paramètres statiques.

Les paramètres dynamiques peuvent être modifiés par un ordre SQL alors que l’instance est en cours de fonctionnement. Selon les cas, le paramètre est modifiable au niveau de la session et/ou du système (pour toutes les sessions). Au niveau système, la modification peut être immédiate (s’applique aux sessions actuelles) ou différée (s’applique aux sessions futures uniquement).

Les paramètres statiques ne peuvent pas être modifiés dynamiquement alors que l’instance est en cours de fonctionnement ; il faut modifier la valeur du paramètre dans le fichier de paramètres et redémarrer l’instance.

Les colonnes ISSES_MODIFIABLE et ISSYS_MODIFIABLE de la vue V$PARAMETER donnent des informations sur le type de paramètre. La colonne ISSES_MODIFIABLE vaut TRUE ou FALSE selon que le paramètre est modifiable ou non au niveau de la session. La colonne ISSYS_MODIFIABLE vaut FALSE si le paramètre n’est pas modifiable au niveau du système et DEFERRED ou IMMEDIATE selon qu’il est modifiable en différé ou immédiatement.

Les différents paramètres sont décrits dans la documentation Database Reference.

b. Les ordres SQL ALTER SYSTEM et ALTER SESSION

Les ordres SQL ALTER SESSION et ALTER SYSTEM permettent de modifier dynamiquement la valeur des paramètres d’initialisation, respectivement au niveau de la session et du système.

Syntaxe simplifiée

ALTER SESSION SET paramètre = valeur [...] ; 
ALTER SYSTEM SET paramètre = valeur [...] [ COMMENT = 'texte' ]  
    [ DEFERRED ] [ SCOPE = MEMORY | SPFILE | BOTH ] ; 

Options

paramètre

Nom du paramètre.

valeur

Valeur attribuée au paramètre.

COMMENT = ’texte’

Commentaire associé à la modification du paramètre. Inséré dans le fichier de paramètres serveur si ce dernier est la cible de la modification (voir la clause SCOPE) ; visible dans la colonne UPDATE_COMMENT...

Gestion dynamique de la mémoire

1. Principes

Depuis Oracle9i, la SGA et la PGA sont dynamiques. Elles peuvent être modifiées dynamiquement alors que l’instance est en cours de fonctionnement, c’est-à-dire augmentées ou diminuées, sans devoir arrêter la base. De plus, depuis Oracle10g, la mémoire partagée peut être gérée automatiquement et depuis Oracle11g la totalité de la mémoire (SGA et PGA) peut l’être aussi (voir la section L’instance du chapitre Les bases de l’architecture Oracle).

Plusieurs paramètres relatifs à la gestion de la mémoire (PGA ou SGA) sont modifiables dynamiquement par l’intermédiaire de l’ordre SQL ALTER SYSTEM :

  • MEMORY_TARGET

  • SGA_TARGET

  • DB_CACHE_SIZE et éventuellement les différents paramètres DB_nK_CACHE_ SIZE (n valant 2, 4, 8, 16 ou 32)

  • SHARED_POOL_SIZE

  • LARGE_POOL_SIZE

  • JAVA_POOL_SIZE

  • STREAMS_POOL_SIZE

  • RESULT_CACHE_MAX_SIZE

  • PGA_AGGREGATE_TARGET

  • PGA_AGGREGATE_LIMIT

Seule la taille du Redo Log Buffer (paramètre LOG_BUFFER) ne peut pas être modifiée dynamiquement (mais sa valeur par défaut est généralement satisfaisante).

La taille maximum de la mémoire de l’instance est définie par le paramètre MEMORY_MAX_TARGET et la taille maximum de la SGA par le paramètre SGA_MAX_SIZE. Ces deux paramètres ne sont pas dynamiques et sont calculés, par défaut, au démarrage de l’instance s’ils ne sont pas définis dans le fichier de paramètres.

Depuis la version 12c, la taille maximum de la PGA est définie par le paramètre PGA_AGGREGATE_LIMIT. Ce paramètre est dynamique et il est calculé par défaut au démarrage de l’instance s’il n’est pas défini dans le fichier de paramètres. La valeur par défaut est égale à la plus grande des valeurs :

  • MEMORY_MAX_TARGET si MEMORY_TARGET est défini ;

  • 2 * PGA_AGGREGATE_TARGET si MEMORY_TARGET n’est pas défini ;

  • 90 % de la mémoire physique du serveur moins la taille totale de la SGA si MEMO-RY_TARGET n’est pas défini et si PGA_AGGREGATE_TARGET est explicitement égal à 0 ;

  • dans tous les cas, au moins égal à...