Vous êtes sur la page 1sur 26

Oracle Database 10g : Administration Workshop I 13-2

Etablir une connexion


Une fois la résolution de nom Oracle Net terminée, une demande de connexion est transmise de
l'utilisateur ou de l'application du niveau intermédiaire (middle tier), appelé(e) processus
utilisateur par la suite, au processus d'écoute (listener) Oracle Net. Le processus d'écoute reçoit
un paquet CONNECT et détermine si ce paquet CONNECT demande un nom de service Oracle
Net valide.
Si le nom du service n'est pas demandé (comme dans le cas d'une demande TNSPING), le
processus d'écoute accuse réception de la demande de connexion et ne fait rien de plus. Si
un nom de service non valide est demandé, le processus d'écoute transmet un code d'erreur au
pprocessus utilisateur.

Oracle Database 10g : Administration Workshop I 13-3


Processus serveur dédié
Si le paquet CONNECT demande un nom de service valide, le processus d'écoute crée un
nouveau processus afin de traiter la connexion. Ce nouveau processus est appelé "processus
serveur", ou parfois "processus shadow". Une fois le processus créé, le processus d'écoute s'y
connecte et lui transmet des informations d'initialisation, notamment l'adresse du processus
d'écoute. A ce stade, le processus d'écoute ne gère plus la connexion et tout le travail est envoyé
au processus serveur.
Le processus serveur renvoie à présent un paquet RESEND au processus utilisateur.

Oracle Database 10g : Administration Workshop I 13-4


Sessions utilisateur
Une fois que la session a reçu le paquet RESEND, elle retransmet le paquet CONNECT. Le
processus serveur vérifie les informations d'identification et de connexion de l'utilisateur
( é é l
(généralement un mot de
d passe)) ; sii elles
ll sont valides,
lid une sessioni utilisateur
ili est créée.
éé
Processus serveur dédié : la session étant établie, le processus serveur joue à présent le rôle
d'agent de l'utilisateur sur le serveur. Le processus serveur est responsable des opérations
suivantes :
• Analyse (parse) et exécution des instructions SQL exécutées par l'intermédiaire
de l'application.
• Examen du cache de tampons (buffer cache) de la base de données à la recherche de
blocs de données requis pour exécuter les instructions SQL.
• Lecture des blocs de données nécessaires à partir des fichiers de données sur disque dans
la partie cache de tampons de la base de données de la mémoire SGA, si les blocs ne
sont pas déjà présents dans la mémoire SGA.
• Gestion de toutes les activités de tri. Une partie du processus serveur, appelée mémoire
PGA (Program Global Area), contient une zone de mémoire appelée zone de tri et
utilisée pour gérer les opérations de tri.
• Renvoi des résultats au processus utilisateur de sorte que l'application puisse traiter
les informations.

Oracle Database 10g : Administration Workshop I 13-5


Sessions utilisateur (suite)
Les processus serveur réservent également de la mémoire pour les opérations spécialisées,
telles que les jointures bitmap et les jointures de hachage. La quantité de mémoire
consommée par le processus serveur dédié dépend de la valeur de plusieurs paramètres
d'initialisation. Elle peut être contrôlée automatiquement via les paramètres
PGA_AGGREGATE_TARGET et WORKAREA_SIZE_POLICY, ou réglée si nécessaire
pour une utilisation avancée.

Oracle Database 10g : Administration Workshop I 13-6


Sessions utilisateur : serveur dédié
Avec les processus serveur dédiés, il existe un rapport un à un entre les processus serveur et les
processus utilisateur. Chaque processus serveur consomme des ressources système, notamment
des cycles CPU et de la mémoire.
Dans un système très sollicité, les ressources mémoire et CPU consommées par les processus
serveur dédiés peuvent être prohibitives et affecter de manière négative l'évolutivité du
système. Si les demandes de ressources de l'architecture de serveur dédié ont un impact négatif
sur le système, deux possibilités s'offrent à vous :
• Augmenter les ressources système en ajoutant de la capacité mémoire et CPU
• Utiliser l'architecture Oracle Shared Server

Oracle Database 10g : Administration Workshop I 13-7


