Vous êtes sur la page 1sur 22

Classe ASUR INPTIC 2020

Support de Cours ORACLE 11g : présenté par M. MOMBO Levy G.

Chapitre 07 : Gestion de l'instance


 Gestion des paramètres d'initialisation
 Gestion dynamique de la mémoire

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 Oracle® Database Reference.
a. 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

Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon Page1


Classe ASUR INPTIC 2020
Support de Cours ORACLE 11g : présenté par M. MOMBO Levy G.

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

Définit la cible de la modification :

- MEMORY : la mémoire seulement (instance en cours).

- SPFILE : le fichier de paramètres serveur seulement.

- BOTH : les deux.

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 = MEMORY s’applique uniquement à la mémoire (instance en cours) et est


prise en compte immédiatement. La modification ne survit pas à l’arrêt de la base. Cette option
n’est pas autorisée pour les paramètres statiques. C’est la seule option possible si l’instance
a démarré avec un fichier de paramètres texte ; c’est la valeur par défaut dans ce cas.

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 :

Modification d’un paramètre uniquement dans le fichier de paramètres serveur :

Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon Page2


Classe ASUR INPTIC 2020
Support de Cours ORACLE 11g : présenté par M. MOMBO Levy G.

SQL> ALTER SYSTEM SET PROCESSES = 200


2 COMMENT = ’Modif. OH du 10/07/2008’
3 SCOPE =
SPFILE;
Système modifié.
Modification d’un paramètre en mémoire et dans le fichier de paramètres serveur :
SQL> ALTER SYSTEM SET MEMORY_TARGET = 500M
2 COMMENT = ’Modif. OH du 10/07/2008’
3 SCOPE =
BOTH;
Système modifié.

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 :

 Modifiez le paramètre avec l’ordre SQL ALTER SYSTEM et la clause SCOPE=SPFILE.


 Redémarrez l’instance (SHUTDOWN IMMEDIATE puis STARTUP).

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 :

ALTER SYSTEM RESET paramètre [ SCOPE = SPFILE ] ;

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.

2. Les paramètres dans le dictionnaire de données

Plusieurs vues du dictionnaire permettent de visualiser les paramètres :

 V$SYSTEM_PARAMETER : valeur actuelle des paramètres dans l’instance.


 V$SYSTEM_PARAMETER2 : même chose que V$SYSTEM_PARAMETER mais avec
un affichage sur plusieurs lignes des paramètres qui ont une liste de valeurs (comme
le paramètre CONTROL_FILES par exemple).
 V$PARAMETER et V$PARAMETER2 : même contenu que les vues V$SYSTEM_
PARAMETER et V$SYSTEM_PARAMETER2 mais avec les valeurs actuelles des
paramètres dans la session courante ; ces vues donnent donc la valeur des

Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon Page3


Classe ASUR INPTIC 2020
Support de Cours ORACLE 11g : présenté par M. MOMBO Levy G.

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.

Principales colonnes des vues V$SYSTEM_PARAMETER,


V$SYSTEM_PARAMETER2, V$PARAMETER et V$PARAMETER2 :

NAME

Nom du paramètre (en minuscules).


VALUE
Valeur du paramètre.

DISPLAY_VALUE

Valeur du paramètre dans un format d’affichage plus convivial (par exemple 256M au lieu de
264241156).

ISDEFAULT

TRUE si le paramètre est égal à sa valeur par défaut, FALSE


sinon. ISSES_MODIFIABLE
TRUE si le paramètre est modifiable au niveau de la session, FALSE
sinon. ISSYS_MODIFIABLE
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.

ISMODIFIED

Indique si le paramètre a été modifié depuis le démarrage de l’instance. MODIFIED si modifié


au niveau de la session courante, SYSTEM_MOD si modifié au niveau du système, FALSE si
non modifié.

ISDEPRECATED

TRUE si le paramètre est déprécié (risque de disparaître dans une prochaine version), FALSE
sinon.

UPDATE_COMMENT

Commentaire associé à la modification la plus récente (option COMMENT de l’ordre SQL


ALTER SYSTEM).

Principales colonnes de la vue V$SPPARAMETER :

Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon Page4


Classe ASUR INPTIC 2020
Support de Cours ORACLE 11g : présenté par M. MOMBO Levy G.

