Gestion de l’espace disque et des fichiers

Gestion de l’espace disque et des fichiers

La gestion des tablespaces en mode LOCAL

Depuis Oracle9i, une nouvelle possibilité est apparue pour gérer les blocs et les segments. Auparavant, le paramétrage précis de la clause storage liée aux tablespaces, tables, index, etc. vous permettait de « piloter » Oracle pour optimiser l’allocation des blocks et des segments. Même si les paramètres de gestion d’espace étaient modifiables par la suite, c’était une opération délicate à assurer car elle nécessitait de connaître la taille des objets et de prévoir leur évolution au moment de leur création. Maintenant, Oracle propose de gérer automatiquement tout ce fonctionnement interne. Le choix du nouveau mode de gestion ou de l’ancien est fait lors de la création du tablespace et tous les objets qu’il accueillera obéiront à ce mode de gestion. L’ancien mode s’appuie sur le dictionnaire de données, le nouveau mode sur une gestion locale au sein du tablespace. C’est pourquoi l’ordre CREATE TABLESPACE a été modifié. Les options EXTENT MANAGEMENT LOCAL et EXTENT MANAGEMENT DICTIONARY sont apparues : CREATE TABLESPACE test1 DATAFILE ‘c:\oracle\oradata\TEST\test1_01.dbf’ SIZE 20M EXTENT MANAGEMENT LOCAL ; CREATE TABLESPACE test2 DATAFILE ‘c:\oracle\oradata\TEST\test2_01.dbf’ SIZE 20M EXTENT MANAGEMENT DICTIONARY =Briard.Livre Page 613 Mardi, 21. février 2006 1:46 13 Administration d’Oracle 10g PARTIE V 614 DEFAULT STORAGE ( INITIAL 100 K NEXT 100 K MINEXTENTS 2 MAXEXTENTS 100 PCTINCREASE 0 ); Différences entre la gestion locale et dictionnaire Apparue discrètement avec Oracle8i ; la gestion locale est généralisée avec Oracle 10g. Auparavant, la gestion interne d’allocation d’espace était centralisée au sein du dictionnaire de données de chaque base. La gestion locale stocke tous les aspects d’allocation de segments à l’intérieur de chaque tablespace. Les informations sont codées au format bitmap dans l’en-tête de chaque tablespace. Cette évolution apporte les avantages suivants : • La gestion locale (interne à chaque tablespace) facilite les opérations lors du déplacement de tablespaces de base à base. Les accès au dictionnaire de données sont limités. • Le travail de l’administrateur Oracle est facilité, les fastidieuses opérations d’allocation d’espace ne sont plus nécessaires. • La gestion centralisée dans le dictionnaire imposait des écritures dans les tables correspondantes lors de chaque allocation ou libération d’espace. L’écriture de données bitmap est plus rapide et évite ce goulot d’étranglement. Oracle peut supporter encore plus d’utilisateurs. • Lors de la libération d’espace, le stockage dans les tables du dictionnaire ne permettait pas à Oracle de détecter que deux espaces libres contigus pouvaient être agrégés. Cette opération devait être effectuée par l’ordre ALTER TABLESPACE… COALESCE. La gestion locale automatise cette opération. • Vous n’avez plus besoin de paramétrer la clause storage pour les tablespaces, tables et index. Cette opération est automatique en gestion locale. • Vous pouvez maintenant déplacer un tablespace d’une base pour la raccrocher à une autre. C’est très utile pour créer très rapidement un environnement de test. La composition du tablespace étant locale, elle se déplace en même temps que le tablespace.

Les options des tablespaces en gestion locale