Sessions utilisateur : serveur partagé
Chaque service qui participe à l'architecture de serveur partagé comporte au moins un processus
répartiteur (et généralement plusieurs). Lorsqu'une demande de connexion arrive, le processus
d'é t ne crée
d'écoute é pas de
d processus serveur dédié.
dédié En
E revanche,h il gère
è une liste
li t de
d répartiteurs
é tit
disponibles pour chaque nom de service, ainsi que la charge de connexion (nombre de
connexions simultanées) pour chaque répartiteur.
Les demandes de connexion sont acheminées vers le répartiteur le moins chargé qui gère un
nom de service donné. Les utilisateurs restent connectés au même répartiteur pour la durée
d'une session.
Contrairement aux processus serveur dédiés, un même répartiteur peut gérer des centaines de
sessions
i utilisateur.
tili t
Les répartiteurs ne traitent pas à proprement parler le travail des demandes utilisateur. Ils
transmettent les demandes utilisateur à une file d'attente commune située dans la partie zone de
mémoire partagée de la mémoire SGA.
Les processus serveur partagés prennent en charge la majeure partie du travail des processus
serveur dédiés, en extrayant les demandes de la file d'attente et en les traitant en totalité.
Etant donné que les demandes d'une même session utilisateur peuvent être traitées par plusieurs
processus serveur partagés,
é lal plupart
l des
d structures mémoire
é i généralement
é é l stockées
ké dans
d la
l
mémoire PGA doivent résider dans un emplacement de mémoire partagée. Dans une
architecture Oracle Shared Server, la plupart de ces zones de mémoire sont stockées dans la
partie LARGE POOL de la mémoire SGA.

Oracle Database 10g : Administration Workshop I 13-8


Traiter une demande
Lorsqu'un utilisateur qui se connecte via l'architecture Oracle Shared Server envoie une
demande à la base de données :
1. Le processus utilisateur transmet la demande à son répartiteur.
2. Le répartiteur place la demande dans la file d'attente commune des demandes dans la
mémoire SGA.
3. Le prochain serveur partagé disponible extrait la demande de la file d'attente et la traite.
4. Le serveur partagé place la réponse dans la file d'attente des réponses du répartiteur
appelant. Chaque répartiteur dispose de sa propre file d'attente des réponses.
5. Le répartiteur extrait la réponse de sa file d'attente des réponses.
6. Le répartiteur renvoie la réponse à l'utilisateur.
Une fois l'appel de l'utilisateur terminé, le processus serveur partagé est libéré et devient
disponible pour le traitement d'un autre appel utilisateur dans la file d'attente des demandes.
File d'attente des demandes
• Une même file d'attente des demandes est partagée par tous les répartiteurs.
• Les serveurs partagés surveillent la file d'attente afin de détecter les nouvelles demandes.
• Les demandes sont traitées sur la base dd'unun algorithme FIFO (First In In, First Out - premier
entré, premier sorti). Il n'y a pas de paramètre de priorité.

Oracle Database 10g : Administration Workshop I 13-9


La mémoire SGA et la mémoire PGA
Le contenu de la mémoire SGA (System Global Area) et de la mémoire PGA (Program Global
Area) diffère selon que des serveurs dédiés ou des serveurs partagés sont utilisés.
• Les formes textuelles et analysées de toutes les instructions SQL sont stockées dans la
mémoire SGA.
• L'état du curseur contient les valeurs en mémoire lors de l'exécution de l'instruction SQL,
par exemple les lignes extraites.
• Les données des sessions utilisateur incluent des informations relatives à la sécurité et à
l'utilisation des ressources.
• L'espace de pile contient les variables locales du processus.
Remarque technique
La modification de la mémoire SGA et de la mémoire PGA est transparente pour l'utilisateur ;
cependant, en cas de prise en charge de nombreux utilisateurs, vous devez augmenter la valeur
du paramètre LARGE_POOL_SIZE. Chaque processus serveur partagé doit accéder aux
espaces de données de toutes les sessions, de sorte que chaque serveur puisse traiter les
demandes de n'importe quelle session. De l'espace est alloué dans la mémoire SGA pour
ll'espace
espace de données de chaque session.
session Vous pouvez limiter la quantité dd'espace
espace pouvant être
allouée par une session en définissant la limite de ressource PRIVATE_SGA dans la région
Database Services de la page General du profil de l'utilisateur.

