4 - Tablespace

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 62

Tablespaces et

fichiers de données
Vue d’ensemble : Tablespace

Base de données
●Rappel : tablespace :
- C’est une unité logique de stockage
Tablespace
- Chaque "tablespace" correspond à une
réservation d'espace dans la BD. Il contient un
Fichiers
ou plusieurs fichiers de données.
de données

- Les fichiers de données sont les structures


physiques qui stockent les données.

== > Oracle stocke les données logiquement dans


les tablespaces et physiquement dans les fichiers
de données

== > la somme des tailles des


fichiers de données d’un tablespace correspond à la capacité de
stockage ce tablespace. 2
Tablespace

● Un fichier appartient à un et un seul tablespace.

● Le tablespace est l’unité de base de nombreuses tâches d’administration :


La majorités des opérations d’administrations relatives au stockage
s’effectuent au niveau des tablespaces

● Les tablespaces permettent de simplifier certaines tâches d’administration.

Un tablespace peut regrouper tous les objets de même type ou d’une


application.

● Dans un tablespace le stockage est organisé en segments

3
Segment

● Segment : l’espace utilisé par une structure logique. Lors de sa création, Oracle
lui alloue un ou plusieurs extensions ( extent).

● Types de segments :
- segment de données = table
- segment d'index = index
- segment d'annulation = rollback segment, qui stocke l'image avant
modification des données
- segment temporaire , utilisé en interne par Oracle, si la zone mémoire de
tri est insuffisante

● Un segment est composé d’extent (extensions) : de l’espace provenant des


extents libres d’un tablespace est attribué à un segment lors de sa création

● Des extents sont ajoutés lorsqu’un segment nécessite davantage d’espace.

4
Extent

● Extent : Unité logique permettant d’allouer de l’espace à une base de données.


Un extent est constitué d’un ensemble de bloc de données permettant de
stocker des données.

● Mode de gestion :
L’extent peut être gérer de deux façon :
- par le dictionnaire : les informations sur les extents libre et alloués sont
stockés dans des tables du dictionnaire
➔ pénalise les performances

- localement : les information relatives à la gestion de l’espace (extents


libre ou alloués ) sont enregistrées dans les entêtes des
fichiers de données du tablespace

5
Extent

● Des extents sont alloués à un segment :


o à la création du segment
o à l’extension du segment
o à la modification d’un segment

● Un extent est libéré lorsque le segment est :


o Supprimé
o Modifié les extents libérés sont ajoutés au pool
o Vidé d’extents libres du tablespace
o Redimensionné automatiquement

6
6
Types de tablespace
● Une base de données possède toujours au minimum une tablespace SYTEME
et SYSEAUX (depuis version 10g) :
- Le tablespace SYSTEM :
utilisateurs
Ne doivent pas contenir de données

- est créé en même temps que la base de données


- contient le dictionnaire de données,
-contient le segment d'annulation SYSTEM
-ne doit pas contenir de données utilisateur, bien que cela soit
possible
- Le tablespace SYSAUX (SYSTEM Auxiliaire) :
- apparu dans la version 10
- contient les données de certains composants oracle
● En complément, deux tablespaces particulières :
- tablespace d’annulation (tablespace UNDO)
- tablespace temporaire : ne contient que des objets temporaires, tels que
les segments de tri créés par la clause
ORDER BY
.

7
Types de tablespace

Des tablespace spécifiques (tablespaces permanentes) seront créés pour des données
utilisateurs (applicatives). Ils permettent :

 Isoler des données du dictionnaire Oracle des données applicatives.

 Isoler les données de plusieurs applications fonctionnant dans la même BD.

 faciliter l'administration de l'espace : gère la quantité d'espace allouée aux


utilisateurs == > L'établissement de quotas pour limiter l'expansion des données
par un utilisateur

8
Types de tablespace

● En version Oracle 10 :
- apparition de la notion de tablespace BIGFILE :
Elle est composé d’un seul fichier donnée qui peut être volumineux (2^32
blocs Oracle = 4 milliards de blocs)

- le tablespace traditionnel est appelé tablespace SMALLFILE :


peut contenir plusieurs fichiers de données (jusqu’a 1022) de taille plus
limitée (2^22 blocs Oracle = 4millions de blocs)

- Dans la version Oracle 10 pour créer un tablespace on spécifie si c’est