Lorsqu’un tablespace local est créé, le mode de gestion d’espace pour l’allocation de nouveaux segments peut être précisé : Si aucune indication n’est précisée, Oracle choisi par défaut le mode LOCAL. Seul le tablespace SYSTEM doit obligatoirement être en gestion DICTIONARY. Une fois créé, il est impossible de modifier le mode de gestion d’un tablespace. Ces options ne s’appliquent qu’aux tablespaces en mode EXTENT MANAGEMENT LOCAL. =Briard.Livre Page 614 Mardi, 21. février 2006 1:46 13 Gestion de l’espace disque et des fichiers CHAPITRE 23 615 • AUTOALLOCATE : c’est l’option par défaut. Oracle gère automatiquement toutes les allocations d’espace dans le tablespace. Elles peuvent être de tailles différentes ; • UNIFORM SIZE : toute allocation d’espace sera de cette taille (minimum 1 Mo). Le tablespace TEMPORARY utilise cette option par défaut. Le tablespace UNDO ne peut pas l’utiliser. Cette option est optimale en cas de fréquentes créations / suppressions de tables et d’index. Vous êtes certain que l’espace alloué ou désalloué sera utilisable par n’importe quel autre objet. Le remplissage du tablespace est optimum. Pour chaque cas, la syntaxe utilisée est alors ; CREATE TABLESPACE test1 DATAFILE ‘c:\oracle\oradata\TEST\test1_01.dbf’ SIZE 20M EXTENT MANAGEMENT LOCAL AUTOALLOCATE; CREATE TABLESPACE test1 DATAFILE ‘c:\oracle\oradata\TEST\test1_01.dbf’ SIZE 20M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M; Les options précédentes concernent l’allocation d’espace, c’est-à-dire lorsque des objets sont créés ou augmentent de taille. Un autre aspect que doit gérer une base de données est la récupération d’espace libéré. C’est le cas lors de la suppression d’enregistrements dans une table et de l’impact sur ses index. Pour un tablespace en mode local, la gestion des espaces libres peut être manuelle ou automatique. Si elle est manuelle, des seuils sont définis. Ils indiquent à Oracle quand il doit effectuer des regroupements d’espace contigus. Si elle est automatique, aucun seuil n’est à préciser. Par défaut, Oracle propose l’ancienne option manuelle tout en recommandant fortement d’utiliser l’option automatique. D’où vient cette contradiction ? Actuellement, les données de type LOB ne peuvent être utilisées dans un tablespace local dont la gestion de l’espace libre est automatique. Oracle propose donc par défaut l’option la plus générale, celle qui permet de stocker tous les types de données possibles. Cette limite sera certainement levée dans une future version. Si vous avez des doutes concernant le type de données que contiendra le tablespace, utilisez l’ancien mode de gestion manuelle car il a fait ses preuves. Si vous êtes certain qu’aucune donnée de type LOB ne sera dans le tablespace, Oracle recommande le mode automatique. Dans le cas d’une gestion manuelle, les valeurs PCTUSED, FREELIST, FREELISTS GROUPS peuvent être précisées. Nous vous recommandons de ne pas les modifier et de laisser les valeurs par défaut. Comme cette option MANUAL est actuellement choisie par défaut, vous pouvez aussi tout simplement ignorer cette clause ; En gestion locale des tablespaces, nous vous recommandons d’utiliser l’option UNIFORM SIZE. Si vous voulez piloter l’allocation d’espace, utilisez des tablespaces en mode AUTOALLOCATE, voire DICTIONARY car la clause storage est adaptée à cet usage. =Briard.Livre Page 615 Mardi, 21. février 2006 1:46 13 Administration d’Oracle 10g PARTIE V 616 CREATE TABLESPACE test1 DATAFILE ‘c:\oracle\oradata\TEST\test1_01.dbf’ SIZE 20M EXTENT MANAGEMENT LOCAL AUTOALLOCATE SPACE MANAGEMENT MANUAL ; En cas d’une gestion automatique des espaces libres, la syntaxe est alors : CREATE TABLESPACE test1 DATAFILE ‘c:\oracle\oradata\TEST\test1_01.dbf’ SIZE 20M EXTENT MANAGEMENT LOCAL AUTOALLOCATE SPACE MANAGEMENT AUTO ; Comment déterminer le mode de gestion des tablespaces ? Le mode de gestion des différents tablespaces est accessible depuis la vue SYS.DBA _TABLESPACES. select tablespace_name, contents, extent_management from dba_tablespaces TABLESPACE_NAME CONTENTS EXTENT_MANAGEMENT —————————— ——— —————– SYSTEM PERMANENT DICTIONARY UNDOTBS UNDO LOCAL DRSYS PERMANENT LOCAL EXAMPLE PERMANENT LOCAL INDX PERMANENT LOCAL TEMP TEMPORARY LOCAL TOOLS PERMANENT LOCAL USERS PERMANENT LOCAL 

