Objectifs du chapitre
- Connaître les structures de stockage logiques et physiques d’une base Oracle : tablespace, segment, extension.
- Savoir créer, modifier et supprimer un tablespace.
- Connaître les vues permettant de consulter les informations relatives aux tablespaces.
1. Structures de stockage logiques et physiques
D’un point de vue logique, les données sont stockées par Oracle dans des tablespaces. Les tablespaces peuvent appartenir à une seule base de données à la fois, sont constitués d’un ou plusieurs fichiers de données, et sont divisés en unités de stockage logiques.
D’un point de vue physique, elles sont stockées dans des fichiers de données. Les fichiers de données ne peuvent appartenir qu’à un seul tablespace et à une seule base de données, et servent de référentiel pour les données des objets de schéma.

1.1 Tablespace
Une base de données est définie avec au moins un tablespace, le tablespace SYSTEM, qui contient le dictionnaire de données ; Oracle recommande de n’y stocker aucun autre objet. Un tablespace ne peut appartenir qu’à une seule base de données, et chaque tablespace comprend un ou plusieurs data files.
Un tablespace peut être actif (online, ses données sont accessibles aux utilisateurs) ou désactivé (offline, ses données ne sont plus accessibles). Le tablespace SYSTEM ne peut jamais être désactivé.
Définir et paramétrer différemment plusieurs tablespaces permet au DBA d’organiser la base (assigner des quotas de ressources aux utilisateurs, contrôler la disponibilité des données en mettant hors service ou en lecture seule certains tablespaces) et d’améliorer la performance en répartissant les zones de stockage sur plusieurs disques.
1.2 Extension et segment
Une extension (extent) est une suite contiguë de blocs. Elle est affectée à un type de données (par exemple les enregistrements d’une table), et le nombre de blocs dans une extension est fixé par le DBA.
Un segment est un ensemble d’extensions. Chaque segment est dédié au stockage d’un type particulier d’informations (tables, index, etc). Une extension initiale est allouée lors de la création d’un segment, et de nouvelles extensions sont allouées dynamiquement si besoin.
2. Manipuler les tablespaces
2.1 Gestion de l’espace dans les tablespaces
| Mode | Fonctionnement |
|---|---|
| Géré localement | Les extents libres sont gérés dans le tablespace ; un bitmap enregistre les extents libres, chaque bit correspondant à un bloc et sa valeur indiquant s’il est libre ou utilisé. Mode recommandé par Oracle. |
| Géré au moyen du dictionnaire | Les extents libres sont gérés par le dictionnaire de données ; les tables appropriées sont mises à jour lorsque des extents sont alloués ou libérés. |
2.2 Créer un tablespace
CREATE {BIGFILE|SMALLFILE} TABLESPACE nom_tablespace
[DATAFILE ['nom_fichier'] [SIZE integer {K|M|G|T}]
[AUTOEXTEND
{OFF | ON [NEXT integer {K|M|G|T}]
[MAXSIZE {UNLIMITED | integer {K|M|G|T}}] }] [,...]
]
[BLOCKSIZE integer [K]]
[{LOGGING|NOLOGGING}] [{ONLINE|OFFLINE}]
[Extent management clause]
[DEFAULT storage clause];
LOGGING / NOLOGGING indique si les modifications apportées aux objets du tablespace seront journalisées ou non. 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.
CREATE TABLESPACE TBL01
DATAFILE 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\FDAUTO1.dbf'
SIZE 10M
AUTOEXTEND ON NEXT 2M MAXSIZE 20M;
2.3 Modifier un tablespace
| Opération | Commande |
|---|---|
| Ajouter un fichier de données | ALTER TABLESPACE TBL01 ADD DATAFILE 'C:\ORACLE\ORADATA\BDSCO2\TBL01fd03.dbf' SIZE 30M AUTOEXTEND ON NEXT 5M MAXSIZE 100M; |
| Redimensionner un fichier de données existant | ALTER DATABASE DATAFILE 'C:\ORACLE\ORADATA\BDSCO2\TBL01fd03.dbf' RESIZE 50M; |
| Lecture seule | ALTER TABLESPACE TBL01 READ ONLY; arrête toutes les écritures ; les transactions en cours peuvent se terminer, mais aucune nouvelle instruction LMD n’est autorisée à démarrer. |
| Lecture/écriture | ALTER TABLESPACE TBL01 READ WRITE; permet le lancement d’instructions LMD sur les objets du tablespace. |
| Rendre disponible | ALTER TABLESPACE TBL01 ONLINE; |
| Rendre indisponible | ALTER TABLESPACE TBL01 OFFLINE; |
2.4 Supprimer un tablespace
| Suppression | Commande |
|---|---|
| Logique | DROP TABLESPACE nom_tablespace; |
| Logique et physique | DROP TABLESPACE nom_tablespace AND DATAFILES; |
| Des objets stockés dans le tablespace | DROP TABLESPACE nom_tablespace INCLUDING CONTENTS; |
| Des contraintes d’intégrité | DROP TABLESPACE nom_tablespace INCLUDING CONTENTS CASCADE CONSTRAINTS; |
2.5 Consulter les informations relatives aux tablespaces
| Information | Vues |
|---|---|
| Tablespaces | DBA_TABLESPACES, V$TABLESPACE |
| Fichiers de données | DBA_DATA_FILES, V$DATAFILE |
| Fichiers temporaires | DBA_TEMP_FILES, V$TEMPFILE |
| Extensions | DBA_EXTENTS |
| Segments | DBA_SEGMENTS |
| Espace disponible restant | DBA_FREE_SPACE |
Le paramètre de taille du bloc par défaut est DB_BLOCK_SIZE.