BIGFILLE ou SMALLFILE.
Si cette clause est omise le type du tablespace créer et celui par défaut

● Pour connaitre si un tablespace est bigfile ou smallfile :


== > la vue v$tablespace : le champ ’’bigfile’’ :
SELECT name, bigfile FROM v$tablespace;
9
Type de tablespace par défaut

● Définir le type de tablespace par défaut :


- soit à la création de la base :
commande : SET DEFAULT TABLSPACE
après la commande CREATE DATABASE

- soit ultérieurement avec la commande :


ALTER DATABASE SET DEFAULT [SMALLFILE|BIGFILE] TABLESPACE

● Le type par default peut être consulter dans la vue DATABASE_PROPERTIES :

SELECT property_value FROM DATABASE_PROPERTIES


WHERE property_name =‘DEFAULT_TBS_TYPE’;

10
Directives

● Les principaux directives :


- Utiliser plusieurs tablespaces pour ranger les différents éléments par type :
séparer les données de l’application des données du dictionnaire Orcale,
séparer les données applicatives si la base abrite plusieurs applications …
== > souplesse d’administration et une meilleure optimisation de
performances

- Le tablespace SYSTEM et SYSEAUX ne doivent pas contenir des données


utilisateur

- Créer au minimum :
* un tablespace temporaire (pour les segments temporaire)
* un tablespace pour les segments d’annulation (tablespace d’annulation)
* un tablespace pour les tables
* un tablespace pour les index

- Répartir les fichiers de données de ces tablespaces sur des disques différents
si possible
11
Statut de tablespace

● statut d’une tablespace :


- ONLINE ou OFFLINE
OFFLINE : utile pour rendre certaines données temporairement
inaccessibles
exemple : si la base abrite plusieurs application, on peut
rendre les données d’une application inaccessible
temporairement

== > le tablespace système doit toujours être ONLINE

- READ WRITE ou READ ONLY

● Consultez la vue DBA_TABLESPACE pour connaitre le statut de la tablespace :


== > SELECT status, tablespace_name FROM DBA_TABLESPACEs;

12
Création d’un tablespace

● La commande : CREATE TABLESPACE


CREATE TABLESPACE nom_tablespace
[DATAFILE spécification_fichier]
[clause_gestion_extent]
[clause_segment_management]
[MINIMUM EXTENT valeur [K|M]]
→ valide si le tablespace
[DEFAULT clause_stockage ] est géré par le dictionnaire
[BLOCKSIZE valeur [K]]
[ONLINE|OFFLINE]
;

13
13
Création d’un tablespace

◘ Spécification_fichier = ‘nom_fichier + chemin du fichier’ SIZE valeur


[K|M|G|T]]] [clause_auto_extention]
→ ici SIZE valeur : taille initiale du fichier
◘ clause_auto_extention =
AUTOEXTEND OFF | AUTOEXTEND ON [NEXT valeur]
[MAXSIZE UNLIMETED|valeur K|M|G|T]]
si cette clause n’est pas spécifié == > AUTOEXTEND OFF
→ AUTOEXTEND : indique que le fichier de données peut (ON) ou non
(OFF)grossir une fois que tout l’espace initialement
alloué est utilisé
→ NEXT : espace minimum alloué au fichier lors de l’extension
→ MAXSIZE valeur: taille max du fichier(MAXSIZE UNLIMETED si taille
non limitée)

14
14
Création d’un tablespace

◘ clause_gestion_extent : Définit le mode de gestion des extent à


l’intérieur de tablespace
Syntaxe :
EXTENT MANAGEMENT DICTIONARY |LOCAL {AUTOALLOCATE |UNIFORM [SIZE valeur
[K|M|G|T]]}
== > Oracle recommande : EXTENT MANAGEMENT LOCAL ..