NAME

Nom du paramètre (en minuscules).


VALUE
Valeur du paramètre.

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).

Notez que la vue V$SPARAMETER donne la valeur du paramètre dans le fichier de


paramètres serveur ; la valeur actuelle peut être différente si le paramètre a été modifié pour
l’instance courante uniquement (SCOPE=MEMORY).
Exemple : comparaison entre V$PARAMETER et
V$SPPARAMETER SQL> SELECT
2 p.name,
3 p.display_value actuel,
4 sp.display_value spfile
5 FROM
6 v$parameter p,
7 v$spparameter sp
8 WHERE
9 p.name = sp.name
10 AND p.name = ’processes’
11 /
NAME ACTUEL SPFILE
-------------------- -------------------- ---------------
processes 100 200

Dans SQL*Plus, les commandes SHOW PARAMETERS [chaîne] et SHOW


SPPARAMETERS [chaîne] affichent la valeur des paramètres respectivement dans la session
courante et dans le fichier de paramètres serveur. Par défaut, ces commandes affichent la
valeur de tous les paramètres. Si une chaîne est spécifiée lors de l’appel, ces commandes
affichent la valeur de tous les paramètres dont le nom contient cette chaîne.

Exemple

SQL> SHOW PARAMETERS memory

Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon Page5


Classe ASUR INPTIC 2020
Support de Cours ORACLE 11g : présenté par M. MOMBO Levy G.

NAME TYPE VALUE


-------------------------------- ----------- ------------
hi_shared_memory_address integer 0
memory_max_target big integer 500M
memory_target big integer 400M
shared_memory_address integer 0
3. Exporter un fichier de paramètres serveur

Un fichier de paramètres serveur peut être réexporté au format texte par l’ordre SQL CREATE
PFILE.

Syntaxe

CREATE PFILE [ = ’nom_pfile’ ] FROM SPFILE [ = ’nom_spfile’ ];

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 :

SQL> CREATE PFILE = ’d:\app\oracle\admin\ASURINPTIC\pfile\init.ora’


2 FROM
SPFILE;
Fichier créé.

Contenu du fichier (extrait)

*. 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.

Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon Page6


Classe ASUR INPTIC 2020
Support de Cours ORACLE 11g : présenté par M. MOMBO Levy G.

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

CREATE PFILE [ = ’nom_pfile’ ] FROM


MEMORY; CREATE SPFILE [ = ’nom_spfile’ ]
FROM MEMORY;

Les principes de fonctionnement sont les mêmes que pour les autres variantes de syntaxe
de ces deux ordres SQL.

4. Utiliser le Database Control

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.

Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon Page7


Classe ASUR INPTIC 2020
Support de Cours ORACLE 11g : présenté par M. MOMBO Levy G.

Par défaut, les modifications affectent uniquement l’instance en cours (SCOPE=MEMORY).


Pour affecter l’instance en cours et le fichier de paramètres serveur (SCOPE=BOTH), cochez
la case Appliquer au fichier SPFILE les modifications dans le mode des instances en cours
d’exécution avant de cliquer sur le bouton Appliquer. Seuls les paramètres dynamiques sont
modifiables.

Sur l’onglet Fichier SPFILE, vous pouvez consulter et modifier la valeur des paramètres dans
le fichier de paramètres serveur :

Par défaut, les modifications affectent uniquement le fichier de paramètres serveur


(SCOPE=SPFILE). Pour affecter l’instance en cours et le fichier de paramètres serveur
(SCOPE=BOTH), cochez la case Appliquer les modifications en mode SPFILE aux instances
en cours d’exécution avant de cliquer sur le bouton Appliquer. Si vous cochez cette case et
que vous modifiez un paramètre statistique, le Database Control vous proposera de
redémarrer (seul moyen pour appliquer la modification à "l’instance en cours").

Le bouton Réinitialiser permet de supprimer le paramètre sélectionné du fichier de paramètres


serveur (ALTER SYSTEM RESET).

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 :

Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon Page8


Classe ASUR INPTIC 2020
Support de Cours ORACLE 11g : présenté par M. MOMBO Levy G.

 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).

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.

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).

2. Informations sur 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.

