Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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 différents paramètres sont décrits dans la documentation Oracle® Database Reference.
a. Les ordres SQL ALTER SYSTEM et ALTER SESSION
Syntaxe simplifiée :
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 de la vue V$PARAMETER si la mémoire est la cible de la
modification (voir la clause SCOPE).
DEFERRED
Si présente, indique que la modification ne concerne que les futures sessions, pas celles
actuellement connectées. N’a de sens que si la mémoire est la cible de la modification (voir la
clause SCOPE). Peut être obligatoire pour certains paramètres (ceux dont la colonne
ISSYS_MODIFIABLE vaut DEFERRED dans la vue $PARAMETER).
SCOPE
La clause SCOPE = SPFILE ne peut être spécifiée que si l’instance a démarré avec un fichier
de paramètres serveur. La modification s’applique uniquement au fichier de paramètres
serveur et n’est pas prise en compte immédiatement ; elle sera prise en compte uniquement
au prochain démarrage. C’est la seule option possible pour les paramètres statiques.
La clause SCOPE = BOTH s’applique à la mémoire (instance en cours) et est prise en compte
immédiatement (aspect MEMORY). La modification est persistante dans le fichier de
paramètres serveur (aspect SPFILE). Cette option n’est pas autorisée pour les paramètres
statiques (aspect MEMORY). Elle ne peut être spécifiée que si l’instance a démarré avec un
fichier de paramètres serveur (aspect SPFILE). Cette option n’est pas autorisée pour les
paramètres statiques (aspect MEMORY).
Exemple :
Si vous utilisez un fichier de paramètres serveur (conseillé) et que vous souhaitez modifier un
paramètre statique, procédez de la manière suivante :
Si l’instance est arrêtée et que vous souhaitez modifier un paramètre statique pour le prochain
démarrage, vous devez d’abord faire un STARTUP (NOMOUNT suffit), avant de modifier
le paramètre par l’ordre SQL ALTER SYSTEM et de redémarrer. L’ordre SQL ALTER
SYSTEM nécessite que l’instance soit démarrée.
Pour supprimer un paramètre du fichier de paramètres serveur, vous pouvez utiliser une
variante de l’ordre SQL ALTER SYSTEM.
Syntaxe simplifiée :
Options :
paramètre
Nom du paramètre
La clause SCOPE = SPFILE est optionnelle ; c’est la seule autorisée. Après la suppression,
au prochain démarrage, la valeur par défaut du paramètre sera utilisée. Les ordres SQL
ALTER SYSTEM de modification de paramètres sont enregistrés dans le fichier d’alerte de
l’instance.
paramètres qui ont été éventuellement modifiés dans la session (par un ALTER
SESSION).
V$SPPARAMETER : contenu actuel du fichier de paramètres serveur actif ; le contenu
de la vue est vide si l’instance n’utilise pas de fichier de paramètres serveur.
NAME
DISPLAY_VALUE
Valeur du paramètre dans un format d’affichage plus convivial (par exemple 256M au lieu de
264241156).
ISDEFAULT
ISMODIFIED
ISDEPRECATED
TRUE si le paramètre est déprécié (risque de disparaître dans une prochaine version), FALSE
sinon.
UPDATE_COMMENT
NAME
DISPLAY_VALUE
Valeur du paramètre dans un format d’affichage plus convivial (par exemple 252M au lieu de
264241152).
ISSPECIFIED
TRUE si le paramètre est spécifié dans le fichier de paramètres serveur, FALSE sinon.
UPDATE_COMMENT
Commentaire associé à la modification la plus récente (option COMMENT de l’ordre SQL
ALTER SYSTEM).
Exemple
Un fichier de paramètres serveur peut être réexporté au format texte par l’ordre SQL CREATE
PFILE.
Syntaxe
Le fonctionnement (signification des paramètres, valeurs par défaut, etc.) est le même que
pour l’ordre SQL CREATE SPFILE (voir la section Création d’une base de données à la main
du chapitre Création d’une nouvelle base de données).L’utilisation de cet ordre SQL nécessite
notamment une connexion SYSDBA ou SYSOPER. Cet ordre SQL peut être utilisé instance
arrêtée !
Exemple :
*. db_cache_size=152M
..
*. shared_pool_size=72M
...
*.db_name=’ASURINPTIC’
...
*.memory_target=524288000#Modif. OH du 01/05/2020
...
*.processes=200#Modif. OH du 01/05/2020
...
Ces lignes en gras correspondent à des paramètres dont la valeur avait été modifiée
précédemment avec l’option COMMENT. Le commentaire est présent dans le fichier de
paramètres serveur (voir aussi le contenu de la colonne UPDATE_COMMENT dans la vue
V$SPPARAMETER).
Dans l’optique de l’utilisation d’un fichier de paramètres commun à plusieurs instances (par
exemple, avec l’option RAC - Real Application Clusters), les paramètres peuvent être spécifiés
sous la forme instance.paramètre, le symbole * désignant n’importe quelle instance
(*.memory_target). Cette syntaxe est utilisée lors de l’export d’un fichier de paramètres
serveur.
Le fichier ainsi généré peut être utilisé à des fins de simple consultation ou de modification,
pour recréer le fichier de paramètres serveur à partir du fichier de paramètres texte modifié (à
l’aide de l’ordre SQL CREATE SPFILE ... FROM PFILE), ou pour effectuer des démarrages
particuliers. Notez que si l’instance a démarré avec un fichier de paramètres serveur, celui-ci
ne peut pas être remplacé alors qu’il est en cours d’utilisation ; vous devez donc arrêter la
base de données (SHUTDOWN IMMEDIATE) avant de recréer le fichier de paramètres
serveur à l’aide de l’ordre SQL CREATE SPFILE (qui lui aussi fonctionne instance arrêtée
!).Depuis la version 11, il est possible de créer un fichier de paramètres texte ou un fichier de
paramètres serveur à partir des valeurs des paramètres actuellement en mémoire (instance
en cours).
Syntaxe
Les principes de fonctionnement sont les mêmes que pour les autres variantes de syntaxe
de ces deux ordres SQL.
Dans le Database Control, cliquez sur le lien Serveur sur la page d’accueil puis sur le lien
Paramètres d’initialisation (cadre Configuration de base de données) pour accéder à la page
de gestion des paramètres d’initialisation :
Sur l’onglet En cours, vous pouvez consulter et modifier la valeur actuelle des paramètres.
Sur l’onglet Fichier SPFILE, vous pouvez consulter et modifier la valeur des paramètres dans
le fichier de paramètres serveur :
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).
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
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).
N’oubliez pas que toutes les valeurs des paramètres de dimensionnement de la mémoire sont
arrondies au granule supérieur (à l’exception du paramètre RESULT_ CACHE_MAX_SIZE
dont la valeur est définie par pas de 32 Ko).
Lors de la modification dynamique d’une structure mémoire, vous pouvez obtenir un message
d’erreur si la valeur demandée est trop grande ou trop petite (cf. section Gestion dynamique
de la mémoire).
La commande SQL*Plus SHOW SGA ou la vue V$SGA donne des informations synthétiques
sur la taille de la SGA. Dans les deux cas, la quantité SGA_MAX_SIZE est virtuellement
affectée à la SGA.
La vue V$SGAINFO donne des informations plus détaillées sur la SGA, et s’avère à l’usage
plus intéressante que la vue V$SGA.
Cette vue donne notamment la taille actuelle réelle des différentes composantes de la SGA,
ainsi que la taille du granule (ligne Granule Size). Toutes les tailles sont en octets. La colonne
RESIZEABLE indique si la taille de la structure correspondante peut être modifiée
dynamiquement.
La ligne Free SGA Memory Available donne la différence entre la taille maximum de la SGA
(SGA_MAX_SIZE) et la taille actuelle de la SGA, et donc la quantité de mémoire
supplémentaire qui peut être allouée à la SGA en cas de besoin (soit automatiquement, soit
manuellement selon la configuration). Il faut noter que, dans le cas où la gestion automatique
de la mémoire de l’instance est activée, cette mémoire "libre" inclut la quantité de mémoire
allouée à la PGA et n’est donc pas réellement disponible en totalité pour la SGA.
Des informations plus complètes sur les structures dynamiques de la mémoire (SGA et PGA)
sont disponibles dans la vue V$MEMORY_DYNAMIC_COMPONENTS. Les principales
colonnes sont les suivantes :
COMPONENT
Nom de la structure.
CURRENT_SIZE
Taille actuelle de la structure.
MIN_SIZE
Taille minimum de la structure depuis le démarrage de l’instance.
MAX_SIZE
Taille maximum de la structure depuis le démarrage de l’instance.
USER_SPECIFIED_SIZE
Valeur affectée au paramètre.
LAST_OPER_TYPE
Information sur la dernière opération réalisée sur la structure (GROW, SHRINK, etc.).
LAST_OPER_MODE
Mode de la dernière opération (MANUAL, IMMEDIATE,
etc.). LAST_OPER_TIME
Date/heure de la dernière opération.
GRANULE_SIZE
Taille du granule.
Toutes les tailles sont en octets.
Exemple :
SQL> SELECT component,current_size/(1024*1024) current_mb
2 FROM
v$memory_dynamic_components;
COMPONENT CURRENT_MB
------------------------------ ----------
shared pool 72
large pool 4
java pool 4
streams pool 0
SGA Target 240
DEFAULT buffer cache 152
KEEP buffer cache 0
RECYCLE buffer cache 0
DEFAULT 2K buffer cache 0
DEFAULT 4K buffer cache 0
DEFAULT 8K buffer cache 0
DEFAULT 16K buffer cache 0
DEFAULT 32K buffer cache 0
Shared IO Pool 0
PGA Target 160
ASM Buffer Cache 0
Par l’intermédiaire de cette vue, nous pouvons voir la quantité de mémoire allouée à la SGA
(ligne SGA Target) et à la PGA (ligne PGA Target), ainsi que la répartition de la SGA entre
ces différentes composantes. Sur cet exemple, nous voyons qu’il y a 8 Mo (240-72-4- 4-152),
soit 2 granules, réservés pour les structures non dynamiques de la SGA (Redo Log Buffer et
SGA fixe).
Les vues V$MEMORY_* sont apparues en version 11 et tiennent compte de la PGA. Il existe
des vues équivalentes, apparues en version 10, mais limitées à la SGA : V$SGA_
DYNAMIC_COMPONENTS, V$SGA_RESIZE_OPS et V$SGA_CURRENT_RESIZE_OPS.
Si vous le souhaitez, vous pouvez aussi modifier la valeur des paramètres gérés
manuellement et/ou la valeur des paramètres gérés automatiquement (dans ce dernier cas
vous définissez alors un minimum pour le paramètre).
Exemple :
large pool 4 0
java pool 4 0
SGA Target 300 300
DEFAULT buffer cache 156 0
DEFAULT 16K buffer cache 32 32
PGA Target 64 64
*** LIBRE SGA *** 0
(SGA_TARGET), puis une nouvelle répartition de la SGA entre ces différentes composantes,
selon les mêmes règles que pour la gestion automatique de la mémoire partagée.
En complément, si vous le souhaitez, vous pouvez aussi modifier la valeur des paramètres
SGA_TARGET et PGA_AGGREGATE_TARGET. Dans ce cas, SGA_TARGET et PGA_
AGGREGATE_TARGET imposent simplement un minimum respectivement pour la SGA et
pour la PGA.
Par ailleurs, n’oubliez pas que le paramètre statique SGA_MAX_SIZE, s’il est défini, impose
une taille maximum pour la SGA.
Exemple :
SQL> @memoire
COMPONENT CURRENT_SIZE USER_SPECIFIED_SIZE
------------------------------ ------------ -------------------
shared pool 72 0
large pool 4 0
java pool 4 0
SGA Target 240 0
DEFAULT buffer cache 152 0
PGA Target 160 0
*** LIBRE SGA *** 260
d. Conclusion et conseil
En interne, les paramètres * ( db_cache_size par exemple) sont utilisés par les fonctionnalités
de gestion automatique. Ils donnent la quantité de mémoire actuellement
allouée à chaque structure gérée automatiquement ; le paramètre « normal » (non préfixé par
les deux caractères soulignés) donne la valeur minimale du paramètre, telle que vous avez
pu la définir (0 sinon). La valeur de ces paramètres internes est enregistrée dans le fichier de
paramètres serveur (s’il est utilisé) ; en cas de redémarrage, la configuration mémoire, qui
était utilisée au moment de l’arrêt (a priori optimale), sera rétablie.
Dans le Database Control, cliquez sur le lien Serveur sur la page d’accueil puis sur le lien
Fonctions de conseil sur la mémoire (cadre Configuration de base de données) pour accéder
à la page de gestion des paramètres de mémoire.
Pour affecter une valeur minimum à un paramètre de la SGA géré automatiquement, ou pour
affecter une valeur à un paramètre de la SGA géré manuellement, vous devez passer par la
page Paramètres d’initialisation (cf. la section Gestion des paramètres d’initialisation).
b. Avec la gestion automatique de la mémoire
Dans la deuxième partie de l’écran, l’onglet SGA affiche la répartition de la SGA entre les
différentes composantes (avec l’historique de la répartition) et l’onglet PGA, quelques
informations sur la PGA :
Dans la première partie de la fenêtre, la zone Taille totale de mémoire permet de modifier la
taille de la mémoire (paramètre MEMORY_TARGET) et la zone Taille maximale de mémoire,
la taille maximum de la mémoire (paramètre MEMORY_MAX_TARGET).
Vous pouvez cocher la case Appliquer les modifications uniquement au fichier SPFILE (tout
en bas de l’écran) si vous souhaitez que les modifications n’affectent que le fichier de
paramètres serveur (SCOPE=SPFILE). Par défaut, les modifications affectent l’instance
actuelle et le fichier de paramètres serveur (SCOPE=BOTH) ; le Database Control vous
proposera en conséquence de redémarrer si vous modifiez la taille maximum de la mémoire
(paramètre statique). Cliquez sur le bouton Désactiver si vous souhaitez désactiver la gestion
automatique de la mémoire. Dans la nouvelle configuration, la gestion automatique de la
mémoire partagée est activée.
Dans l’onglet SGA, le Database Control affiche la répartition de la SGA entre les différentes
composantes (avec l’historique de la répartition). La zone Taille totale de mémoire SGA (Mo)
permet de modifier la taille de la SGA (paramètre SGA_TARGET) et la zone Taille maximale
de mémoire SGA (MB), la taille maximum de la SGA (paramètre SGA_MAX_SIZE).
Dans l’onglet PGA, le Database Control affiche quelques informations sur la PGA. La zone
Cible d’agrégation de la mémoire PGA permet de modifier la taille de la PGA (paramètre
PGA_AGGREGATE_TARGET).
La case Appliquer les modifications uniquement au fichier SPFILE a le même rôle qu’avec la
gestion automatique de la mémoire. Le Database Control vous proposera notamment de
redémarrer si vous modifiez la taille maximum de la SGA (paramètre statique).
En haut de l’écran, vous pouvez cliquer sur le bouton Activer pour activer la gestion
automatique de la mémoire. Le Database Control vous invite alors à régler la taille de la
mémoire (paramètre MEMORY_TARGET) et la taille maximum de la mémoire (paramètre
MEMORY_MAX_TARGET) :
À l’inverse, dans l’onglet SGA, vous pouvez cliquer sur le bouton Désactiver pour désactiver
la gestion automatique de la mémoire partagée. Le Database Control vous invite alors à régler
la taille des différents composants de la SGA qui sont gérés automatiquement :
automatiquement, ainsi que la taille maximum de la SGA, et permet de les modifier (voir ci-
dessus pour le fonctionnement).
Cliquez sur le bouton Activer de l’onglet SGA si vous souhaitez activer la gestion automatique
de la mémoire partagée. Le Database Control vous invite alors à régler la taille de la SGA
(SGA_TARGET) :
Comme dans le point précédent, le bouton Activer situé tout en haut de l’écran permet
d’activer la gestion automatique de la mémoire.