Oracle OrgaBD
Oracle OrgaBD
Oracle OrgaBD
SOMMAIRE
ORGANISATION D’UNE BASE DE DONNEES
1. Architecture ........................................................................................................................ 2
1.1 Les structures mémoire .............................................................................................. 2
1.1.1. La Shared Pool ................................................................................................... 2 1. Architecture
1.1.2. Le Database Buffer Cache.................................................................................. 3
1.1.3. Le Redo Log Buffer ........................................................................................... 4 PMON SMON RECO Clients
1.2 Les Process ................................................................................................................. 4
1.2.1. Les process background ..................................................................................... 4 Serveur
1.2.2. Les process utilisateurs et serveurs .................................................................... 6 Mémoire Globale Multithread Dispatcher
1.3 Les fichiers de la base de données.............................................................................. 7
1.3.1. Les Fichiers Redo Log ....................................................................................... 7 Dispatcher Queue
1.3.2. Les Fichiers de contrôle ..................................................................................... 9
Shared Pool Serveur
2. La Base de Données Oracle.............................................................................................. 10
Dédié
2.1 Notions de Tablespace, Segment, Extent, Cluster et Bloc ....................................... 10
2.1.1. Tablespace ........................................................................................................ 10 DB Buffers
2.1.2. Segment ............................................................................................................ 11
2.1.3. Extent ............................................................................................................... 12 Redo Log Buffer
2.1.4. Cluster .............................................................................................................. 12
2.1.5. Bloc .................................................................................................................. 12 ARCH DBWR
2.2 Gestion de l’espace de stockage............................................................................... 13 LGRW
2.2.1. Paramètres de stockage et de gestion de l’espace ............................................ 13
2.2.2. Gestion des tablespaces, segment rollback et des tables .................................. 15
2.3 Dictionnaire de données ........................................................................................... 17
3. EXERCICE ...................................................................................................................... 18 Archives Journaux Bases
Serveur
Chaque fois que le serveur Oracle est démarré, la System Global Area (SGA) est
allouée en mémoire. C’est un groupe de mémoire partagée qui contient des
données et informations de contrôle pour un système de base de données Oracle.
La SGA est également appelée Shared Global Area.
Professeur : ASSALE Adjé Louis 1/19 INP-HB Professeur : ASSALE Adjé Louis 2/19 INP-HB
Oracle Organisation d’une base de données Oracle Organisation d’une base de données
La Shared Pool est une zone de la SGA qui contient des instructions telles que • Le cache miss
les zones des requêtes SQL partagées et le cache mémoire du dictionnaire des La première fois qu’un process utilisateur Oracle accède à une
données. donnée, le process doit copier cette donnée à partir du disque vers le
cache avant d’y accéder.
- Les zones des requêtes SQL partagées (Shared SQL Areas) • Le cache hit
Quand un process accède à une donnée qui est déjà dans le cache, le
Les zones de requêtes SQL partagées contiennent chacune l’information utilisée process peut lire les données directement à partir de la mémoire.
pour exécuter un seul ordre SQL. Les process exécutant des commandes SQL
identiques partagent cette information. Etant donné que le cache a une taille limitée, toutes les données contenues sur le
disque ne peuvent pas tenir dans le cache. Quand le cache est plein, les cache
Un ordre SQL est placé dans une zone de requêtes SQL partagée, sur la base miss suivants amènent Oracle à écrire sur disque des données qui sont déjà dans
d’un algorithme de hashing appliqué à cet ordre. Par conséquent, seuls les ordres le cache, afin de faire de la place pour les nouvelles données. Les accès suivants
totalement identiques seront dirigés vers le même emplacement de mémoire. aux données écrites sur disque résultent en un cache miss.
Le Database Buffer Cache (cache des buffers de la base de données) garde les Afin d’améliorer les performances et accueillir de nombreux utilisateurs, le
copies des blocs de données lus à partir du disque. Tous les utilisateurs système Oracle utilise un certain nombre de process Oracle appelés background
connectés de façon concurrente au système partagent l’accès aux buffers de la processes (process détaché).
base de données.
Un système Oracle peut avoir plusieurs process détachés, selon la configuration.
L’accès aux données Les noms des process détachés sont les suivants :
Professeur : ASSALE Adjé Louis 3/19 INP-HB Professeur : ASSALE Adjé Louis 4/19 INP-HB
Oracle Organisation d’une base de données Oracle Organisation d’une base de données
Professeur : ASSALE Adjé Louis 5/19 INP-HB Professeur : ASSALE Adjé Louis 6/19 INP-HB
Oracle Organisation d’une base de données Oracle Organisation d’une base de données
Exécute Applique le plan d’exécution aux données, réalise une Les fichiers redo log contiennent toutes les modifications effectuées sur la base
lecture physique et modifie les données si nécessaires. de données, et sont utilisés pour la restauration des données. Si les fichiers redo
Fetch Passe les données à l’utilisateur lors d’ordre SELECT. log son multiplexés, la même information de redo log est écrite sur les membres
du même groupe actif.
La Program Global Area (PGA) est une zone de mémoire contenant les
informations de contrôle et les données d’un utilisateur ou d’un serveur. La PGA
est allouée par le serveur à l’établissement d’une session. Elle se compose d’un - les fichiers redo log
Stack Space qui un espace mémoire pour l’allocation des variables et des
tableaux – d’une zone de données de la session utilisateur.
Log1 Log2 Log3
La PGA est modifiable et non partagée.
Il ne faut pas confondre une base de données Oracle et une instance Oracle. - les fichiers redo log multiplexés
L’instance est démarrée (la mémoire est allouée et les process détachés sont Groupe 1 Groupe 2 Groupe 3
lancés) ; ensuite, elle monte la base de données (fichiers).
Les process serveurs et utilisateurs ne sont pas définis comme faisant partie Disque 1 Membre A Membre A Membre A
d’une instance Oracle.
Exemple :
1.3.1. Les Fichiers Redo Log
Les disques 1 et 2 représentent différents disques sur la même machine. Chaque
membre à l’intérieur d’un groupe doit être de taille identique. Chaque membre
Professeur : ASSALE Adjé Louis 7/19 INP-HB Professeur : ASSALE Adjé Louis 8/19 INP-HB
Oracle Organisation d’une base de données Oracle Organisation d’une base de données
d’un groupe devrait être localisé sur un disque différent pour se protéger contre DB_BLOCK_SIZE La taille en octets d’un buffer de la base de données.
les pannes. Tous les membres d’un groupe sont mis à jour en même temps. DB_BLOCK_BUFFERS Le nombre de database buffers: chacun ayant la taille
du DB_BLOCK_SIZE, alloué pour la SGA. La
L’installation par défaut crée deux groupes redo log avec un membre par groupe quantité totale de l’espace alloué pour le database
et une taille de 500KB. Il faut considérer l’adjonction de membres buffer cache dans la SGA est égale au produit de
supplémentaires sur des disques différents. Il est également recommandé DB_BLOCK_SIZE par DB_BLOCK_BUFFERS.
d’augmenter la taille des fichiers redo log. LOG_BUFFER Le nombre d’octets alloués pour le buffer redo log.
Pour démarrer une instance, Oracle doit lire un fichier de paramètres init.ora. le
fichier paramètres est un fichier texte contenant une liste de paramètres de
configuration d’instance. En autre, le fichier renseigne sur les points suivants :
Bloc Segment
• La quantité de mémoire à utiliser pour les structures mémoire dans la
SGA
• Que faire avec les fichiers redo log actifs pleins
2.1 Notions de Tablespace, Segment, Extent, Cluster et
• Les noms et emplacements des fichiers de contrôle de la base de données. Bloc
Taille de la SGA
Paramètre Définition
SHARED_POOL_SIZE La taille en octets de l’espace assigné pour le partage 2.1.1. Tablespace
des ordres SQL et PL/SQL.
Professeur : ASSALE Adjé Louis 9/19 INP-HB Professeur : ASSALE Adjé Louis 10/19 INP-HB
Oracle Organisation d’une base de données Oracle Organisation d’une base de données
Une base de données est composée d’unités logiques appelées tablespaces qui • Les segments différés sont utilisés lors d’une fermeture d’un tablespace en
sont le support de stockage des différents objets de la base (tables, index, mode immédiat. Ils contiennent les transactions non achevées à la
clusters, etc.). Chaque Tablespace est identifié par un nom. Une base de données fermeture du tablespace, qui seront annulées lors de la remise en service.
doit avoir au moins un Tablespace appelé SYSTEM, qui contient le dictionnaire
des données. Un Tablespace est composé logiquement d’un ou plusieurs Chaque segment est formé d’une ou plusieurs extensions (ensemble contigu de
segments et physiquement d’un ou plusieurs fichiers. Chaque objet de la base blocs).
(table, index, cluster, etc.) doit toujours se trouver dans un seul Tablespace.
Il est possible d’ajouter des Tablespaces à une base de données en cours 2.1.3. Extent
d’utilisation et il aussi possible d’ajouter des fichiers à un Tablespace en cours
d’utilisation. Un extent est un ensemble de blocs de données contigus. Le premier bloc,
Un Tablespace peut être supprimé même s’il contient des données, les données appelé bloc en-tête, contient le caractéristiques du segment, le répertoire des
sont alors supprimées. extensions du segment, le pointeur vers la chaîne de blocs pouvant recevoir de
Un Tablespace peut être actif (online), ses données sont accessibles aux nouvelles lignes.
utilisateurs – désactivé (offline) ses données ne sont plus accessibles aux Lorsqu’un objet de la base de données croît, de l’espace lui est alloué. Le
utilisateurs. Le Tablespace SYSTEM ne peut jamais être désactivé. premier extent est appelé INITIAL EXTENT et est alloué quand le segment est
crée. Le prochain est appelé NEXT EXTENT et est alloué quand le segment
Lors de sa création, une table est implantée dans un Tablespace ; ses données et croit.
ses index ne pourront pas s’étendre dans un autre Tablespace. Une table ou ses
index peuvent s’étendre sur plusieurs fichiers physiques appartenant au
Tablespace dans lequel est créée la table. 2.1.4. Cluster
Professeur : ASSALE Adjé Louis 11/19 INP-HB Professeur : ASSALE Adjé Louis 12/19 INP-HB
Oracle Organisation d’une base de données Oracle Organisation d’une base de données
d’une zone variable qui comprend : des besoins. Il est déconseillé d’utiliser cette
- le répertoire des tables, utilisé seulement en cas de cluster. Il contient les option pour les rollback segment et les tables du
numéros des tables en cluster et la valeur de la clé de cluster. 2 octets sont dictionnaire de données.
attribués pour chaque table en cluster ; MINEXTENTS Nombre total d’extents à allouer lorsque le
- le répertoire de lignes, qui contient, pour chaque ligne du bloc, son segment est créé ; la valeur par défaut est 1 sauf
adresse relative dans le bloc sur 2 octets ; pour les rollback segment qui en nécessitent 2.
- des informations sur les transactions concurrentes sur le bloc. PCTINCREASE Pourcentage d’accroissement des extents suivant
Lorsqu’une transaction modifie les données du bloc, le SGBDR créé une le dernier extent incrémental alloué ; la valeur par
cellule dans l’en-tête du bloc pour enregistrer des informations tant que la défaut est 50%. Les rollback segment n’utilisent
transaction n’est pas terminée. INITRANS et MAXTRANS permettent de pas ce paramètre. NEXT = NEXT * (1 + nouveau
gérer le nombre de cellules utilisables dans l’en-tête du bloc. La taille PCTINCREASE/100) dans le cas d’une
réservée au départ est égale à INITRANS multiplié par 23 octets pour un modification de PCTINCREASE.
bloc de données et par 46 pour un bloc d’index. Lorsque le nombre de OPTIMAL Spécifie la taille optimale en octets d’un rollback
transactions concurrentes sur le bloc dépassent la valeur INITRANS, cette segment ; la valeur par défaut est NULL.
partie s’étend sur la zone libre. FREELISTS Nombre de listes identifiant les blocs disponibles
• Espace libre : il est utilisé comme zone de débordement pour les mises à en insertion dans une table ; la valeur par défaut
jour des lignes du bloc dont la taille augment suite à un opération est 1.
UPDATE. Cette zone peut aussi recevoir de nouvelles lignes, insérées par FREELIST GROUPS Nombre de FREELISTS par instance en mode
l’opération INSERT. Parallel Server ; la valeur par défaut est 1.
• Espace des lignes : il contient les données ou index stockés. Un bloc peut
contenir une ou plusieurs lignes. Ces paramètres se positionnent sur les tables, cluster, index, rollback segments tablespaces
(seulement des positionnements par défaut).
Les règles suivantes s’appliquent :
2.2 Gestion de l’espace de stockage o Tout paramètre de stockage au niveau de l’objet remplace le
paramètre défini au niveau du tablespace.
o Lorsque les paramètres de stockage ne sont pas explicitement
2.2.1. Paramètres de stockage et de gestion de spécifiés au niveau de l’objet, ils prennent la valeur par défaut
l’espace définie au niveau du tablespace.
o Lorsque les paramètres de stockage ne sont pas explicitement
• Les paramètres de stockage sont : spécifiés au niveau du tablespace, ce sont les paramètres par défaut
au niveau du Serveur Oracle qui s’appliquent.
Paramètre Description Si les paramètres de stockage sont modifiés, les nouvelles options
INITIAL Taille en octets du premier extent alloué à un s’appliquent uniquement aux extents non encore alloués.
segment ; le défaut équivaut à cinq blocs de La clause OPTIMAL n’a de sens que pour les rollback segments.
données. o Les paramètres FREELISTS et FREELIST GROUPS ne peuvent
NEXT Taille en octets de l’extent suivant alloué à un pas être spécifiés par défaut au niveau du tablespace.
segment; le défaut équivaut à cinq blocs de Il faut spécifier les paramètres de stockage afin d’optimiser l’utilisation
données. d’espaces contigus et d’empêcher la fragmentation d’un tablespace. On réduit la
MAXETENTS Spécifie le nombre total d’extents. La valeur fragmentation en dimensionnant un segment de façon à tenir dans l’extent
minimale est 1. La valeur par défaut et la valeur INITIAL et en définissant PCTINCREASE de façon à agrandir les extents
maximale dépend de la taille du bloc de données. incrémentaux.
UNLIMITED spécifie que les extents doivent
être automatiquement alloués au fur et à mesure
Professeur : ASSALE Adjé Louis 13/19 INP-HB Professeur : ASSALE Adjé Louis 14/19 INP-HB
Oracle Organisation d’une base de données Oracle Organisation d’une base de données
• Les paramètres de gestion de l’espace sont : méga octets. REUSE indique si on réutilise un fichier déjà présent sur le
disque, ou si on crée un nouveau.
Paramètre Définition Lors de la création d’un nouveau tablespace, après la création du
PCTFREE Spécifie le pourcentage d’espace dans chaque bloc tablespace SYSTEM et s’il n’existe qu’un segment ROLLBACK, il est
Oracle réservé pour les futures modification de lignes. nécessaire de créer un deuxième.
La valeur par défaut est 10 pour cent. • Modification d’un tablespace
PCTUSED Spécifie le pourcentage minimum d’espace utilisé que ALTER TABLESPACE nom_tablespace
Oracle maintient dans chaque de données. Un bloc ADD DATAFILE fichier [, fichier] ;
redevient candidat pour l’insertion de lignes quand son pour agrandir l’espace de stockage
espace utilisé tombe en dessous de PCTUSED. La
valeur par défaut est 40 pour cent. ALTER TABLESPACE nom_tablespace
INITRANS Indique le nombre d’entrées de transactions [DEFAULT STORAGE
initialement allouées dans l’entête du bloc. ([INITIAL valeur]
MAXTRANS Indique le nombre maximum de transactions pouvant [NEXT valeur]
accéder simultanément au bloc. [MINEXTENTS nombre]
[MAXEXTENTS nombre]
PCTFREE et PCTUSED permettent de contrôler l’utilisation de l’espace libre [PCTINCREASE pourcentage])
pour les insertions et les modifications de lignes dans les blocs de données. pour modifier les caractéristique de stockage
Chacun de ces deux paramètres peut être mentionné pour les tables, les clusters
et les snapshots lors des commandes CREATE et ALTER. De plus, PCTFREE ALTER TABLESPACE nom_tablespace
peut être spécifié pour les index. La somme de PCTFREE et PCTUSED doit être RENAME DATAFILE fichier_existant [, fichier_existant]…
inférieure ou égale à 100. TO fichier_nouveau [, fichier_nouveau] ;
Positionner une valeur plus haute pour le PCTFREE et une valeur plus basse pour changer le nom du fichier, le fichier de disque et la taille du fichier
pour le PCTUSED améliore les performances.
ALTER TABLESPACE nom_tablespace
OFFLINE [NORMAL | IMMEDIATE] ;
2.2.2. Gestion des tablespaces, segment rollback et pour une mise hors service du tablespace : NORMAL le tablespace est
des tables mis hors service quand tous les utilisateurs du tablespace ont fini leurs
transactions en cours ; IMMEDIATE le tablespace est mis hors service
• Création d’un tablespace même si les transactions en cours ne sont pas terminées (les transactions
CREATE TABLESPACE nom_tablespace non validées sont alors stockées dans un segment du tablespace).
DATAFILE fichier [, fichier] …
[DEFAULT STORAGE ALTER TABLESPACE nom_tablespace ONLINE ; mise en
([INITIAL valeur] service
[NEXT valeur]
[MINEXTENTS nombre] ALTER TABLESPACE nom_tablespace
[MAXEXTENTS nombre] BEGIN | END BACKUP ;
[PCTINCREASE pourcentage]) BEGIN BACKUP avant de démarrer une procédure de backup en ligne
[ONLINE | OFFLINE] des tables du tablespace. END BACKUP doit être exécutée
[PERMANENT | TEMPORARY] immédiatement après la fin d’une procédure de backup en ligne
fichier indique le chemin d’allocation du fichier physique sous la forme : ALTER TABLESPACE nom_tablespace READ ONLY ;
′chemin\nom_fichier′ SIZE taille REUSE. Taille s’exprime en kilo ou tablespace en lecture seule.
Professeur : ASSALE Adjé Louis 15/19 INP-HB Professeur : ASSALE Adjé Louis 16/19 INP-HB
Oracle Organisation d’une base de données Oracle Organisation d’une base de données
• Suppression d’un tablespace Les vues du dictionnaire de données permettent de visualiser les informations
DROP TABLESPACE nom_tablespace relatives à la structure logique de la base de données.
[INCLUDING CONTENTS] ;
l’option INCLUDING CONTENTS doit être utilisé si le tablespace Vue Information
contient des informations. La suppression du tablespace ne supprime pas ALL_ALL_TABLES Donne des informations sur la structure des tables et
les fichiers du disque. Un tablespace ne peut être supprimé que quand il des vues accessibles à l’utilisateur.
est hors service. ALL_CLUSTER Donne des informations sur la structure des clusters
• Création d’un segment rollback accessibles à l’utilisateur
CREATE ROLLBACK SEGMENT nom_segment ALL_OBJET_TABLES Donne des informations sur la structure des tables
TABLESPACE nom_tablespace accessibles à l’utilisateur
STORAGE (INITIAL… ALL_TAB_COLUMNS Donne la description des colonnes des tables, des
OPTIMAL entier | NULL); vues et des clusters accessibles à l’utilisateur.
• Modification d’un segment rollback DBA_ALL_TABLES Donne des informations sur la structure des tables et
ALTER ROLLBACK SEGMENT nom_segment des vues.
[ONLINE | OFFLINE] DBA_DATA_FILES Donne les informations sur les fichiers de la base de
[STORAGE parameter_stockage] données.
[SHRINK TO entier]; DBA_EXTENTS Donne la liste des extents de la base de données.
SHRINK essaie de réduire le segment rollback à sa taille optimale ou à DBA_FREE_SPACE Donne la place libre dans les fichiers de la base.
une taille donnée. DBA_SEGMENTS Donne la liste des segments de la base.
• Suppression d’un segment rollback DBA_TAB_COLUMNS Donne la description des colonnes des tables, des
DROP ROLLBACK SEGMENT nom_segment ; vues et des clusters de la base.
• Création de table DBA_TABLES Donne les caractéristiques des tables de la base.
Voir langage SQL ; Oracle ajoute les options suivantes pour la gestion de DBA_TABLESPACES Donne les caractéristiques des tablespaces de la
l’espace de stockage : base.
CREATE TABLE nom_table (…) USER_ALL_TABLES Donne des informations sur la structure des tables et
[PCTFREE pourcentage] [PCTUSED pourcentage] des vues accessibles à l’utilisateur.
[INITRANS nombre] [MAXTRANS nombre] USER_EXTENTS Donne la liste des extents des objets de l’utilisateur.
[TABLESPACE nom_tablespace] USER_FREE_SPACE Donne la place libre dans les tablespaces accessible
[STORAGE paramètres_stockage] à l’utilisateur.
[CLUSTER nom_cluster] USER_SEGMENTS Donne la liste des segments de l’utilisateur.
[ENABLE | DISABLE contrainte] USER_TAB_COLUMNS Donne la description des colonnes des tables de
[AS requête] ; l’utilisateur.
• Modification des paramètres d’allocation d’une table USER_TABLES Donne la description des tables de l’utilisateur.
ALTER TABLE nom_table USER_TABLESPACES Donne les caractéristiques des tablespaces
[PCTFREE pourcentage] [PCTUSED pourcentage] accessibles à l’utilisateur.
[INITRANS nombre] [MAXTRANS nombre]
[STORAGE paramètres_stockage] 3. EXERCICE
[DROP contrainte]
• Se connecter à la base en tant que system/manager. Créer un tablespace
2.3 Dictionnaire de données USER1, allouer un seul fichier user101.dbf ayant une taille de 10 Mo avec
un stockage par défaut de MINEXTENTS=2 et PCTINCREASE=0.
Professeur : ASSALE Adjé Louis 17/19 INP-HB Professeur : ASSALE Adjé Louis 18/19 INP-HB
Oracle Organisation d’une base de données