Structure de stockage et relations
Objectifs A la fin de ce chapitre, vous pourrez : décrire la structure logique de la base de données énumérer les types de segment et leur utilisation énumérer les mots-clés qui gèrent l'utilisation de l'espace de bloc obtenir des informations sur les structures de stockage à partir du dictionnaire de données
Structure de stockage et relations Base de données PROD TABLESPACES SYSTEM USER_DATA RBS TEMP FICHIERS DE DONNEES DISK2/ USER1.dbf DISK3/ USER2.dbf DISK1/ ROLL1.dbf DISK1/ TEMP.dbf DISK1/SYS1.dbf SEGMENTS Seg RB S_DEPT Seg données S_EMP Seg données S_DEPT (suite) Seg Data S_EMP FIRST_NAME Index Seg Index RBS1 Seg RB RBS2 Seg RB RBS1 (suite) Seg RB RBS2 (suite) Seg RB Temp Seg Temp Table D.D. Seg données Index D.D. Seg Index EXTENTS 1 2 1 2 1 2 1 1 2 2 1 DISPO 1 1 2 2 1 BLOCS DE DONNEES Oracle
Types de segment Table Partition de table Cluster Index
Table organisée en index Types de segment Table organisée en index Partition d'index Segment d'annulation Segment temporaire
Types de segment Segment LOB Table imbriquée Segment de bootstrap
Priorité des clauses de stockage Valeur Oracle par défaut Tablespace Segment
Allocation et libération d'extents Un extent est une tranche d'espace utilisée par un segment dans un tablespace. Un extent est alloué lorsqu'un segment est : créé étendu modifié Un extent est libéré lorsqu'un segment est : supprimé vidé
Extents utilisés et extents libres Fichier de données En-tête de fichier Extent utilisé Extent libre
Bloc de base de données Unité minimum d'E/S Comprend un ou plusieurs blocs du système d'exploitation Est défini à la création d'un tablespace DB_BLOCK_SIZE détermine la taille de bloc par défaut
Support de plusieurs tailles de bloc Il est possible de créer une base de données avec une taille de bloc standard et jusqu'à quatre tailles de bloc non standard. Les tailles de bloc peuvent être égales à toute puissance de deux comprise entre 2 et 32 Ko.
Taille de bloc standard Elle est définie à la création de la base de données à l'aide du paramètre DB_BLOCK_SIZE. Pour la modifier, il est nécessaire de recréer la base de données. Elle est utilisée par les tablespaces SYSTEM et TEMPORARY. DB_CACHE_SIZE indique la taille du cache de tampons DEFAULT pour une taille de bloc standard. Taille minimale = un granule (4 Mo ou 16 Mo) Valeur par défaut = 48 Mo
Tailles de bloc non standard Configurez des caches supplémentaires avec les paramètres dynamiques suivants : DB_2K_CACHE_SIZE pour des blocs de 2 Ko DB_4K_CACHE_SIZE pour des blocs de 4 Ko DB_8K_CACHE_SIZE pour des blocs de 8 Ko DB_16K_CACHE_SIZE pour des blocs de 16 Ko DB_32K_CACHE_SIZE pour des blocs de 32 Ko DB_nK_CACHE_SIZE n'est pas autorisé si nK est la taille de bloc standard Taille minimale de chaque cache : un granule
Créer des tablespaces de taille de bloc non standard CREATE TABLESPACE tbs_1 DATAFILE 'tbs_1.dbf' SIZE 10M BLOCKSIZE 4K; DESCRIBE dba_tablespaces Name Null? Type ------------------ -------- ------------ TABLESPACE_NAME NOT NULL VARCHAR2(30) BLOCK_SIZE NOT NULL NUMBER ...
Règles relatives à l'utilisation de plusieurs tailles de bloc Toutes les partitions d'un objet doivent résider dans des tablespaces ayant la même taille de bloc. Tous les tablespaces temporaires, y compris les tablespaces permanents utilisés comme tablespaces temporaires par défaut, doivent utiliser la taille de bloc standard. Les segments de débordement d'une table organisée en index et les segments LOB en dehors de la ligne peuvent être stockés dans un tablespace ayant une taille de bloc différente de celle de la table de base.
Contenu d'un bloc de base de données En-tête Espace libre Données
Paramètres d'utilisation de l'espace de bloc INITRANS MAXTRANS PCTFREE PCTUSED
Gestion des blocs de données Vous disposez de deux méthodes pour gérer les blocs de données : Gestion automatique de l'espace de segment Gestion manuelle
Gestion automatique de l'espace de segment Cette méthode permet de gérer l'espace libre des segments de base de données. Le suivi de la quantité d'espace libre et utilisé dans les segments s'effectue à l'aide de bitmaps et non de listes de blocs libres. Cette méthode : facilite la gestion permet une meilleure utilisation de l'espace améliore les performances des opérations INSERT simultanées Restriction : Elle ne peut pas être utilisée pour les tablespaces qui contiendront des LOB.
Gestion automatique de l'espace de segment Les segments bitmap contiennent un bitmap qui indique le statut de chaque bloc dans le segment par rapport à son espace disponible. La représentation des blocs est contenue dans un ensemble de blocs particulier, appelés "blocs bitmap" (BMB). Lorsque vous insérez une ligne, le serveur recherche dans la représentation des blocs un bloc disposant d'un espace suffisant. Lorsque la quantité d'espace disponible d'un bloc varie, le nouveau statut de ce dernier est indiqué dans le bitmap.
Configurer la gestion automatique de l'espace de segment Vous ne pouvez activer la gestion automatique de l'espace de segment qu'au niveau tablespace pour les tablespaces gérés localement. Une fois qu'un tablespace est créé, les spécifications s'appliquent à tous les segments créés dans le tablespace. CREATE TABLESPACE data02 DATAFILE ‘/u01/oradata/data02.dbf’ SIZE 5M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 64K SEGMENT SPACE MANAGEMENT AUTO;
Gestion manuelle des blocs de données Permet de configurer manuellement les blocs de données à l'aide de paramètres tels que : PCTFREE PCTUSED FREELIST Seule méthode disponible dans les versions antérieures d'Oracle
Utilisation de l'espace de bloc PCTFREE=20 PCTUSED=40 Insertions Insertions 80 % (en dehors de la liste de blocs libres) 1 2 Insertions 80 % Insertion (dans la liste de blocs libres) 40 % 3 4
Obtenir des informations sur le stockage Pour obtenir des informations sur le stockage, interrogez les vues suivantes : DBA_EXTENTS DBA_SEGMENTS DBA_TABLESPACES DBA_DATA_FILES DBA_FREE_SPACE
Synthèse Ce chapitre vous a permis d'apprendre à : utiliser des tablespaces pour : séparer des segments afin de faciliter l'administration gérer l'allocation d'espace utilisateur classer les segments par catégories en fonction du type d'information qu'ils contiennent définir des tailles d'extent à l'aide de la clause de stockage gérer l'utilisation de l'espace de bloc