AUTOALLOCATE : Indique que le tablespace est géré par le système (les utilisateurs ne peuvent pas définir
de taille d'extent)
UNIFORM : indique que le tablespace est géré à l'aide d’extensions (extents) d'une taille uniforme .
== > les extension ont une taille uniforme définie par la clause size. Si la clause SIZE n’est
pas spécifiée, la taille par défaut est 1Mo

15
Création d’un tablespace

◘ clause_segement_management : définit le mode de gestion de l’espace libre


des segments. Valide que pour un tablespace géré localement
syntaxe : SEGMENT SPACE MANAGEMENT {MANUAL | AUTO}

◘ MINIMUM EXTENT : taille min des extenssions dans le tablespace. Toutes


les extenssions alloués dans le tablespace auront une
taille multiple de la taille min.
== > valide pour un tablespace géré par le dictionnaire
◘ clause_stockage : stockage par défaut pour les segments crées sans clause de
stockage. Valide que pour les tablespace géré par le
dictionnaire

◘ BLOCKSIZE définit la taille du bloc utilisée par le tablespace (valeurs autorisé


2K, 8k, 16k, et 32 k). La valeur par défaut est la taille de bloc standard
db_block_size.
Pour utiliser une taille de bloc non standard pour un tablespace vous devez
configurer un pool pour cette taille dans le Buffer cace grâce à un des paramètres
DB_nk_CACHE_SIZE : le paramètre DB_CACHE_SIZE et au moins un paramètre DB_nK_CACHE_SIZE
(n=2, 4, 8,16 ou 32) doivent être définis et la valeur que vous définissez dans la clause BLOCKSIZE doit
être identique à celle d'un paramètre DB_nK_CACHE_SIZE.

16
16
Création d’un tablespace

Exemple :
1- avec gestion locale uniforme des extensions :
CREATE TABLESPACE data1
DATAFILE ‘C:\oracle\product\10.2.0\oradata\orcl\data010.dbf’ SIZE 500M
AUTOEXTEND ON NEXT 100M MAXSIZE 800M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 10 M
SEGMENT SPACE MANAGEMENT AUTO;

2- avec gestion locale uniforme des extensions :


CREATE TABLESPACE data
DATAFILE ‘ C:\oracle\product\10.2.0\oradata\orcl\data01.dbf SIZE 500M
AUTOEXTEND ON NEXT 100M MAXSIZE 800M
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
SEGMENT SPACE MANAGEMENT AUTO;

17
Création d’un tablespace

● Remarque : Dans le cas d’un tablespace géré localement avec une gestion
uniforme des extensions, les extensions doivent contenir au min cinq blocs

Si non on aura l’erreur suivante :

18
18
Tablespace permanent par défaut

● Possibilité de spécifier un tablespace permanent par défaut depuis la version 10


● Objectif : simplifier la gestion des utilisateurs
● Ce tablespace est affecté aux utilisateurs crées lorsque la clause DEFAULT
TABLESPACE de l’ordre SQL : CREATE USER est omise
● La spécification de tablespace permanent par défaut peut se faire lors de création de
la base de donnée dans l’ordre SQL : CREATE DATABASE ou après

19
Tablespace permanent par défaut

1- Spécification lors de création de la base de donnée dans l’ordre SQL


CREATE DATABASE
Syntaxe :
CREATE DATABASE
…..
DEFAULT TABLESPACE nom
DATAFILE spécification_fichier
clause_extent_management
Exemple :
CREATE DATABASE
….
DEFAULT TABLESPACE deftbs
DATAFILE ‘c: …\deftbs01.dbf’ SIZE 10 M
AUTOEXTEND ON NEXT 10 M MAXSIZE 500M
EXTENT MANAGEMENT LOCAL AUTOALLOCATE

20
20
Tablespace permanent par défaut

● Connaitre le nom du tablespace permanent par défaut :


== > intérogez la vue database_properties
SELECT property_value FROM database_properties
WHERE property_name=‘DEFAULT_PERMANENT_TABLESPACE’;

21
Tablespace permanent par défaut

●2- Spécification de tablspace permanent par défaut après la création de la base :


1- Le tablespace doit exister si non le créer :
== > CREATE TABLESPACE …
2- Le définir comme tablespace permament :
syntaxe :
ALTER DATABASE DEFAULT TABLESPACE nom

Exemple :

22
Etendre ou redimensionner un tablespace

● Un tablespace peut s'étendre (peut être redimentionner) :


- Soit en modifiant la taille d'un fichier de données :
• manuellement à l'aide de ALTER DATABASE
• automatiquement à l'aide de AUTOEXTEND
- Soit en ajoutant un fichier de données à l'aide de ALTER TABLESPACE

23
Modifier la taille d'un fichier de données

● La modification de la taille se fait avec la clause ALTER DATABASE


Syntaxe :
* tout type de tablespace :
ALTER DATABASE
DATAFILE ‘nom_complet’ RESIZE valeur;

Exemple :
ALTER DATABASE
DATAFILE ‘ C:\oracle\product\10.2.0\oradata\orcl\data02.dbf ‘ RESIZE 200M;

* tablespace bigfile (oracle version 10):


ALTER TABLESPACE nom RESIZE valeur;

● L’augmentation de la taille d'un fichier de données requiert l'utilisation de l'espace


libre d'une base de données. 24
Modification de la clause AUTOEXTEND
Activer/désactiver l'extension automatique
des fichiers de données

● Il faut spécifier l’extension automatique lors de la création d’un tablespace ou


d’un fichier : AUTOEXTEND ON
● On peut activer ou désactiver l'extension automatique des fichiers de données
existants
Syntaxe :
ALTER DATABASE
DATAFILE ‘nom_fichier’ clause_autoextend;
Exemple :
1- activation de autoextend ou modification de la clause autoextend
ALTER DATABASE
DATAFILE ‘ C:\oracle\product\10.2.0\oradata\orcl\data02.dbf
AUTOEXTEND ON NEXT 200M MAXSIZE 800M;
2- désactivation de autoextend
ALTER DATABASE
DATAFILE ‘ C:\oracle\product\10.2.0\oradata\orcl\data02.dbf
AUTOEXTEND OFF;

25
Ajouter des fichiers de données
à un tablespace

● Augmente l'espace alloué à un tablespace en ajoutant des fichiers de données.

● La clause ADD DATAFILE permet d'ajouter un fichier de données.

Syntaxe :
ALTER TABLESPACE nom
ADD DATAFILE spécification_fichier;

Exmeple :
ALTER TABLESPACE data
ADD DATAFILE ‘ C:\oracle\product\10.2.0\oradata\orcl\data02.dbf ‘SIZE 100M
AUTOEXTEND ON
NEXT 20M
MAXSIZE 500M

26
Renommer un tablespace

● Renommer un tablespace (version 10):


syntaxe :
ALTER TABLESPACE ancien_nom RENAME TO nouveau_nom ;

PS : on peut pas renommer les tablespace SYSTEM, SYSEAUX ainsi que les
tablespace OFFLINE

27
Tablespaces accessibles en lecture seule
ou lecture écriture

● Le mode lecture seul :


Ce mode n'autorise pas les opérations d'écriture dans le tablespace.
● placer un tablespace en lecture seule :
ALTER TABLESPACE nom {READ ONLY | READ WRITE};

28
Mettre un tablespace hors ligne

● Désactiver (OFFLINE) un tablespace peut être nécessaire pour effectuer


certaines opérations d’administration
● Tablespaces ne pouvant pas être mis hors ligne :
• Tablespace SYSTEM
• Tablespaces contenant des segments d'annulation actifs
• Tablespace TEMPORARY par défaut
● Mettre un tablespace hors ligne :
ALTER TABLESPACE nom OFFLINE;

● Mettre un tablespace en ligne :


ALTER TABLESPACE nom ONLINE;

● Consultez la vue DBA_TABLESPACES pour connaitre le statut de la tablespace :


== > SELECT status, tablespace_name FROM DBA_TABLESPACES;
29
Renommer ou déplacer des fichiers de données

● On peut utiliser soit ALTER TABLESPACE ou ALTER DATABASE


1- ALTER TABLESPACE
ALTER TABLESPACE nom RENAME
DATAFILE ‘ancien nom'
TO ‘nouveau nom';
– Etapes :
• La base de données doit être ouverte
• Mettez le tablespace hors ligne.
• Les fichiers de données cible doivent exister :
Par une commande du système d'exploitation , renommer,
déplacer ou copier les fichiers.
• Exécutez la commande ALTER TABLESPACE RENAME DATAFILE.
• Repassez le tablespace en ligne.
• Au besoin, utilisez la commande appropriée du système
d'exploitation pour supprimer le fichier.

30
Renommer de fichier de données : exemple

- Mettre letablespace offline

- Le fichier cible doit exister : renommer l’ancien fichier par une commande système

- Exécutez la commande ALTER TABLESPACE RENAME DATAFILE:

31
Renommer ou déplacer des fichiers de données

2- ALTER DATABASE
• Le tablespace doit être hors ligne ou la base en état MOUNT
• Les fichiers de données cible doivent exister.
• Syntaxe :
ALTER DATABASE
RENAME FILE ‘ancien nom'
TO ‘nouveau nom‘;
- Méthode 1 : base en état MOUNT - Méthode 2 : tablespace hors ligne
• Arrêtez la base • Mettez le tablespace hors ligne
• Utilisez la commande de système d'exploitation • Utilisez la commande de système
appropriée pour déplacer (ou renommer) les d'exploitation appropriée pour déplacer (ou
fichiers renommer) les fichiers
• Démarrez la base en mode MOUNT (STARTUP • Exécutez la commande ALTER DATABASE
MOUNT) • Repassez le tablespace en ligne
• Exécutez la commande ALTER DATABASE • Au besoin, utilisez la commande appropriée
• Ouvrez la base (alter database open;) du système d'exploitation pour supprimer le
• Au besoin, utilisez la commande appropriée du fichier.
système d'exploitation pour supprimer le fichier.
32
Renommer un fichiers de données : exemple