La gestion des objets des tablespaces en mode DICTIONARY

Ce paragraphe décrit en détail le travail que l’administrateur Oracle doit effectuer pour un tablespace créé avec le mode EXTENT MANAGEMENT DICTIONARY. Vous pouvez l’ignorer si vous décidez d’utiliser des tablespaces en gestion locale. Nous vous conseillons pourtant de le lire car il présente les actions effectuées automatiquement par Oracle avec la gestion LOCAL. C’est aussi le mode de fonctionnement obligatoire du tablespace SYSTEM. Grâce aux tablespaces à gestion locale, Oracle a supprimé la cause de nombreuses opérations de réorganisation de données. Les administrateurs Oracle ont ainsi supprimé les nuits ou les week-ends passé à effectuer ces tâches. Profitez-en ! Oracle recommande fortement de gérer les tablespaces avec le mode LOCAL, vu précédemment. Le mode DICTIONARY est obligatoire pour le tablespace SYSTEM. Ce doit être le seul dans ce cas. Nous conservons la description du mode DICTIONARY, car c’était la seule possibilité des versions précédant Oracle 9i. Vous serez à même de juger la simplicité de ce nouveau mode de gestion par rapport à l’ancien. =Briard.Livre.

Création d’un tablespace en mode DICTIONARY

Un tablespace créé en mode de gestion dictionnaire doit contenir la clause EXTENT MANAGEMENT DICTIONARY. CREATE TABLESPACE test2 DATAFILE ‘c:\oracle\oradata\TEST\test2_01.dbf’ SIZE 20M EXTENT MANAGEMENT DICTIONARY DEFAULT STORAGE ( INITIAL 100 K NEXT 100 K MINEXTENTS 2 MAXEXTENTS 100 PCTINCREASE 0 ); La clause storage fixe les valeurs par défaut qui seront reprises pour tous les segments de table et d’index créés dans le tablespace. La clause STORAGE Oracle gère de façon identique les extents des segments de données et d’index. La clause de STORAGE permet de piloter le mécanisme des extents d’un segment. Par exemple, pour la création de la table EMP, nous pouvons utiliser la syntaxe suivante : CREATE TABLE emp ( … liste des colonnes de la table… … ) STORAGE ( INITIAL 100K NEXT 100 K PCTINCREASE 0 ) TABLESPACE user_data; • INITIAL précise la taille de la première extension. Tout segment possède une taille initiale à sa création. • NEXT précise la taille de la deuxième extension. Lorsque la première est remplie, Oracle alloue automatiquement une seconde de NEXT octets. Toutes les extensions futures se fondent sur cette valeur. • PCT_INCREASE est un paramètre que nous positionnons toujours à zéro, mais que certaines personnes utilisent. Ce pourcentage dirige l’incrément de taille des extensions suivantes. Par exemple, INITIAL = 1 Mo, NEXT = 1 Mo et PCT_INCREASE = 50 %. La première extension sera de 1 Mo, la deuxième de 1 000 + 50 % (1 000) = 1,5 Mo, la troisième de 2,25 Mo, etc. Calculez la taille nécessaire pour la vingtième extension ! • TABLESPACE indique le tablespace cible dans lequel sera créée la table EMP. La clause STORAGE peut être spécifiée lors de la création du segment ou modifiée après. Dans ce cas, elle n’agira pas sur les segments déjà créés, mais uniquement sur les segments futurs. =Briard.Livre  Quelle que soit l’extension, elle ne peut être d’une taille supérieure à la plus grande place libre contiguë, au sein du tablespace cible. Même si vous disposez d’une taille libre importante au total, vous pouvez être bloqué si elle n’est pas contiguë. La vérification de l’espace libre contigu dans un tablespace est abordée dans ce chapitre, au paragraphe traitant des tablespaces.

Formation et coursTélécharger le document complet

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *