Vous êtes sur la page 1sur 25

Chapitre 6

GRER LES DONNES DANNULATION

Segment dannulation
Un segment dannulation permet denregistre l anicienne valeur (donnes dannulation) lorsqu un processus modifie les donnes dune base. Il enregistre lemplacement des donnes et leur valeur avant modification. Dans lentte dun segment dannulation contient une table des transactions dans laquelle sont stockes des informations sur les transactions en cours associes au segment dannulation.

Segment dannulation
Ancienne image Table

Nouvelle image Segment dannulation

Transaction de mise jour

Fonctions des segments d annulation


Annulation dune transaction Rcupration dune transaction Cohrence en lecture

Annulation dune transaction

Rcupration dune transaction Segment dannulation Cohrence en lecture

Rcupration dune transaction


Si linstance chue tandis que des transactions sont en cours, le serveur doit annuler les modifications non valides lors de la rouverture de la base de donnes. L annulation fait partie de la rcupration de la transaction. La rcupration est possible uniquement dans la mesure o les modifications effectues dans le segment d annulation sont galement protges par les fichiers de journalisations (fichiers redo log).

Annulation dune transaction


Lorsquune transaction modifie une ligne dans une table, lancienne image des colonnes modifies (donnes dannulation) et enregistre dans le segment dannulation. En cas dannulation (ROLLBACK) de la transaction, le serveur restaure les valeurs d origine en les rcrivant dans la ligne du segment dannulation.

Cohrence en lecture
Lorsque des transactions sont en cours, les autres utilisateurs de la base de donnes ne doivent pas avoir connaissance des modifications non valides effectues par ces transactions. En outre une instruction ne doit pas avoir connaissance des modifications valides aprs le dbut de son excution. Les anciennes valeurs (donnes dannulation) des segments dannulation sont galement utilises pour fournir aux lecteurs une image cohrente dune instruction donne.

Cohrence en lecture
Table SELECT * FROM Table

Nouvelle image Image au dmarrage de l instruction

Types de segment dannulation


Le segment SYSTEM est utilis pour les objets du tablespace SYSTEM
Cr dans le tablespace SYSTEM la cration dune base de donnes. Il ne peut tre utilis que pour les modifications apportes aux objets du tablespace SYSTEM Le segment dannulation non SYSTEM utilis pour les autres tables spaces Mode automatique: ncessite un tablespace dannulation (UNDO) Mode manuel: acquis par une instance spcifique Public: acquis par une instance quelconque (constituent un pool de segments dannulation disponibles dans une base de donnes).

Concepts de la gestion automatique des annulations


Les donnes dannulations sont gres l aide dun tablespace dannulation (UNDO) Allouez un tablespace dannulation (UNDO) par instance en prvoyant suffisamment d espace pour la charge globale de linstance. Le serveur Oracle gre automatiquement les donnes dannulation dans le tablespace d annulation.

Configuration de la gestion automatique des annulations


Configurer les deux paramtres suivants dans le fichier dinitialisation
UNDO_MANAGEMENT=AUTO/MANUEL UNDO_TABLESPACE=UNDOTBS Crer au moins un tablespace dannulation (UNDO).

Fichier d initialisation

Undo1db01.dbf

Gestion automatique des annulations: tablespace dannulation (UNDO)


Pour crer le table space dannulation (UNDO) en mme temps que la base de donnes. Ajoutez une clause dans la commande CREATE DATABASE.

CREATE DATABASE db01 UNDO TABLESPACE undo1 DATAFILE /u01/oradata/undo1db01.dbf SIZE 20M;

Vous pouvez galement crer le tablespace ultrieurement laide de la commande CREATE UNDO TABLESPACE CREATE UNDO TABLESPACE undo1 DATAFILE /u01/oradata/undo1db01.dbf SIZE 20M;

Gestion automatique des annulations: modifier un tablespace dannulation (UNDO)


La commande ALTER TABLESPACE permet de modifier des tablespaces dannulation (UNDO). Dans lexemple ci-dessous, un fichier de donnes est ajout au tablespace dannulation (UNDO):
ALTER TABLESPACE undo1 ADD DATAFILE /u01/oradata/undo1tbs2.dbf SIZE 30M AUTOEXTEND ON;

Gestion automatique des annulations: changer de tablespace dannulation (UNDO)