Exemple de changement de nom d’un fichier avec la commande ALTER DATABASE


méthode 2:

33
Supprimer un fichiers de données : exemple

Commande ALTER TABLESPACE noTablespace DROP DATAFILE chemin

Ajouter un fichier :

Suppression d’un fichier :


On peut pas
supprimer le
1er fichier avec
cette méthode

34
OFFLINE DROP

- Avec la commande alter database datafile …

Après cette commande on vois toujours le fichier mais en status ’’RECOVER ’’ :

On fait un recover :

35
OFFLINE DROP

- On ne peut pas créer des objets dans un tablespace OFFLINE == > On passe le tablespace
ONLINE :

36
Supprimer un tablespace

● Syntaxe :
DROP TABLESPACE nom [INCLUDING CONTENTS [AND DATAFILES] CASCADE
CONSTRAINTS]];

- INCLUDING CONTENTS : necessaire si le tablespace n’est pas vide => forcer la


suppression des segments qui y sont stockés.
- AND DATAFILES : permet de supprimer les fichiers physiques du tablespace
- CASCADE CONSTRAINTS : supprime les contraintes d'intégrité référentielle

Exemple :
DROP TABLESPACE data INCLUDING CONTENTS AND DATAFILES
● Pas de ROLLBACK, seule solution est de repartir de sauvegade

