Example create tablespace
| Fiche express | |
|---|---|
| Type | Exemple DDL Oracle |
| Contexte | Création de tablespaces (permanents, temporaires, gérés localement ou par dictionnaire) |
| Voir aussi | Example create table · Example create temporary tables |
Panorama des différentes syntaxes de création de tablespace apparues au fil des versions Oracle, du plus ancien (géré par dictionnaire, toutes versions) au plus récent (fichiers gérés par Oracle, 9i et ultérieur). Un tablespace regroupe les fichiers physiques (datafiles) dans lesquels sont stockés les segments (tables, index…) d'un ou plusieurs schémas.
Gestion des extents : LOCAL vs dictionnaire
EXTENT MANAGEMENT LOCAL(Oracle8i+, recommandé depuis) : les extents sont
suivis via une bitmap dans l'en-tête de chaque datafile, sans passer par les tables du dictionnaire de données — meilleures performances, moins de contention.
AUTOALLOCATE(par défaut) : Oracle choisit lui-même la taille des extents,
adapté à un tablespace contenant des objets de tailles très variées.
UNIFORM SIZE n: tous les extents ont une taille fixe (1 Mo par défaut si non
précisé) — utile quand la volumétrie des objets est prévisible et qu'on veut un contrôle fin de l'espace utilisé.
- Dictionnaire (toutes versions, syntaxe historique) : les extents sont suivis dans les
tables du dictionnaire (SYS.UET$/FET$), plus lent et sujet à la fragmentation — à éviter sur toute version récente.
SEGMENT SPACE MANAGEMENT AUTO
Depuis Oracle9i, l'espace libre à l'intérieur de chaque bloc peut être géré automatiquement via
une bitmap (AUTO) plutôt que par les listes libres classiques
(MANUAL, freelists) — simplifie l'administration et réduit la contention en
environnement fortement concurrent.
Script
-- (Oracle9i+) Oracle Managed Files (OMF) : Oracle choisit lui-même l'emplacement/nom du
-- datafile (nécessite DB_CREATE_FILE_DEST défini au niveau instance)
CREATE TABLESPACE users
LOGGING DATAFILE SIZE 500M REUSE
AUTOEXTEND ON NEXT 1M MAXSIZE 500M
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
SEGMENT SPACE MANAGEMENT AUTO
/
-- (Oracle9i+) Même configuration, avec datafile explicite plutôt qu'OMF
CREATE TABLESPACE users
LOGGING DATAFILE '/u10/app/oradata/ORCL/users01.dbf' SIZE 500M REUSE
AUTOEXTEND ON NEXT 1M MAXSIZE 500M
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
SEGMENT SPACE MANAGEMENT AUTO
/
-- (Oracle9i+) Tablespace temporaire : syntaxe dédiée TEMPORARY TABLESPACE / TEMPFILE.
-- Alternative : le déclarer directement lors de la création de la base via la clause
-- "DEFAULT TEMPORARY TABLESPACE ... TEMPFILE ..." du CREATE DATABASE.
CREATE TEMPORARY TABLESPACE temp
TEMPFILE '/u07/app/oradata/ORCL/temp01.dbf' SIZE 500M REUSE
AUTOEXTEND ON NEXT 500M MAXSIZE UNLIMITED
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M
/
-- (Oracle8i+) Géré localement, AUTOALLOCATE : adapté à des objets de tailles variées
CREATE TABLESPACE users
LOGGING DATAFILE '/u10/app/oradata/ORCL/users01.dbf' SIZE 100M REUSE
AUTOEXTEND ON NEXT 100M MAXSIZE 500M
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
/
-- (Oracle8i+) Géré localement, UNIFORM SIZE : contrôle exact de la taille des extents
CREATE TABLESPACE users
LOGGING DATAFILE '/u10/app/oradata/ORCL/users01.dbf' SIZE 10M REUSE
AUTOEXTEND ON NEXT 1M MAXSIZE 500M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 512K
/
-- (Toutes versions) Géré par dictionnaire — syntaxe historique, à éviter sur les versions
-- récentes au profit de EXTENT MANAGEMENT LOCAL
CREATE TABLESPACE users
DATAFILE '/u10/app/oradata/ORCL/users01.dbf' SIZE 10M
DEFAULT STORAGE (INITIAL 64K NEXT 64K MAXEXTENTS 121 PCTINCREASE 0)
/
Les chemins de datafiles ci-dessus (/u10/app/oradata/ORCL/…) sont des exemples à
adapter à la structure de stockage réelle du serveur cible.
Voir aussi
- Example create table — tables créées dans les tablespaces définis ici
- Example create temporary tables — tables temporaires de session, à ne pas confondre avec le tablespace temporaire ci-dessus
- Example create table buffer pools — affectation d'une table à un buffer pool mémoire (KEEP/RECYCLE), notion distincte du tablespace
- Example partition range date oracle 8 — utilisation de plusieurs tablespaces pour répartir les partitions d'une table