Oracle Database 10g : Administration Workshop I 13-10


Configurer Oracle Shared Server
Pour configurer Oracle Shared Server, vous devez modifier les paramètres d'initialisation de
l'instance. La plupart des paramètres facultatifs présentent des valeurs par défaut appropriées.
Sur de nombreux systèmes, seul le paramètre DISPATCHERS doit être configuré.
Selon les options sélectionnées lors de la création de la base de données, le paramètre
DISPATCHERS peut déjà être configuré pour démarrer un répartiteur afin de traiter les
demandes de la base de données XML. Le paramètre DISPATCHERS accepte plusieurs jeux de
valeurs au format suivant :
‘<parameters for first set>’,’<parameters for second set>’

Oracle Database 10g : Administration Workshop I 13-11


DISPATCHERS
Le paramètre DISPATCHERS active différents attributs pour chaque répartiteur.
Oracle Database 10g pprend en charge
g une syntaxe
y nom-valeur ((semblable à celle utilisée par
p les
services Oracle Net) afin de permettre la spécification d'attributs existants et supplémentaires
de façon indépendante de la position et sans distinction majuscules/minuscules.
Par exemple : DISPATCHERS = ‘(PROTOCOL=TCP)(DISPATCHERS=3)’

Type de paramètre Chaîne (à indiquer entre guillemets)

Classe de paramètre Dynamique

Valeur par défaut NULL (aucun répartiteur n'est démarré)

Bien que le nombre de connexions pouvant être gérées par un répartiteur varie fortement en
fonction du type de charge globale, il est généralement raisonnable d'utiliser un répartiteur pour
cinquante
q connexions de base de données simultanées utilisant l'architecture de serveur partagé.
p g

Oracle Database 10g : Administration Workshop I 13-12


DISPATCHERS (suite)
Le seul attribut obligatoire pour les répartiteurs est PROTCOL. Tous les autres attributs sont
facultatifs. Quelques-uns des arguments possibles pour le paramètre DISPATCHERS sont
décrits ci-dessous. Notez qque les arguments
g utilisent une abréviation à trois lettres à la pplace du
nom complet de l'argument.
Attribut Description

PROTOCOL Indique le protocole réseau pour lequel le répartiteur génère


(PRO ou PROT) un point de fin d'écoute (généralement TCP).

DISPATCHERS Nombre initial de répartiteurs à démarrer (1 par défaut).


défaut)
(DIS ou DISP)

SERVICE Nom du serveur Oracle Net que le répartiteur enregistre


(SER ou SERV) auprès du processus d'écoute. S'il n'est pas indiqué, le
répartiteur enregistre les valeurs dans SERVICE_NAMES.

LISTENER Indique un nom d'alias


d alias pour les processus dd'écoute
écoute auprès
(LIS ou LIST) desquels le processus PMON enregistre les informations
relatives au répartiteur. Utilisez pour l'alias un nom qui est
résolu via une méthode de résolution de nom.
L'attribut doit uniquement être indiqué si le processus d'écoute
est un processus d'écoute local qui utilise un port autre que
celui par défaut (1521) et s'il n'est pas indiqué avec le
paramètre
èt LOCAL_LISTENER,
OC S ou sii le
l processus d'écoute
d'é t
réside sur un autre noeud.
SESSIONS Nombre maximal de sessions réseau pour chaque répartiteur.
(SES ou SESS) La valeur par défaut est propre au système d'exploitation. La
plupart des systèmes d'exploitation présentent une valeur par
défaut de 16 K.
CONNECTIONS Indique le nombre maximal de connexions réseau à autoriser
(CON ou CONN) pour chaque répartiteur. La valeur par défaut est propre au
système d'exploitation. Par exemple, 1024 est la valeur par
défaut pour Sun Solaris et Windows.
Remarque : Il existe de nombreux autres attributs possibles pour le paramètre DISPATCHERS.
Vous trouverez davantage d'informations sur le paramètre DISPATCHERS dans la section
"Initialization Parameters" du manuel Oracle Database Reference Manual.
Initialization Parameters

Oracle Database 10g : Administration Workshop I 13-13


SHARED_SERVERS
SHARED_SERVERS indique le nombre minimum de processus serveur qui seront conservés.
La configuration de ce paramètre n'est généralement pas critique, car l'instance surveille la file
d'attente commune des demandes et démarre les serveurs partagés supplémentaires requis pour
la file d'attente, puis les supprime lorsqu'ils ne sont plus nécessaires.
Type de paramètre Entier

Classe de paramètre Dynamique

Valeur par défaut 0 si le paramètre DISPATCHERS a la valeur NULL


NULL, 1 ss'il
il
est défini
Plage de valeurs Propre au système d'exploitation

Il est judicieux de conserver un serveur partagé pour vingt-cinq connexions de base de données
simultanées avec l'architecture de serveur partagé.

Oracle Database 10g : Administration Workshop I 13-14


MAX_SHARED_SERVERS
MAX_SHARED_SERVERS indique le nombre maximum de processus serveur partagés qui
seront autorisés à s'exécuter simultanément. Cette valeur est importante, car l'instance crée
automatiquement les processus serveur partagés supplémentaires requis pour traiter la file
d'attente commune des demandes.

Type de paramètre Entier


Classe de paramètre Dynamique

Vl
Valeur par défaut
déf t A
Aucune (illi
(illimité)
ité)

Plage de valeurs Propre au système d'exploitation

Evaluer le nombre maximum de serveurs partagés


En général, affectez à ce paramètre un nombre approprié de processus serveur partagés pour les
périodes
é i d ded forte
f t activité.
ti ité Faites
F it un test
t t avec cette
tt limite
li it ett surveillez
ill les
l serveurs partagés
t é afin
fi
de déterminer la valeur idéale de ce paramètre. Pour déterminer le nombre maximum de
serveurs démarrés (repère high-water mark), interrogez la vue V$SHARED_SERVER
_MONITOR du dictionnaire de données.

Oracle Database 10g : Administration Workshop I 13-15


CIRCUITS
Les circuits virtuels sont des connexions utilisateur à la base de données via des répartiteurs et
des serveurs. Le paramètre CIRCUITS indique le nombre total de circuits virtuels disponibles
pour les sessions réseau entrantes et sortantes.

Type de paramètre Entier

Classe de paramètre Dynamique

Valeur par défaut Si Oracle Shared Server est configuré, la valeur de


CIRCUITS correspond à celle de SESSIONS.
SESSIONS Dans le cas
contraire, la valeur est de 0.

Ne définissez ce paramètre que si vous souhaitez limiter le nombre total de connexions que les
utilisateurs peuvent établir via l'architecture de serveur partagé. Ce paramètre est intéressant,
car il s'agit de l'un des paramètres qui contribuent aux besoins d'une instance en termes de
mémoire SGA.

Oracle Database 10g : Administration Workshop I 13-16


SHARED_SERVER_SESSIONS
Ce paramètre contrôle le nombre total de sessions de serveur partagé ouvertes simultanément à
un instant donné. L'utilisation de ce paramètre permet la réservation de ressources pour des
sessions utilisateur dédiées.

Type de paramètre Entier

Classe de paramètre Dynamique

Valeur par défaut Aucune (illimité)

Oracle Database 10g : Administration Workshop I 13-17


Paramètres liés
Voici les autres paramètres d'initialisation affectés par Oracle Shared Server et pouvant
nécessiter un ajustement :
LARGE POOL SIZE indique
• _ LARGE_POOL_SIZE i di la
l taille
t ill dde lla zone dde mémoire
é i LARGE POOL
POOL, en
octets. Oracle Shared Server utilise la zone de mémoire LARGE POOL pour le stockage
des informations de session qui résident généralement dans la mémoire PGA, dans le cas
d'une session serveur dédiée.
• SESSIONS indique le nombre maximal de sessions pouvant être créées dans le système.
Cette valeur peut nécessiter un ajustement pour Oracle Shared Server, car le système peut
désormais traiter davantage de sessions.
• PROCESSES contrôle le nombre de pprocessus côté serveur.
• LOCAL LISTENER définit le port et le protocole utilisés par les processus d'écoute. Si le
processus d'écoute n'utilise pas le protocole TCP/IP sur le port 1521, ou si vous disposez
de plusieurs processus d'écoute, vous devez configurer LOCAL_LISTENER de sorte que
les répartiteurs puissent s'enregistrer auprès des processus d'écoute.
Si vous ne définissez pas de valeur pour LARGE_POOL_SIZE, Oracle utilise la zone de
mémoire partagée pour la mémoire de session utilisateur Oracle Shared Server. Il peut en
résulter un impact négatif sur les performances du code PL/SQL, des instructions SQL et des
autres services utilisant la zone de mémoire partagée.
Oracle alloue dans la zone de mémoire partagée une quantité fixe de mémoire (environ 10 ko)
par session configurée, même si vous avez configuré la zone de mémoire LARGE POOL.

Oracle Database 10g : Administration Workshop I 13-18


Vérifier la configuration du serveur partagé
Lors de l'utilisation d'Oracle Shared Server, commencez par démarrer le processus d'écoute,
puis la base de données, de sorte que les répartiteurs puissent immédiatement s'enregistrer
auprès du processus d'écoute. Si vous redémarrez le processus d'écoute par la suite, patientez
une minute pour le réenregistrement des services. Pour vérifier que l'enregistrement a eu lieu,
exécutez la commande suivante :
$ lsnrctl services
Service "TEST" has 1 instance(s).
Instance "TEST", status READY, has 3 handler(s) for this service.
Handler(s):
DISPATCHER established:1 refused:0 curr:0 max:1022 state:ready
"DISPATCHER"
D001 <machine: db.us.oracle.com, pid: 8705>
(ADDRESS=(PROTOCOL=tcp)(HOST=db.us.oracle.com)(PORT=35230))
"DISPATCHER" established:1 refused:0 curr:0 max:1022 state:ready
D000 <machine: db.us.oracle.com, pid: 8703>
(ADDRESS=(PROTOCOL=tcp)(HOST=db.us.oracle.com)(PORT=35229))
"DEDICATED" established:0 refused:0

Oracle Database 10g : Administration Workshop I 13-19


Vérifier la configuration du serveur partagé (suite)
Vérifiez que vos connexions utilisent des serveurs partagés en établissant des connexions, puis
en interrogeant la vue V$CIRCUIT afin d'afficher une entrée par connexion de serveur partagé.
Cela ppermet également
g de vérifier qque le pprocessus d'écoute effectue l'équilibrage
q g de la charge
g
pour les connexions entrantes.

SQL>select dispatcher, circuit, server, status from v$circuit;

DISPATCH CIRCUIT SERVER STATUS


-------- -------- -------- ----------------
82890064 8257BA64 8288F6A4 NORMAL
8288F9E4 8257BBB0 00 NORMAL
8288FD24 8257BCFC 00 NORMAL

Oracle Database 10g : Administration Workshop I 13-20


Vues du dictionnaire de données

V$CIRCUIT Cette vue contient des informations sur les circuits virtuels,
qui sont des connexions utilisateur à la base de données via
des répartiteurs et des serveurs. Toute connexion de serveur
partagé crée une entrée dans la vue V$CIRCUIT.
V$SHARED_SERVER Cette vue contient des informations sur les processus
serveur partagés.

V$DISPATCHER Cette vue fournit des informations sur les


processus répartiteur.

V$SHARED_SERVER_ Cette vue contient des informations pour le réglage des


MONITOR processus serveur partagés.
V$QUEUE Cette vue contient des informations sur les files d'attente de
demandes et de réponses.

V$SESSION Cette vue répertorie les informations relatives à chaque


session en cours.

Oracle Database 10g : Administration Workshop I 13-21


Choisir un type de connexion
Le type de connexion par défaut d'Oracle Net est la connexion de serveur partagé. Si l'instance
a été configurée pour un serveur partagé et qu'une demande de connexion ne sollicite pas
spécifiquement un serveur dédié, le type de connexion sera partagé.
Oracle Net Manager permet la spécification du type de connexion pour la résolution locale de
noms et la résolution de noms d'annuaire. Sélectionnez le type de connexion souhaité dans la
liste déroulante Connection Type.

Oracle Database 10g : Administration Workshop I 13-22


Dans quel cas ne pas utiliser de serveur partagé ?
L'architecture Oracle Shared Server est un modèle efficace d'utilisation des processus et de la
mémoire, mais il n'est pas adapté à toutes les connexions. En raison de la file d'attente
commune des demandes et du fait que de nombreux utilisateurs peuvent partager une file
d'attente de réponses de répartiteur, les serveurs partagés n'offrent pas de performances
satisfaisantes avec les opérations qui doivent traiter d'importants jeux de données, telles que les
interrogations de data warehouse ou le traitement batch.
Les sessions de sauvegarde et de récupération qui utilisent Oracle Recovery Manager (étudiées
dans des chapitres ultérieurs) traitent également des jeux de données très volumineux et doivent
utiliser des connexions dédiées.
De nombreuses tâches d'administration ne peuvent ou ne doivent pas être effectuées à l'aide de
connexions serveur partagées. Il s'agit notamment du démarrage et de l'arrêt de l'instance, de la
création de tablespaces ou de fichiers de données, de la maintenance des index et des tables, de
l'analyse de statistiques et de nombreuses autres tâches couramment effectuées par le DBA.
Toutes les sessions DBA doivent choisir des serveurs dédiés.

Oracle Database 10g : Administration Workshop I 13-23


Oracle Database 10g : Administration Workshop I 13-24
Oracle Database 10g : Administration Workshop I 13-25
Exercice 13 : Oracle Shared Server
Contexte : vous avez noté que pendant les périodes de forte activité, les performances du
système étaient médiocres. Après examen, vous découvrez que les sessions utilisateur
consomment tellement de mémoire qque le swapp système
y est excessif. Configurez
g le système
y
afin de réduire la quantité de mémoire consommée par les sessions utilisateur.
Tâches à accomplir :
• Déterminer l'impact des connexions de serveur dédié sur le système
• Configurer le système afin d'utiliser des serveurs partagés
• Déterminer l'impact des connexions de serveur partagé sur le système
1. Déterminez l'impact des connexions de serveur dédié sur le système.
a) Ouvrez quatre sessions de terminal sur le serveur.
serveur
b) Déterminez le nombre de processus Oracle en cours d'exécution.
c) Dans les trois autres sessions de terminal, démarrez des sessions SQL*Plus.
Vérifiez qu'aucune des trois sessions SQL*Plus n'utilise de serveurs partagés.
d) Le nom de service par défaut est configuré pour utiliser des processus serveur
dédiés. Notez qu'avec chaque session SQL*Plus démarrée, deux nouveaux
processus sont créés. Rappelez-vous que chaque session SQL*Plus démarre deux
processus consommateurs de ressources.
ressources LL'un
un est la session SQL*Plus
SQL Plus proprement
dite (qui consomme normalement des ressources sur le client ou le niveau
intermédiaire), l'autre est le processus serveur dédié (qui consomme des ressources
sur le serveur).
2. Configurez le système afin d'utiliser des serveurs partagés. Utilisez le protocole TCP et
le nom de service de votre système.
3. Déterminez l'impact des connexions de serveur partagé sur le système.
a) Quittez les trois sessions SQL*Plus
SQL Plus (maintenez les quatre sessions de terminal
ouvertes ; vous en aurez besoin ultérieurement).
b) Créez un nouvel alias de résolution locale de noms qui utilise la connexion de base
de données par défaut.
c) Ouvrez trois sessions SQL*Plus avec le nouveau nom de service.
d) Vérifiez que vous êtes connecté avec un serveur partagé (vous verrez
probablement une connexion supplémentaire dans la vue V$CIRCUIT, car le
processus de surveillance dd'Enterprise
Enterprise Manager se connecte généralement au
nouveau système de serveur partagé avant que vous ne puissiez en faire autant).
e) Déterminez à présent le nombre de processus Oracle en cours d'exécution. Notez
que les trois sessions SQL*Plus n'ont démarré que trois nouveaux processus (il
s'agit des trois processus SQL*Plus). Tous trois résident généralement sur
l'ordinateur client ou sur le serveur d'applications, ce qui signifie que ces trois
nouvelles sessions n'ont ajouté aucun nouveau processus sur le serveur.

Oracle Database 10g : Administration Workshop I 13-26

Vous aimerez peut-être aussi