● Une tablespace ne peut pas être supprimer :


- s’il s’agit d’un tablespace system et tablespace permanent par défaut
- s'il possède des segments actifs 37
Tablespace temporaire (TEMPORARY)

● Ils sont utilisés pour les opérations de tri :


exemple clause order by : oracle tente de faire le tri dans la PGA du processus
serveur qui exécute la requête. Si le tri ne tient pas en mémoire, Oracle le découpe
en morceaux et trie chaque morceau individuellement sur disque dans des
segments temporaire => d’où l’utilité de créer un tablespace temporaire dédié
● Ils ne peuvent pas contenir d'objets permanents

● La gestion locale des extents est recommandée

● Exemple :
CREATE TEMPORARY TABLESPACE temp
TEMPFILE ‘…/temp01.dbf' SIZE 500M
AUTOEXTEND ON NEXT 10M MIXESIZE 1G;

TEMPORARY : indique que le tablespace ne contiendra que des objets temporaires, tels
que les segments de tri implicite( créés par la clause ORDER BY par exemple).

38
Tablespace temporaire par défaut

● Un tablespace temporaire n’est réellement utilisé que s’il est affecté à un user.

● Le tablespace temporaire par défaut est affecté à tous les utilisateurs créés sans la
clause TEMPORARY TABLESPACE
● Possibilité de définir un tablespace temporaire par défaut :
1- soit à la création de la base de données :
2- soit après

● En cas de modification du tablespace TEMPORARY par défaut, tous les


utilisateurs affectés à ce tablespace sont réaffectés au nouveau tablespace par
défaut.

39
Définir le tablespace TEMPORARY par défaut

● 1- Définition d’un tablespace temporaire par défaut à la création de


la base de données :
CREATE DATABASE
syntaxe :
DEFAULT TEMPORARY TABLESPACE nom
TEMPFILE spécification_fichier
[ EXTENT MANAGEMENT LOCAL] [UNIFORM [SIZE valeur]]
exemple :
CREATE DATABASE …
DEFAULT TEMPORARY TABLESPACE nomTemp
TEMPFILE ‘c:\....\temp01.dbf’ SIZE 100M
AUTOEXTEND NEXT ON 10M MAXSIZE 1024M;

