Gestion de l’espace physique de
la base de données Oracle
Asmaa Bennouna
Université Mundiapolis Ingénierie
2020/2021
Les Tablespaces et les Datafiles
Utiliser différents tablespaces dans une même base de données permet :
• Séparer les données des utilisateurs des données du dictionnaire Oracle et
réduire ainsi les contentions en E/S.
• Séparer les données de différentes applications dans différents
tablespaces. La mise Offline d’un tablespace aura moins d’impact sur les
applications.
• Stocker les fichiers de données des différents tablespaces sur différents
disk drives afin de réduire les contentions en I/O.
• Avoir la possibilité de mettre offline un tablespace particulier sans affecter
le reste de la BD. qui reste totalement disponible
• Optimiser les performances de la BD. en réservant un tablespace pour
chaque usage particulier : high update activity, read-only activity, ou
temporary segment storage.
• Faire des sauvegardes de tablespaces individuels.
Locally Managed Tablespaces
• Fast, concurrent space operations. Space allocations and deallocations
modify locally managed resources (bitmaps stored in header files).
• Enhanced performance
• Space allocation is simplified, because when the AUTOALLOCATE clause is
specified, the database automatically selects the appropriate extent size.
• User reliance on the data dictionary is reduced, because the necessary
information is stored in file headers and bitmap blocks.
• Coalescing free extents is unnecessary for locally managed tablespaces.
Créer un Locally Managed Tablespace
• CREATE TABLESPACE lmtbsb DATAFILE '/u02/oracle/data/lmtbsb01.dbf'
SIZE 50M EXTENT MANAGEMENT LOCAL AUTOALLOCATE; (DEFAULT)
• CREATE TABLESPACE lmtbsb DATAFILE '/u02/oracle/data/lmtbsb01.dbf'
SIZE 50M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128K;
• CREATE TABLESPACE lmtbsb DATAFILE '/u02/oracle/data/lmtbsb01.dbf'
SIZE 50M EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT
AUTO; (La gestion de l’espace libre à l’intérieur de chaque segment du
tablespace est aussi automatique, option par défaut)
Bigfile Tablespace
CREATE BIGFILE TABLESPACE bigtbs
DATAFILE '/u02/oracle/data/bigtbs01.dbf' SIZE 2T ...
• Un bigfile tablespace contient 1 et 1 seul data,file mais
qui peut atteindre des tailles bcp plus volumineuses (up
to 4G blocks)
• A bigfile tablespace with 8K blocks can contain a 32
terabyte data file. A bigfile tablespace with 32K blocks
can contain a 128 terabyte data file.
Default Temporary Tablespace
• ALTER DATABASE DEFAULT TEMPORARY TABLESPACE tablespace_name;
• SELECT PROPERTY_NAME, PROPERTY_VALUE FROM DATABASE_PROPERTIES
WHERE PROPERTY_NAME='DEFAULT_TEMP_TABLESPACE’;
• CREATE TEMPORARY TABLESPACE lmtemp TEMPFILE
'/u02/oracle/data/lmtemp01.dbf’ SIZE 20M REUSEEXTENT MANAGEMENT
LOCAL UNIFORM SIZE 16M;
• Consulter V$TEMPFILE et DBA_TEMP_FILES
• SELECT * from DBA_TEMP_FREE_SPACE;
TABLESPACE_NAME TABLESPACE_SIZE ALLOCATED_SPACE FREE_SPACE
----------------------------------- --------------- --------------- ----------
TEMP 250609664 250609664 249561088
Utiliser un groupe de tablespaces
temporaires
• CREATE TEMPORARY TABLESPACE lmtemp2 TEMPFILE
'/u02/oracle/data/lmtemp201.dbf’ SIZE 50M TABLESPACE
GROUP group1;
• ALTER TABLESPACE lmtemp TABLESPACE GROUP group1;
• ALTER TABLESPACE lmtemp3 TABLESPACE GROUP '';
• ALTER DATABASE DEFAULT TEMPORARY TABLESPACE group2;
Non Standard Blocksize tablespaces
• CREATE TABLESPACE lmtbsb DATAFILE
'/u02/oracle/data/lmtbsb01.dbf' SIZE 50M EXTENT
MANAGEMENT LOCAL UNIFORM SIZE 128K
BLOCKSIZE 64K;
• DB_CACHE_SIZE et DB_nK_CACHE_SIZE sont
initialisés
• Permet de définir un tablespace avec une taille de
blocks différente de la standard.
• Répond à des besoins exceptionnels dans la BD.
Modifier les caractéristiques d’un
tablespace
• Alter tablespace tbs1 nologging (ou logging);
• Alter tablespace tbs1 Offline (online);
(On peut pas mettre offline les tbs : SYSTEM, UNDO et
TEMPORARY)
• ALTER TABLESPACE flights READ ONLY;
• ALTER TABLESPACE flights READ WRITE;
Augmenter la taille d’un tablespace
• ALTER TABLESPACE lmtbsb ADD DATAFILE
'/u02/oracle/data/lmtbsb02.dbf' SIZE 1 G;
• Alter database datafile ‘/u02/oracle/data/lmtbsb02.dbf ' resize 2 G;
• Alter database datafile ‘/u02/oracle/data/lmtbsb02.dbf ' Autoextend on next 1G
maxsize 10G;
• Alter database datafile ‘/u02/oracle/data/lmtbsb02.dbf ' Autoextend off;
• ALTER TABLESPACE lmtemp ADD TEMPFILE '/u02/oracle/data/lmtemp02.dbf' SIZE
180 M REUSE;
• ALTER TABLESPACE bigtbs RESIZE 80G;
• ALTER TABLESPACE bigtbs AUTOEXTEND ON NEXT 20G;
Autres commandes de gestion des
tablespaces
• ALTER TABLESPACE users RENAME TO usersts;
Pour les tablespaces temporaires :
• ALTER TABLESPACE lmtemp1 SHRINK SPACE KEEP 20M;
• DROP TABLESPACE users INCLUDING CONTENTS AND
DATAFILES;
• ALTER DATABASE TEMPFILE
'/u02/oracle/data/lmtemp02.dbf' DROP INCLUDING
DATAFILES;
Gestion des Datafiles (autres)
1/ OFFLINE/ONLINE
ALTER DATABASE DATAFILE '/u02/oracle/rbdb1/stuff01.dbf'
ONLINE I OFFLINE (la BD doit être en mode archivelog!);
ALTER DATABASE DATAFILE '/u02/oracle/rbdb1/stuff01.dbf’
OFFLINE FOR DROP; (noarchivelog)
2/ Renaming and Relocationg Datafiles
a) ALTER TABLESPACE users OFFLINE NORMAL;
b) Rename and relocate the data files using the operating system.
c) ALTER TABLESPACE users
RENAME DATAFILE '/u02/oracle/rbdb1/user1.dbf’, '/u02/oracle/rbdb1/user2.dbf'
TO '/u02/oracle/rbdb2/users01.dbf’, '/u02/oracle/rbdb2/users02.dbf’;
d) ALTER TABLESPACE users ONLINE ;
Informations sur les Tablespaces et
Datafiles
1/ Les Datafiles
DBA_DATA_FILES
DBA_EXTENTS
DBA_FREE_SPACE
V$DATAFILE
V$DATAFILE_HEADER
2/ Les Tablespace
V$TABLESPACE
DBA_TABLESPACES
DBA_TABLESPACE_GROUPS
DBA_SEGMENTS
DBA_EXTENTS
DBA_FREE_SPACE
DBA_TEMP_FREE_SPACE
Le Tablespace UNDO
• Stocke les données d'annulation qui :
– sont une copie des données d'origine avant une modification
– sont capturées pour toute transaction qui modifie des données
– sont conservées au minimum jusqu'à la fin de la transaction
– permettent :
• les opérations d'annulation
• des interrogations cohérentes en lecture
• les opérations Oracle Flashback Query,
Oracle Flashback Transaction et Oracle
Flashback Table
• la récupération suite à l'échec
de transactions
Transactions et données d'annulation
Segment
d'annulation
Données Données "anciennes"
du cache du tablespace d'annulation
de tampons
Opérations LMD Tampon de Informations nouvelles sur
UPDATE journa- Fichiers de
lisation les modifications dans journalisation
les fichiers de journalisation
– Chaque transaction est affectée à un seul segment
d'annulation.
– Un segment d'annulation peut être utilisé par plusieurs
transactions simultanément.
Stockage des informations d'annulation
• Les informations d'annulation sont stockées dans des
segments d'annulation, lesquels sont à leur tour stockés dans
un tablespace d'annulation. Les tablespaces d'annulation :
– sont utilisés uniquement pour les segments d'annulation
– présentent des exigences particulières en termes de
récupération
– sont associés à une seule instance
– nécessitent qu'un seul tablespace d'annulation soit
accessible en écriture pour une instance donnée à un
instant précis
– Paramètres : UNDO_TABLESPACE, UNDO_RETENTION
Données d'annulation et données de journalisation
Annulation Données de journalisation
Enregistrement de Mode d'annulation d'une Mode de reproduction d'une
modification modification
Utilisation pour Annulation, cohérence en Réimplémentation des
lecture, flashback modifications de la base de
données
Stockage dans Segments d'annulation Fichiers de journalisation
Protection contre Lectures incohérentes dans Pertes de données
les systèmes
multiutilisateurs
Segment
d'annulation
Fichiers de
journalisation
Gestion automatique des segments d’annulations :
• Gestion complètement automatisée des données et du volume
d'annulation dans un tablespace d'annulation dédié
• Utilisation dans toutes les sessions
• Réglage automatique dans les tablespaces en auto-extension
(AUTOEXTEND) pour les besoins des interrogations de longue durée
• Réglage automatique dans les tablespaces de taille fixe pour une
conservation optimale
Tâches du DBA :
• Configurer la période de conservation des informations d'annulation
• Eviter la consommation excessive d'espace et les erreurs "Snapshot
too old"
Configurer la période de conservation
des informations d'annulation
• Le paramètre UNDO_RETENTION indique (en secondes) la
durée de conservation des informations d'annulation déjà
validées.
• Vous ne devez configurer ce paramètre que dans les cas
suivants :
– L'option AUTOEXTEND du tablespace d'annulation est activée.
– Vous souhaitez garantir la conservation des données.
DBA
Garantir la période de conservation des informations
d'annulation
SQL> ALTER TABLESPACE undotbs1 RETENTION GUARANTEE;
Période garantie :
15 minutes
Données d'annulation stockées
dans le tablespace d'annulation
Les instructions SELECT Une transaction échoue si elle génère
dont l'exécution prend 15 minutes trop d'informations d'annulation
ou moins sont toujours satisfaites. par rapport à l'espace disponible.
Remarque : Cet exemple se fonde sur un paramètre UNDO_RETENTION
de 900 secondes (15 minutes).
Gestion graphique des annulations : Informations
générales
Taille de tablespace
actuelle
Les Redo Logs Online
Les Redo Logs Online
• Les fichiers de journalisation :
SGA – enregistrent les modifications
apportées à la base de données
– doivent être multiplexés afin
Tampon de journalisation d'éviter tout risque de perte
LGWR • Le processus Log Writer écrit :
– lors d'une validation (commit)
Processus Log Writer – lorsqu'un tiers du tampon de
journalisation est plein
– toutes les trois secondes
– avant une écriture par le
Groupe de fichiers Groupe de Groupe de processus DBWn
de journa- fichiers fichiers
lisation 1 de journa- de journa- – avant les fermetures "propres" de
lisation 2 lisation 3
la base
Les Redo Logs Online
• Multiplexez les groupes de
fichiers de journalisation afin de
protéger la base contre toute
défaillance physique ou perte
de données.
Disk1 Membre a Membre a Membre a
• Il est recommandé de respecter
Disk2
Membre b Membre b Membre b les règles suivantes :
– Au moins deux membres
Groupe 1 Groupe 2 Groupe 3 (fichiers) par groupe
– Emplacement de chaque
membre :
• Sur un disque ou un contrôleur
distinct
Les Redo Logs Online
SELECT * FROM V$LOG;
GROUP# THREAD# SEQ BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIM
------ ------- ----- ------- ------- --- --------- ------------- ---------
1 1 10605 1048576 1 YES ACTIVE 11515628 16-APR-00
2 1 10606 1048576 1 NO CURRENT 11517595 16-APR-00
3 1 10603 1048576 1 YES INACTIVE 11511666 16-APR-00
4 1 10604 1048576 1 YES INACTIVE 11513647 16-APR-00
SELECT * FROM V$LOGFILE;
GROUP# STATUS MEMBER
------ ------- ----------------------------------
1 D:\ORANT\ORADATA\IDDB2\REDO04.LOG
2 D:\ORANT\ORADATA\IDDB2\REDO03.LOG
3 D:\ORANT\ORADATA\IDDB2\REDO02.LOG
4 D:\ORANT\ORADATA\IDDB2\REDO01.LOG
Gestion des Redo Logs Online
ALTER DATABASE
ADD LOGFILE GROUP 10 ('/oracle/dbs/log1c.rdo', '/oracle/dbs/log2c.rdo')
SIZE 100M;
ALTER DATABASE ADD LOGFILE MEMBER '/oracle/dbs/log2b.rdo' TO GROUP 2;
ALTER DATABASE DROP LOGFILE GROUP 3; (groupe non actif et non courant, sinon
forcer un switch! )
ALTER DATABASE DROP LOGFILE MEMBER '/oracle/dbs/log3c.rdo';
ALTER SYSTEM SWITCH LOGFILE;
ALTER DATABASE CLEAR LOGFILE GROUP 3;
Déplacement des Redo Logs Online
1/ SHUTDOWN IMMEDIATE;
2/ Copy the redo log files to the new location.
mv /diska/logs/log1a.rdo /diskc/logs/log1c.rdo
mv /diska/logs/log2a.rdo /diskc/logs/log2c.rdo
3/ Startup the database, mount, but do not open it. CONNECT / as SYSDBA
STARTUP MOUNT
4/ Rename the redo log members. ALTER DATABASE
RENAME FILE '/diska/logs/log1a.rdo', '/diska/logs/log2a.rdo'
TO '/diskc/logs/log1c.rdo', '/diskc/logs/log2c.rdo';
5/ ALTER DATABASE OPEN;
Interface EM
Cliquez sur les liens pour
afficher des informations
détaillées.