674 Words Cours

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.

Structure logique : base de données, schéma, tablespace, segment, extent, bloc de données Oracle. Structure physique : fichier de données, bloc du système d’exploitation. Le tablespace correspond au fichier de données, le bloc Oracle au bloc du système d’exploitation

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

ModeFonctionnement
Géré localementLes 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 dictionnaireLes 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érationCommande
Ajouter un fichier de donnéesALTER TABLESPACE TBL01 ADD DATAFILE 'C:\ORACLE\ORADATA\BDSCO2\TBL01fd03.dbf' SIZE 30M AUTOEXTEND ON NEXT 5M MAXSIZE 100M;
Redimensionner un fichier de données existantALTER DATABASE DATAFILE 'C:\ORACLE\ORADATA\BDSCO2\TBL01fd03.dbf' RESIZE 50M;
Lecture seuleALTER 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/écritureALTER TABLESPACE TBL01 READ WRITE; permet le lancement d’instructions LMD sur les objets du tablespace.
Rendre disponibleALTER TABLESPACE TBL01 ONLINE;
Rendre indisponibleALTER TABLESPACE TBL01 OFFLINE;

2.4 Supprimer un tablespace

SuppressionCommande
LogiqueDROP TABLESPACE nom_tablespace;
Logique et physiqueDROP TABLESPACE nom_tablespace AND DATAFILES;
Des objets stockés dans le tablespaceDROP 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

InformationVues
TablespacesDBA_TABLESPACES, V$TABLESPACE
Fichiers de donnéesDBA_DATA_FILES, V$DATAFILE
Fichiers temporairesDBA_TEMP_FILES, V$TEMPFILE
ExtensionsDBA_EXTENTS
SegmentsDBA_SEGMENTS
Espace disponible restantDBA_FREE_SPACE

Le paramètre de taille du bloc par défaut est DB_BLOCK_SIZE.