40
40
Définir le tablespace TEMPORARY par défaut

● 2- Définition d’un tablespace temporaire par défaut après la création de la BD :


Syntaxe :
CREATE TEMPORARY TABLESPASE nomTemp …
puis
ALTER DATABASE
DEFAULT TEMPORARY TABLESPACE nomTemp;

exemple :
CREATE TEMPORARY TABLESPACE nomTemp
TEMPFILE ‘…/temp01.dbf' SIZE 500M
AUTOEXTEND ON NEXT 10M MIXESIZE 1G;
puis :

ALTER DATABASE
DEFAULT TEMPORARY TABLESPACE nomTemp;

41
Information sur le tablespace TEMPORARY par défaut

● Connaitre le nom du tablespace par défaut :


== > intérogez la vue database_properties

SELECT property_value FROM database_properties


WHERE property_name=‘DEFAULT_TEMP_TABLESPACE’;

42
Restrictions relatives au tablespace TEMPORARY
par défaut

● Les tablespaces TEMPORARY par défaut ne peuvent pas être :


– supprimés tant qu'un nouveau tablespace par défaut n'est pas
disponible,
– mis hors ligne,
– transformé en tablespace permanent.

43
Trouver les informations sur les tablespaces et les fichiers de
données

● Information sur les tablesspaces :


1- DBA_TABLESPACES
Les principaux colonnes de DBA_TABLESPACES :
- TABLESPACE_NAME : nom du tablespace
- CONTENTS : type de tablespace (permanent,
temporaire ou d’annulation (undo))
- EXTENT_MANAGEMENT : mode de gestion de tablespace (par
dictionnaire ou en local)
- ALLOCATION_TYPE = user : gestion des extent par l’utilisateur
(tablespace géré par le dictionnaire)
SYSTEM: gestion automatique des extents (AUTOALLOCATE)
seulement pour tablespace géré localement
UNIFORM : gestion uniforme des extents
(tablespace géré localement)
- STATUS : statut du tablespace (ONLINE, OFFLINE , READ ONLY)
- BGIFILE : indique si le tablespace est bigfile (YES ou NO)
- SEGMENT_SPACE_MANAGEMENT : mode de gestion de l’espace libre dans les segments (MANUAL ou AUTO)

2- v$TABLESPACE :
TS# : numéro du tablespace
NAME : nom du tablespace
BIGFILE : indique si le tablespace est un tablespace bigfile(YES ou NO)
44
Trouver les informations sur les tablespaces et les fichiers de
données (2)

● Information sur les fichiers de données :


3- DBA_DATA_FILES et DBA_TEMP_FILES :

- FILE_NAME : nom du fichier


- TABLESPACE_NAME : nom du tablespace auquel le fichier appartient
- BYTES : taille du fichier en octets
- BLOCKS : taille du fichier en blocs Oracle
- MAXBYTES : taille maximum du fichier en blocs Oracle
- STATUS : statut du fichier (INVALID ou AVAILABLE)
- RELATIVE_FNO : numéro relatif du fichier par rapport au tablespace
- AUTOEXTENSIBLE : YES ou NO
- INCREMENT_BY : taille de l’incrément de l’autoextension en blocs Oracle
- user_bytes : taille utile du fichier en octets (généralement taille du fichier
moins les blocs d’en-tête)
- online_status : ONLINE ou OFFFLINE

45
Trouver les informations sur les tablespaces et les fichiers de
données (3)

● Information sur les tablesspaces et fichiers de données :


4- pour avoir des informations sur les fichiers de données on interroge les vues
v$DATAFILE et v$TEMPFILE (pour les fichiers temporaire)

Quelques colonnes :
TS# : num du tablespace auquel le fichier de donnée appartient
FILE# : identifiant du fichier
Name : nom du fichier de donnée
STATUS : statut du fichier (OFFLINE, ONLINE, SYSTEM ou RECOVER)
ENABLE : disponibilité du fichier (DISABLED, READ ONLY, READ WRITE)
BYTES : Taille du fichier en octets
CREATION_TIME : date de création
CHECKPOINT_CHANGE # : SCN du dernier checkpoint :
CHECKPOINT_TIME : date du dernier point de reprise

