Vous êtes sur la page 1sur 25

Université de Carthage

Cours: Administration des Bases de Données


L2 Génie Logiciel et Système d'Information

Chapitre 3: Structures de Stockage


Exemple Oracle

Asma Ben Bouyahia

a s m a . b e n b o u y a h i a @ i s s a t m . u c a r. t n

AU: 2021/2022
Structure D’une BD Oracle
Une base de données Oracle contient:

Asma Ben Bouyahia 2


Bloc Oracle (Oracle Data Block)

• Plus petite unité de stockage et de transfert de données utilisées par Oracle


• Un nombre d’octets précis d’espace de base de données physique sur le disque
• La taille varie entre 2k et 32 K
• Paramètre DB_BLOCK_SIZE

La structure d’un bloc contient essentiellement :


• En-tête: contient l’adresse du bloc
• Répertoire des tables: liste des tables des
données stockées
• Répertoire des enregistrements : adresse des
enregistrements stockés
• Espace libre
• Espace des données: contient les enregistrements
Asma Ben Bouyahia 3
Bloc Oracle : contrôle du remplissage (1)

! Problème: mise à jour (UPDATE) augmentant la taille d’un tuple dans un bloc saturé
1. Conduit au déplacement d’une partie ou de tout un enregistrement dans un autre
bloc  chainage

2. Chainage : opération couteuse en termes de temps d’exécution, surtout si répétée


pour chaque mise à jour

Solution: réserver un espace dans un bloc pour permettre l’augmentation de la taille


des enregistrements due aux m-à-j

Asma Ben Bouyahia 4


Bloc Oracle : contrôle du remplissage (2)

2 paramètres: PCTFREE et PCTUSED spécifiés lors de la création d’une table

 PCTFREE (PerCent Free)

• pourcentage que Oracle laisse de libre dans un bloc de données pour les mises à jour
• Dès qu'il reste que ce pourcentage de libre dans le bloc de données, Oracle bloque les
insertions dans ce bloc et il ne permet que les "UPDATE" et "DELETE"

Exemple:

Si PctFree est fixé à 25%, Oracle bloquera les insertions des nouvelles lignes
dans le bloc de données quand il est rempli à 75%

Asma Ben Bouyahia 5


Bloc Oracle : contrôle du remplissage (2)

 PCTUSED (PerCent USED)

le pourcentage en dessous du quel Oracle autorise à nouveau les insertions dans un


bloc pour lequel les insertions étaient bloquées

Exemple: PctFree= 20% et PctUsed= 50%


- On prend un bloc vide, il est rempli par les données jusqu'à 80%  Oracle bloque les
insertions pour ce bloc et le considère comme plein (Les mises à jour des lignes déjà
existantes ne sont pas bloquées)

- Un utilisateur supprime des données du bloc et il se retrouve avec un taux de


remplissage de 70%, Oracle le considère toujours comme plein

- Un autre utilisateur supprime à nouveau des données, et le taux de remplissage


devient 45%, Oracle autorise à nouveau les insertions dans ce bloc car on est descendu
en dessous du seuil de 50%

Asma Ben Bouyahia 6


Bloc Oracle : Exercice 1

CREATE TABLE PRODUIT (pnom VARCHAR(20), prix INTEGER) PCTFREE 30


, PCTUSED 40;

1. Les insertions sont autorisées jusqu’à ce que le bloc soit plein à 70


2. Lorsque le bloc est plein à 70
• Les insertions sont interdites dans le bloc
• Les suppressions et les modifications sont autorisées
3. Les insertions sont à nouveau autorisées si le taux de remplissage
devient inférieur à 40

Asma Ben Bouyahia 7


Bloc Oracle : Exercice 2

Considérons une table où :


• Les insertions INSERT , les suppressions DELETE et les mises à jour UPDATE
sont fréquentes
• Les mises à jour n’augmentent pas la taille des tuples
• La table est volumineuse et économiser l’espace de stockage est primordial
Quelles valeurs choisir pour PCTFREE et PCTUSED ?
pas besoin de réserver beaucoup d’espace pour les mises à jour donc une petite
valeur pour PCTFREE
 Récupérer rapidement les espaces libérés par les DELETE donc une grande
valeur pour PCTUSED

Asma Ben Bouyahia 8


Extension (Extent)

• Ensemble de blocs oracle contigus stockant un même type de données


• Une extension est affectée à un type de données
 Exemple : enregistrements d’une table

 Objectif : améliorer le regroupement et