SQL> SELECT name,value,display_value FROM v$parameter


2 WHERE name IN (’sga_target’,’sga_max_size’,
3 ’memory_target’,’memory_max_target’);
NAME VALUE DISPLAY_VALUE
-------------------- -------------------- ----------------
sga_max_size 524288000 500M
sga_target 0 0
memory_target 419430400 400M
memory_max_target 524288000 500M

SQL> SELECT name,value FROM v$sga


2 UNION ALL
3 SELECT ’*** TOTAL ***’,SUM(value) FROM
v$sga; NAME VALUE
-------------------- ----------
Fixed Size 2145984
Variable Size 356516160
Database Buffers 159383552

Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon Page9


Classe ASUR INPTIC 2020
Support de Cours ORACLE 11g : présenté par M. MOMBO Levy G.

Redo Buffers 3891200


*** TOTAL *** 521936896

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.

SQL> SELECT name,ROUND(bytes/(1024*1024),1) size_mb,resizeable


2 FROM v$sgainfo;
NAME SIZE_MB RES
-------------------------------- ---------- ---
Fixed SGA Size 2 No
Redo Buffers 3.7 No
Buffer Cache Size 152 Yes
Shared Pool Size 72 Yes
Large Pool Size 4 Yes
Java Pool Size 4 Yes
Streams Pool Size 0 Yes
Shared IO Pool Size 0 Yes
Granule Size 4 No
Maximum SGA Size 497.8 No
Startup overhead in Shared Pool 44
No Free SGA Memory Available 260

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.

La même information est disponible dans la vue V$SGA_DYNAMIC_FREE_MEMORY qui


donne la quantité de mémoire SGA disponible pour une opération de redimensionnement
dynamique (seule et unique colonne CURRENT_SIZE).

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.

Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon P a g e 10


Classe ASUR INPTIC 2020
Support de Cours ORACLE 11g : présenté par M. MOMBO Levy G.

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).

En complément, vous pouvez interroger la vue V$MEMORY_RESIZE_OPS pour avoir


l’historique des 800 dernières opérations de redimensionnement de la mémoire et
V$MEMORY_ CURRENT_RESIZE_OPS pour avoir des informations sur un éventuel
redimensionnement en cours.

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.

Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon P a g e 11


Classe ASUR INPTIC 2020
Support de Cours ORACLE 11g : présenté par M. MOMBO Levy G.

3. Modifier la mémoire dynamiquement

a. Avec la gestion automatique de la mémoire partagée

Lorsque la gestion automatique de la mémoire partagée est activée (paramètre


SGA_TARGET différent de zéro), la taille de la SGA peut être modifiée dynamiquement en
modifiant la valeur du paramètre SGA_TARGET.

La valeur de ce paramètre peut être augmentée jusqu’à la valeur du paramètre


SGA_MAX_SIZE. Elle peut être diminuée jusqu’à une valeur minimale déterminée par Oracle
en tenant de différents éléments, dont la taille que vous avez éventuellement affectée aux
composantes non prises en charge par la gestion automatique (paramètres
DB_nK_CACHE_SIZE par exemple) mais aussi de la taille minimale que vous avez pu définir
pour les composantes gérées automatiquement.

Lorsque le paramètre SGA_TARGET est modifié, seules les composantes gérées


automatiquement sont modifiées, et la répartition entre les différentes composantes est
automatiquement déterminée par Oracle ; les composantes gérées manuellement restent
inchangées. En cas de diminution, Oracle ne descendra pas en dessous de la valeur minimale
que vous avez pu définir pour une ou plusieurs composantes.

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).

Le comportement est le suivant :

 Si vous diminuez la valeur d’un paramètre géré manuellement, vous augmentez


implicitement la quantité de mémoire disponible pour la gestion automatique ; la
mémoire supplémentaire va être automatiquement réattribuée aux paramètres gérés
automatiquement (Oracle décide de la répartition).
 Si vous augmentez la valeur d’un paramètre géré manuellement, vous diminuez
implicitement la quantité de mémoire disponible pour la gestion automatique ;
cette quantité de mémoire va être automatiquement enlevée aux paramètres gérés
automatiquement (Oracle décide de la répartition).
 Si vous diminuez la valeur d’un paramètre géré automatiquement, vous ne diminuez