46
Trouver les informations sur les tablespaces et les fichiers de
données (3)

● Information sur les tablesspaces et fichiers de données :


4- pour avoir des informations sur les fichiers de données on interroge les vues
v$DATAFILE et v$TEMPFILE (pour les fichiers temporaire)
5- On peut aussi interroger la vue DATABASE_PROPERTIES :
PROPERTY_NAME : nom de la propriété :
DEFAULT_TBS_TYPE : type de latablespace par défaut
(SMALLFILE ou BIGFILE)
DEFAULT_TEMP_TABLESPACE : tablespace
temporaire par défaut
DEFAULT_PERMANENT_TABLESPACE : tablespace
permanent par défaut
PROPERTY_value : nom du tablespace

47
47
48
- Si on mit un tablespace offline tout les fichiers apprtenant sont offline

49
Supervision du stockage dans les tablespaces

● Les vues du dictionnaire de données permettent d’obtenir des informations sur le


stockage à l’intérieur des tablespaces :
DBA_FREE_SPACE : informations sur l’espace disponible à l’intérieur
d’un tablespace
DBA_SEGMENTS : information sur les segments alloué à l’intérieur
d’un tablespace
DBA_EXTENT : information sur les segments alloués à l’intérieur d’un
tablespace

50
Supervision du stockage dans les tablespaces

Les colonnes intéressantes


DBA_SEGMENTS
OWNER Nom du propriétaire du segment
SEGEMNT_NAME Nom du segment
SEGEMENT_TYPE type du segment (table, index, undo, rollback …)
TABLESPACE_NAME nom de tablespace qui contient le segment
BYTES taille de segment en octets
BLOCKS taille de segement en bloc Oracle
EXTENTS nombre d'extensions alloué au segment
INITIAL_EXTENT taille initiale du segment

DBA_EXTENTS
OWNER Nom du propriétaire du segment au quel appartient l'extent
SEGEMENT_NAME nom du segemnt auquel appartient l'extent
SEGEMENT_TYPE type de segment
TABLESPACE_NAME nom de tablespace qui contient le segment
EXTENT_ID numéro de l'extent (0 pour le premier)
BLOCK_ID numéro du premier bloc de l'extenssion
BYTES taille de l'extensioon (extent) en octest
BLOCKS taille de l'extent en bloc Oracle

DBA_FREE_SPACE
TABLESPACE_NAME nom du tablespace qui contient l'extension (extent) libre
FILE_ID identifiant du fichier de données qui contient l'extent libre
BLOCK_ID numéro du premier block de l'extenssion libre
BYTES taille de l'extenssion libre en octets
BLOCKS taille de l'extenssion libre en blocs Oracle
51
Supervision du stockage dans les tablespaces

● Exemple de requête sur les extents libre :

== > On a donc ici 3 extents libres pour le tablespace ‘TPSAUV’ :

== > Espace libre en bytes pour un tablespace :

52
Supervision du stockage dans les tablespaces

● Exemple de requête pour vérifier l’espace alloué aux extents :

53
Utilisation du Database Control

- Cliquer sur le lien ‘Administration’ sur la page d’accueil puis sur le line
‘Espace disque logique’ Utilisation du Database Control

54
Tablespace d'annulation (undo)

● Réservés exclusivement aux segments d'annulation :


Au début de modification des données Oracle génère des informations
d’annulation. Ces informations contiennent la valeurs des données avant
modification (image avant) et l’identification des blocs concernés. Ces informations
sont stockés dans des segments d’annulations et utilisés si nécessaire pour annuler
les modifications

55
Segment d’annulation

● Les segments d’annulation stockent les


images avant modification des données. Il
enregistre l'emplacement des données et
leur valeur avant modification pour des
annulations éventuelles (ROLLBACK) , pour la
lecture cohérente de la base …

56
Segment d’annulation

● Les segment d’annulation sont utilisées pour :

- Annulation d'une transaction


Lorsqu’une transaction modifie des données, l’ancienne image de ces données est
enregistrée dans un segment d’annulation. En cas d’annulation de la transaction
(rollback), la valeur d’origine est restaurée. Les informations contenus dans le segment
d’annulation sont utilisées pour reconstruire l’ « image avant » des lignes affectée.

- Récupération d'une transaction