Vous pouvez passer dun tablespace dannulation (UNDO) un autre. Vous ne pouvez affecter une base de donnes qu un tablespace dannulation (UNDO) la fois. Une instance peut contenir plusieurs tablespaces d annulation (UNDO). Mais un seul peut tre actif. La commande ALTER SYSTEM permet de changer dynamiquement de tablespace dannulation. ALTER SYSTEM SET UNDO_TABLESPACE=UNDOTBS2;

Gestion automatique des annulations: supprimer un tablespace dannulation (UNDO)


La commande DROP TABLSESPACE permet de supprimer un tablespace dannulation.

DROP TABLESPACE UNDOTBS2; Vous ne pouvez pas supprimer un tablespace dannulation (UNDO) sil est en cours d utilisation par une instance. Pour supprimer un tablespace dannulation actif: Changer de tablespace dannulation. Supprimer le tablespace une fois que toutes les transactions en cours sont termines.

Statistiques relatives aux donnes dannulation


SELECT end_time, begin_time, undoblks FROM V$UNDOSTAT;

Cette vue affiche un histogramme des donnes statistiques relatives au bon fonctionnement de la base de donnes. Chaque ligne contient les statistiques collectes toutes les 10 minutes dans linstance. Cette vue vous permet d estimer lespace d annulation ncessaire pour la charge globale en cours .

Gestion automatique dannulations: dimensionner un tablespace dannulation


Pour dterminer la taille dun tablespace d annulation (UNDO) vous devez disposer des lments dinformations suivants: UNDO_RETENTION en secondes (UR) Nombre de blocs de donnes dannulation gnrs par seconde (UPS) Lespace supplmentaire varie en fonction des extents et des fichiers (db_block_size) (DBS)
UndoSpace=[UR*(UPS*DBS)]+(DBS*24)

Gestion automatique dannulations: dimensionner un tablespace dannulation


SELECT (UR* (UPS * DBS))+(DBS * 24 ) AS "Bytes" FROM ( SELECT value AS UR FROM v$parameter WHERE name='undo_retention'), (SELECT (SUM(undoblks)/SUM( ( ( end_time-begin_time) *86400) ) ) AS UPS FROM v$undostat), (SELECT value AS DBS FROM v$parameter WHERE name='db_block_size');

Pour convertir des octets en mgaoctets, divisez-les par 1 048 576.

Gestion automatique dannulations: dimensionner un tablespace dannulation


SELECT ROUND((Bytes/1048576),2) AS MEGAOCTETS FROM ( SELECT (UR* (UPS * DBS))+(DBS * 24 ) AS Bytes FROM ( SELECT value AS UR FROM v$parameter WHERE name='undo_retention'), (SELECT (SUM(undoblks)/SUM( ( ( end_time-begin_time)*86400) ) ) AS UPS FROM v$undostat), (SELECT value AS DBS FROM v$parameter WHERE name='db_block_size') );

Gestion automatique dannulations: quota dannulation


Les transactions longues ou incorrectes peuvent utiliser des ressources considrables. Les quotas dannulation permettent de regrouper les utilisateurs et de leur affecter un espace d annulation maximum dfini. La directive UNDO_POOL de Resource Manager dfinit lespace allou un groupe de ressources. Lorsquun groupe dpasse la limite dfinie, il ne peut plus excuter de nouvelle transaction jusqu ce que les transactions en cours se terminent ou chouent, librant ainsi de lespace dannulation.

Obtenir des informations sur les segments dannulation


Interrogez les vues suivantes pour obtenir des informations sur les segments dannulation: - BDA_ROLLBACK_SEGS Vues dynamiques de performances V$ROLLNAME V$ROLLSTAT V$UNDOSTAT V$SESSION V$TRANSACTION

Obtenir des informations sur les segments dannulation


SELECT segment_name, owner, tablespace_name, status FROM dba_rollback_segs;

Obtenir des informations sur les segments dannulation


SELECT n.name, s.extents, s.rssize, s.hwmsize, s.xacts, s.status FROM V$ROLLNAME n, V$ROLLSTAT s WHERE n.usn=s.usn;

Obtenir des informations sur les segments dannulation


Joignez les vues V$TRANSACTION et V$SESSION pour vrifier lutilisation dun segment dannulation par les transactions en cours.

SELECT s.username, t.xidusn, t.ubafil, t. ubablk, t.used_ublk FROM V$SESSION s, V$TRANSACTION t WHERE s.saddr=t.ses_addr;

Synthse
Ce chapitre vous a permis dapprendre : Configurer la gestion automatique des annulations Crer un tablespace dannulation (UNDO) Dimensionner correctement un tablespace d annulation (UNDO).

Vous aimerez peut-être aussi