donc réduire le temps de nécessaire pour
lire les données d’un même type

Asma Ben Bouyahia 9


Segment

• Un segment est un ensemble d’extensions


• Chaque segment est dédié au stockage d’un type particulier d’informations (tables,
index, etc.)
• Il existe 4 types de segments:
 Segment de table: espace occupé par les tuples d’une table
 Segment d’index : espace occupé par un index
 Segment d’annulation (RollBack Segment): espace occupé par les images des
données avant que celle-ci ne soient modifiés
 Segment temporaire: espace temporaire ou sont stockés les données
temporaires utilisés lors d’un tri, d’une jointure, etc,
• Les segments sont regroupés dans des tablespaces
Asma Ben Bouyahia 10
Tablespace

• Espace logique permettant d’organiser une base de données par exemple un


tablespace par thème.
• Contient un ou plusieurs segments (un segment appartient à un et un seul
tablespace)
• Stocké physiquement dans un (au moins) ou plusieurs fichiers appelés fichiers
de données
• Les tablespaces peuvent être activés (online) ou désactivés (offline)
individuellement pour d’éventuelles opérations de maintenance
 Les objets d’un tablespace offline ne sont plus accessibles
 Excepté le tablespace SYSTEM et un tablespace avec un rollback
segment actif  ne peuvent pas être mis offline

Asma Ben Bouyahia 11


Tablespace: Exemple
Exemple: base de données gérant la facturation
et le RH
 Tablespace Facturation:
 Contient les tables (segments) factures,
produit, client, ligne_fact, etc, ..
 Stockés dans les fichiers fact01.dbf,
fact02.dbf
 Tablespace RH :
 Contient les tables (segments)
Employé, Paie, Absence
 Stockés dans les fichiers Rh01.dbf,
Rh02.dbf

Asma Ben Bouyahia 12


Tablespace: Objectif

• Contrôle de l'allocation d'espace et affectation de quotas aux utilisateurs


• Contrôle de disponibilité des données par la mise online ou offline des
tablespaces
• Distribution du stockage des données sur plusieurs dispositifs
 pour améliorer les E/S
 pour réduire la contention sur un seul disque
• Réalisation des maintenances et des sauvegardes partielles
• Conservations de volumes importants de données statiques sur des dispositifs
en lecture seule.
• Séparation les données du dictionnaire de données des données applicatives

Asma Ben Bouyahia 13


Gestion de l’espace dans un tablespace

• 2 modes de gestion de l’allocation/libération des extensions dans un tablespace:


localement et par le dictionnaire de données
• Gestion par le dictionnaire de données
 Les tables appropriées sont mises à jour lorsque des extents sont alloués ou libérés
 L’information sur la disponibilité des extensions est stockée dans le dictionnaire de
données
• Gestion locale
 Extensions libres gérées au niveau du tablespace
 Un bitmap par tablespace représente les extensions libres / allouées
 Chaque bit correspond à un bloc ou à un groupe de blocs
 La valeur des bits indique si ceux-ci sont libres / utilisés
 Il est recommandé d’utiliser les tablespaces gérés localement (option par défaut)
Asma Ben Bouyahia 14
Création d’un tablespace: Syntaxe non exhaustive

Asma Ben Bouyahia 15


Création :fichier de données

Exemple 1 :
CREATE TABLESPACE APPLI_PERSONNEL
DATAFILE
‘C:\Fichier1_app_pers.dbf' SIZE 100M,
‘C:\Fichier2_app_pers.dbf' SIZE 10M;

Exemple 2 :

CREATE TABLESPACE tslocal


DATAFILE
‘C:\ts_local1.dbf’ SIZE 10M
EXTENT MANAGEMENT LOCAL;

Asma Ben Bouyahia 16


Extension automatique des fichiers de données: AUTOEXTEND

• Permet, en cas de saturation, d’étendre l’espace de stockage réservé à un


fichier de données avec une éventuelle limite à préciser.

Exemple : Création d’un tablespace TBL_AUTO avec un seul fichier de données


FDAUTO1 de taille 10M avec une extension automatique de 2M et une limite
maximale de 20M:

CREATE TABLESPACE TBL_AUTO


DATAFILE
'C:\ORACLE\FDAUTO1.dbf SIZE 10M AUTOEXTEND
ON NEXT 2M MAXSIZE 20M;

Asma Ben Bouyahia 17


Redimensionner un tablespace (1)

1. Par ajout d’un fichier de données :

Exemple : Ajouter un fichier fd03 de 50 M au tablespace TBL01 :