en fait que la valeur minimale de ce paramètre, mais pas sa valeur actuelle. En cas de
besoin, Oracle pourra diminuer la valeur actuelle du paramètre pour attribuer de la
mémoire à une autre structure. Si vous mettez la valeur à 0, vous n’imposez plus de
minimum.
 Si vous augmentez la valeur d’un paramètre géré automatiquement, vous augmentez
la valeur minimale de ce paramètre, mais pas sa valeur actuelle si, celle-ci est
actuellement supérieure au nouveau minimum. Par contre, si le nouveau minimum est
supérieur à la valeur actuelle, la valeur est immédiatement augmentée, et Oracle
diminue en contrepartie les autres paramètres automatiques (Oracle décide de la
répartition).

Exemple :

SQL> -- contenu du script memoire.sql


SQL> HOST more memoire.sql
COL component FOR A30

Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon P a g e 12


Classe ASUR INPTIC 2020
Support de Cours ORACLE 11g : présenté par M. MOMBO Levy G.

SELECT component, current_size/1024/1024


current_size,
user_specified_size/1024/1024 user_specified_size
FROM v$memory_dynamic_components
WHERE current_size 0
UNION ALL
SELECT ’*** LIBRE SGA ***’,current_size/1024/1024,null
FROM v$sga_dynamic_free_memory
/
SQL> -- situation de départ
SQL> SELECT name,display_value FROM v$parameter
2 WHERE name IN (’sga_target’,’sga_max_size’);
NAME DISPLAY_VALUE
--------------------- -----------------
sga_max_size 300M
sga_target 252M
SQL> @memoire
COMPONENT CURRENT_SIZE USER_SPECIFIED_SIZE
------------------------------ ------------ -------------------
shared pool 72 0
large pool 4 0
java pool 4 0
SGA Target 252 252
DEFAULT buffer cache 164 0
PGA Target 64 64
*** LIBRE SGA *** 48

SQL> -- augmentation de SGA_TARGET à 300M


SQL> ALTER SYSTEM SET SGA_TARGET =
300M;
Système modifié.
SQL> @memoire
COMPONENT CURRENT_SIZE USER_SPECIFIED_SIZE
------------------------------ ------------ -------------------
shared pool 72 0
large pool 4 0
java pool 4 0
SGA Target 300 300
DEFAULT buffer cache 212 0
PGA Target 64 64
*** LIBRE SGA *** 0

SQL> -- affectation d’une valeur à DB_16K_CACHE_SIZE


SQL> -- et d’un minimum à SHARED_POOL_SIZE
SQL> ALTER SYSTEM SET
2 DB_16K_CACHE_SIZE = 32M
3 SHARED_POOL_SIZE = 96M
; Système modifié.
SQL> @memoire
COMPONENT CURRENT_SIZE USER_SPECIFIED_SIZE
------------------------------ ------------ -------------------
shared pool 96 0

Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon P a g e 13


Classe ASUR INPTIC 2020
Support de Cours ORACLE 11g : présenté par M. MOMBO Levy G.

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

SQL> -- diminution de SGA_TARGET


SQL> ALTER SYSTEM SET SGA_TARGET = 168M;
Système modifié.
SQL> @memoire
COMPONENT CURRENT_SIZE USER_SPECIFIED_SIZE
------------------------------ ------------ -------------------
shared pool 96 96
large pool 4 0
java pool 4 0
SGA Target 168 168
DEFAULT buffer cache 24 0
DEFAULT 16K buffer cache 32 32
PGA Target 64 64
*** LIBRE SGA *** 132

Sur cet exemple, nous voyons les choses suivantes :

 Lors de l’augmentation de SGA_TARGET à 300 Mo, la totalité de la mémoire


supplémentaire est allouée au Buffer Cache, et il n’y a plus de mémoire libre pour la
SGA.
 Lors de l’affectation d’une valeur au paramètre DB_16K_CACHE_SIZE (géré
manuellement) et d’une valeur à SHARED_POOL_SIZE (minimum puisque le
paramètre est automatique), un cache pour les blocs de 16 Ko est alloué à la valeur
demandée et la Shared Pool est augmentée, car la valeur actuelle était inférieure au
nouveau minimum. Le Buffer Cache est diminué en conséquence (plus de mémoire
libre pour la SGA).
 Lors de la diminution de SGA_TARGET à 168 Mo, le Buffer Cache est diminué. Les