Si une instance Oracle échoue alors que des transactions sont en cours, les
modifications non validées sont annulées par Oracle lors de la réouverture de la base
de données. La restauration des transactions est possible si toutes les modifications
apportées aux segments d’annulation sont également protégées par des fichiers redo
log.
- Cohérence en lecture
Les données en cours de modification ne sont pas vues pas les autres utilisateurs tant
la transaction n’est pas validé. Les utilisateurs voient les données telles qu’elles étaient
avant le début de la transaction. Oracle utilise les données précédent stockées dans le
segment d’annulation. 57
Durée de rétention

● Durée de rétention : durée de conservation minimal de l’information


d’annulation dans le segment d’annulation
● Si une extension a été réutilisé ou libéré il est possible qu’une lecture cohérente
longue ne trouve pas d’information dont elle a besoin == > erreur ORA-01555
(erreur snapshot too old)
== > version 9, le paramètre UNDO_RETENTION définit une durée de rétention
minimale.
== > Oracle 10, réglage automatique de la durée de rétention

58
Configuration de la gestion automatique des informations d’annulation

● Configurer les deux paramètres suivants dans le fichier d’initialisation :


- UNDO_MANAGEMENT : indique le mode de gestion souhaité pour la gestion des informations
d’annulation; positionner ce paramètre à AUTO.
Ce paramètre est statique.
- UNDO_TABLESPACE : le nom du tablespace à utiliser au démarrage de l’instance
Le paramètre UNDO_TABLESPACE est facultatif :
- si la base de données ne contient qu'un tablespace d'annulation (UNDO)
- si la valeur du paramètre UNDO_MANAGEMENT est AUTO,
dans ces situations le serveur Oracle choisira automatiquement le tablespace d'annulation.

Ce paramètre est dynamique, il est possible de changer sa valeur (changement de


tablespace actif ):
ALTER SYSTEM SET UNDO_TABLESPACE= nom [clause scope]
avec : clause scope = BOTH ou MEMORY si la modif est immédiate si non scope = spfile
-MEMORY : la mémoire seulement
Pour rappel : scope définit la cible de la modification ==> (instance en cours)
- SPFILE : le fichier de paramètre
- BOTH : les deux

- UNDO_RETENTION : la durée de rétention en second (valeur par défaut 900 s (15 min).
vous pouvez consulter la durée utilisée dans la colonne TUNED_UNDORETENTION
de la vue v$UNDOSTAT

59
Création de Tablespace d'annulation
● Le Tablespace d’annulation est créé au moment de la création de la base de données
ou après.
● Obligatoirement géré localement : Dans un tablespace d’annulation, des segments
sont automatiquement crées avec une gestion automatique des extensions (EXTENT
MANAGEMENT LOCAL AUTOALLOCATE)
Dans un tablespace d’annulation, des segments d’annulation sont automatiquement
créés et gérés par Oracle (et par lui seul).
● Les segments d’annulation sont nommées sous la forme _SYSSMUnn$, et
dimensionnés automatiquement en fonction des besoins.
● Création :
> à la création de la base : après la clause CREATE DATABASE
syntaxe :
CREATE DATABADSE …

[SMALLFILE | BIGFILE] UNDO TABLESPACE nom
DATAFILE spécification
> après la création de la base :
syntaxe :
CREATE [SMALLFILE|BIGFILLE] UNDO TABLESPACE nom
DATAFILE spécification
exemple : CREATE UNDO TABLESPACE undotest
DATAFILE ‘c:\undotest.dbf’ SIZE 100M
AUTOEXTEND ON NEXT 10M MAXSIZE 200M;
PS : on suppose que le type de tablespace par défaut est SMALLFILE 60
Information sur les tablespaces d’annulation

● Consultez les vues suivantes :


● déjà traitées :

DBA_TABLESPACES, DBA_DATA_FILES,
DBA_FREE_SPACE, DBA_SEGMENTS, DBA_EXTENTS

● DBA_UNDO_EXTENTS : donne plus d’informations sur les extensions


allouées dans les tablespaces d’annulation. Le champs « status » donne le
statut des informations d’annulations stockées dans l’extension

● DBA_ROLLBACK_SEGS : informations générales sur les segments


d’annulation
v$ROLLNAME : donne les noms des segments d’annulation

61
Pour connaitre l’activité chaque segment d’annulation

62

Vous aimerez peut-être aussi