ALTER TABLESPACE tbl01


ADD DATAFILE
'C:\ORACLE\TBL01fd03.dbf' SIZE 50M AUTOEXTEND ON NEXT 5 M
MAXSIZE 100 M;

Asma Ben Bouyahia 18


Redimensionner un tablespace (2)

2. Par modification de la taille d’un fichier existant :

 D’une façon manuelle

Exemple : Augmenter la taille du fichier fd02 de 200 M


ALTER DATABASE DATAFILE
'C:\ORACLE\fd02.dbf‘ RESIZE 200 M;

 Automatiquement avec AUTOEXTEND

 La vue DBA_DATA_FILES permet de savoir si AUTOEXTEND est activé

Asma Ben Bouyahia 19


Suppression d’un tablespace

• Tablespace ne pouvant pas être supprimés :


 Tablespace SYSTEM
 Tablespaces ayant des segments d’annulation actifs
 Syntaxe :

DROP TABLESPACE nom_tablespace [INCLUDING CONTENTS [AND DATAFILES]


[CASCADE CONSTRAINTS ]]

• INCLUDING CONTENTS: supprime les segments (les objets stockés dans le tablespace).
Nécessaire si le tablespace n’est pas vide sinon erreur .

• INCLUDING CONTENTS AND DATAFILES: supprime les segments et les fichiers de données.
Suppression logique et physique.

• CASCADE CONSTRAINTS: Suppressions des contraintes d’intégrité

Asma Ben Bouyahia 20


Autres options

 READ ONLY : rendre un tablespace accessible en lecture uniquement

Pour revenir en mode lecture/écriture utiliser l’option READ WRITE


Exemple :

ALTER TABLESPACE tbl01 READ ONLY;


ALTER TABLESPACE tbl01 READ WRITE;

 LOGGING | NOLOGGING: les modification apportées aux objets contenus dans le tablespace
seront journalisées
Exemple 1 : désactivation de la journalisation

ALTER TABLESPACE nom_tablespace NOLOGGING;

Asma Ben Bouyahia 21


Autres options
Exemple 2 : CREATE TABLESPACE TBL02 LOGGING
DATAFILE
'C:\TBL01fd01.dbf' SIZE 10M,
'C:\TBL01fd02.dbf' SIZE 8M
UNIFORM SIZE 2M;

 UNIFORM SIZE : taille uniforme des extents de 2M

 REUSE: permet de réutiliser un fichier de données s’il existe pour un autre tablespace

CREATE TABLESPACE tbl03


Exemple :
DATAFILE ‘C:\oracle\tbl02fd1.dbf’ REUSE;

 Tbl02 est un tablespace qui a été déjà supprimé, on réutilise le fichier tbl02fd1.dbf
dans un autre tablespace.

Asma Ben Bouyahia 22


Mettre un tablespace hors ligne

• Hors ligne: données inaccessible


• Tablespace ne pouvant pas être mis hors ligne:
 Tablespace SYSTEM
 Tablespaces contenant des segments d’annulation actifs
 Tablespace temporaire par défaut

• Mise d’un tablespace hors ligne

• Mise d’un tablespace en ligne

OFFLINE : permet aussi de créer un tablespace dans un état indisponible immédiatement


après sa création.

Asma Ben Bouyahia 23


Types d’un tablespace
 Permanent :
• pour stocker les données permanentes de la base
• Valeur par défaut de CREATE TABLESPACE

 Temporaire :
• Utilisé lors d’une importante opération de tri (distinct ,order by, index, etc…)
• En raison de leur aspect dynamique, ces données ne devraient pas être stockées avec
d’autres types de données

CREATE TEMPORARY TABLESPACE temp02


TEMPFILE ‘c:\oracle\tempfd01.tmp’ size 40 M

 Undo :
• Stocke les données d’annulation (Rollback)
• Aucun objet permanent n’est stocké dans cet espace
CREATE UNDO TABLESPACE tbundo
DATAFILE ‘c:\oracle\undofd01.dbf’ size 400 M

Asma Ben Bouyahia 24


Informations sur les Tablespaces et les fichiers

Vues du dictionnaire contenant les informations sur les tablespaces et les


fichiers de données:

• Tablespaces
 DBA_TABLESPACES
 V$TABLESPACE

• Fichiers de données
 DBA_DATA_FILES
 V$DATAFILE

• Fichiers temporaires
 DBA_TEMP_FILES
 V$TEMPFILE

Asma Ben Bouyahia 25

Vous aimerez peut-être aussi