autres paramètres ne peuvent pas être diminués : DB_16K_CACHE_SIZE est géré
manuellement et les autres sont à leur valeur minimale.

b. Avec la gestion automatique de la mémoire

Lorsque la gestion automatique de la mémoire est activée (paramètre MEMORY_TARGET),


la taille de la mémoire allouée à l’instance (SGA et PGA) peut être modifiée dynamiquement
en modifiant la valeur du paramètre MEMORY_TARGET.

La valeur de ce paramètre peut être augmentée jusqu’à la valeur du paramètre MEMORY_


MAX_TARGET. Il peut être diminué jusqu’à une valeur minimale déterminée par Oracle en
tenant compte de différents éléments (comme pour la gestion automatique de la mémoire
partagée).

Lorsque le paramètre MEMORY_TARGET est modifié, Oracle détermine une nouvelle


répartition de la mémoire entre la PGA (PGA_AGGREGATE_TARGET) et la SGA

Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon P a g e 14


Classe ASUR INPTIC 2020
Support de Cours ORACLE 11g : présenté par M. MOMBO Levy G.

(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.

Du point de vue de la SGA, la gestion automatique de la mémoire n’est qu’une extension de


la gestion automatique de la mémoire partagée. Toutes les règles exposées précédemment
sur la modification des paramètres gérés manuellement et des paramètres gérés
automatiquement demeurent valable (voir le titre précédent).

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.

Le comportement est le suivant :

 Si vous augmentez la valeur de SGA_TARGET ou PGA_AGGREGATE_TARGET,


vous augmentez la valeur minimale de ces paramètres, mais pas leur valeur actuelle
si, celle-ci est actuellement supérieure au nouveau minimum. Par contre, si le nouveau
minimum est supérieur à la valeur actuelle, la valeur est immédiatement augmentée, et
Oracle diminue en contrepartie les autres paramètres automatiques (Oracle décide de
la répartition).
 Si vous diminuez la valeur de SGA_TARGET ou PGA_AGGREGATE_TARGET, vous
ne diminuez en fait que la valeur minimale de ces paramètres, mais pas leur valeur
actuelle. En cas de besoin, Oracle pourra diminuer la valeur actuelle du paramètre pour
attribuer de la mémoire à une autre structure. Si vous mettez la valeur à 0, vous
n’imposez plus de minimum.

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> -- contenu du script memoire.sql


SQL> HOST more memoire.sql
COL component FOR A30
SELECT component,
current_size/1024/1024 current_size,
user_specified_size/1024/1024 user_specified_size
FROM v$memory_dynamic_components
WHERE current_size 0
UNION ALL
SELECT ’*** LIBRE SGA ***’,current_size/1024/1024,null
FROM v$sga_dynamic_free_memory
/
SQL> -- situation de départ
SQL> SELECT name,display_value FROM v$parameter
2 WHERE name IN (’memory_target’,’memory_max_target’); NAME
DISPLAY_VALUE
--------------------- -----------------
memory_target 400M
memory_max_target 500M

Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon P a g e 15


Classe ASUR INPTIC 2020
Support de Cours ORACLE 11g : présenté par M. MOMBO Levy G.

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

SQL> -- augmentation de MEMORY_TARGET à 500M


SQL> ALTER SYSTEM SET MEMORY_TARGET =
500M;
Système modifié.
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 260 0
*** LIBRE SGA *** 260
SQL> -- affectation d’une valeur à DB_16K_CACHE_SIZE
SQL> ALTER SYSTEM SET DB_16K_CACHE_SIZE = 32M;
Système modifié.
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 120 0
DEFAULT 16K buffer cache 32 32
PGA Target 260 0
*** LIBRE SGA *** 260

SQL> -- affectation d’une valeur à SGA_TARGET


SQL> ALTER SYSTEM SET SGA_TARGET =
300M;
Système modifié.
SQL> @memoire
COMPONENT CURRENT_SIZE USER_SPECIFIED_SIZE
------------------------------ ------------ -------------------
shared pool 72 0
large pool 4 0
java pool 4 0
SGA Target 300 300
DEFAULT buffer cache 180 0
DEFAULT 16K buffer cache 32 32
PGA Target 200 0

Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon P a g e 16


Classe ASUR INPTIC 2020
Support de Cours ORACLE 11g : présenté par M. MOMBO Levy G.

*** LIBRE SGA *** 200

SQL> -- diminution de MEMORY_TARGET


SQL> ALTER SYSTEM SET MEMORY_TARGET = 352M;
Système modifié.
SQL> @memoire
COMPONENT CURRENT_SIZE USER_SPECIFIED_SIZE
------------------------------ ------------ -------------------
shared pool 72 0
large pool 4 0
java pool 4 0
SGA Target 300 300
DEFAULT buffer cache 180 0
DEFAULT 16K buffer 32 32
cache PGA Target 52 0
*** LIBRE SGA *** 200

Sur cet exemple, nous voyons les choses suivantes :

 Lors de l’augmentation de MEMORY_TARGET à 500 Mo, la totalité de la mémoire


supplémentaire est allouée à la PGA.
 Lors de l’affectation d’une valeur au paramètre DB_16K_CACHE_SIZE (géré
manuellement), un cache pour les blocs de 16 Ko est alloué à la valeur demandée et
le Buffer Cache est diminué en conséquence (comme pour la gestion automatique de
la mémoire partagée).
 Lors de l’affectation d’une valeur (minimum) à SGA_TARGET, la SGA est augmentée
immédiatement car la valeur actuelle était inférieure au nouveau minimum ; la quantité
de mémoire supplémentaire est intégralement allouée au Buffer Cache.
 Lors de la diminution de MEMORY_TARGET à 352 Mo, la PGA est diminuée. La SGA
ne peut pas être diminuée car elle est à la valeur minimale imposée par SGA_TARGET.

c. Sans la gestion automatique

Si vous n’utilisez pas la gestion automatique de la mémoire ni la gestion automatique de la


mémoire partagée, les modifications apportées aux paramètres sont immédiatement prises
en compte, toujours dans la limite de SGA_MAX_SIZE et MEMORY_MAX_TARGET (s’il est
défini).

d. Conclusion et conseil

Oracle recommande d’utiliser la gestion automatique de la mémoire qui simplifie beaucoup le


travail de l’administrateur : il suffit juste de définir le paramètre MEMORY_TARGET (et
éventuellement le paramètre MEMORY_MAX_TARGET).

Si vous utilisez la gestion automatique de la mémoire, ou simplement de la mémoire partagée,


il faut, par contre, éviter d’imposer trop de contraintes à Oracle en donnant des valeurs
minimums aux paramètres gérés automatiquement.

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

Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon P a g e 17


Classe ASUR INPTIC 2020
Support de Cours ORACLE 11g : présenté par M. MOMBO Levy G.

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.

4. Utiliser le Database Control

a. Accès à la page de gestion de la mémoire

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.

Le contenu de la page dépend du mode de gestion de la 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

Lorsque la gestion automatique de la mémoire est activée, le Database Control montre


l’historique de la répartition de la mémoire entre la SGA et la PGA.

Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon P a g e 18


Classe ASUR INPTIC 2020
Support de Cours ORACLE 11g : présenté par M. MOMBO Levy G.

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.

Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon P a g e 19


Classe ASUR INPTIC 2020 Support de Cours ORACLE 11g : présenté par M. MOMBO Levy G.

c. Avec la gestion automatique de la mémoire partagée

Lorsque la gestion automatique de la mémoire partagée est activée, le Database Control


permet de régler séparément la taille de la SGA et la taille de la PGA.

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).

Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon P a g e 20


Classe ASUR INPTIC 2020 Support de Cours ORACLE 11g : présenté par M. MOMBO Levy G.

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 :

d. Sans la gestion automatique

Lorsque la gestion automatique de la mémoire partagée est désactivée, l’onglet SGA se


présente ainsi :

Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon P a g e 21


Classe ASUR INPTIC 2020 Support de Cours ORACLE 11g : présenté par M. MOMBO Levy G.

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.

Institut National de la Poste des Technologies de l’Information et de la Communication -Gabon P a g e 22