Structure de stockage et relations Copyright © Oracle Corporation, 2001. Tous droits réservés. 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 9-2 Copyright © Oracle Corporation, 2001. Tous droits réservés. Structure de stockage et relations Base de données PROD TABLESPACES SYSTEM FICHIERS DE DONNEES DISK1/SYS1.dbf SEGMENTS Table D.D. USER_DATA DISK2/ USER1.dbf S_DEPT S_EMP Index D.D. DISK3/ USER2.dbf S_DEPT S_EMP (suite) RBS DISK1/ ROLL1.dbf RBS1 RBS2 FIRST_N AME RBS1 RBS2 (suite) (suite) Seg RB Seg RB DISK1/ TEMP.dbf Temp Index Seg Seg Seg Seg Seg données données données Index RB Seg Data Seg Index Seg RB Seg RB EXTENTS 1 2 1 2 1 2 1 1 2 2 1 DISPO 1 1 2 2 1 BLOCS DE DONNEES Oracle 9-3 TEMP Copyright © Oracle Corporation, 2001. Tous droits réservés. Seg Temp Types de segment 9-4 Table Partition de table Cluster Index Copyright © Oracle Corporation, 2001. Tous droits réservés. Types de segment 9-5 Table organisée en index Partition d'index Segment d'annulation Segment temporaire Copyright © Oracle Corporation, 2001. Tous droits réservés. Types de segment Segment LOB Table imbriquée Segment de bootstrap 9-6 Copyright © Oracle Corporation, 2001. Tous droits réservés. Priorité des clauses de stockage Valeur Oracle par défaut Tablespace Segment 9-7 Copyright © Oracle Corporation, 2001. Tous droits réservés. 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é – modifié – vidé 9-8 Copyright © Oracle Corporation, 2001. Tous droits réservés. Extents utilisés et extents libres Fichier de données En-tête de fichier 9-9 Extent utilisé Extent libre Copyright © Oracle Corporation, 2001. Tous droits réservés. 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 9-10 Copyright © Oracle Corporation, 2001. Tous droits réservés. 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. 9-11 Copyright © Oracle Corporation, 2001. Tous droits réservés. 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 9-12 Copyright © Oracle Corporation, 2001. Tous droits réservés. 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 9-13 Copyright © Oracle Corporation, 2001. Tous droits réservés. 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 ... 9-14 Copyright © Oracle Corporation, 2001. Tous droits réservés. 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. 9-15 Copyright © Oracle Corporation, 2001. Tous droits réservés. Contenu d'un bloc de base de données En-tête Espace libre Données 9-16 Copyright © Oracle Corporation, 2001. Tous droits réservés. Paramètres d'utilisation de l'espace de bloc INITRANS MAXTRANS PCTFREE PCTUSED 9-17 Copyright © Oracle Corporation, 2001. Tous droits réservés. 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 9-18 Copyright © Oracle Corporation, 2001. Tous droits réservés. 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. 9-19 Copyright © Oracle Corporation, 2001. Tous droits réservés. 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. 9-20 Copyright © Oracle Corporation, 2001. Tous droits réservés. 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. CREATE TABLESPACE data02 DATAFILE ‘/u01/oradata/data02.dbf’ SIZE 5M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 64K SEGMENT SPACE MANAGEMENT AUTO; • Une fois qu'un tablespace est créé, les spécifications s'appliquent à tous les segments créés dans le tablespace. 9-21 Copyright © Oracle Corporation, 2001. Tous droits réservés. 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 9-22 Copyright © Oracle Corporation, 2001. Tous droits réservés. Utilisation de l'espace de bloc PCTFREE=20 PCTUSED=40 Insertions Insertions 80 % (en dehors de la liste de blocs libres) 1 Insertions 2 80 % 40 % 3 9-23 Insertion (dans la liste de blocs libres) 4 Copyright © Oracle Corporation, 2001. Tous droits réservés. 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 9-24 Copyright © Oracle Corporation, 2001. Tous droits réservés. 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 9-25 Copyright © Oracle Corporation, 2001. Tous droits réservés.