Thursday, April 13, 2006

2è PARTIE : GESTION DE L'ESPACE D'ANNULATION SOUS ORACLE9i
(SUITE ET FIN)
III - MODE AUTOMATIQUE DE GESTION DE L'ESPACE D'ANNULATION
Une instance Oracle est dite opérationnelle en mode automatique de gestion de l'annulation lorsque l'administrateur utilise la méthode "undo tablespace" de gestion de l'espace d'annulation.

III-1) Démarrage d'une instance en mode automatique de gestion d'annulation
Le positionnement du paramètre d'initialisation UNDO_MANAGEMENT à la valeur AUTO fait que la commande STARTUP démarre l'instance en mode automatique de gestion des annulations (en anglais : Automatic Undo Management mode ou en bref AUM).
Un undo tablespace dans lequel Oracle stockera les enregistrements d'annulation doit être disponible.
Quand l'instance démarre, Oracle sélectionne automatiquement le premier undo tablespace disponible. Et s'il n'y en a pas de disponible, l'instance utilise le rollback segment SYSTEM et écrit un message d'alerte dans le fichier d'alertes pour avertir que le système s'exécute sans un undo tablespace. Ceci est fortement déconseillé dans les circonstances normales.
Optionnellement, l'administrateur peut spécifier au démarrage qu'il souhaite que l'instance utilise un undo tablespace spécifique en positionnant le paramètre d'initialisation UNDO_TABLESPACE comme ci-après (ce qui suppose que le undo tablespace spécifié a été préalablement créé, sinon la commande startup échoue) :
UNDO_TABLESPACE = undotbs_01
Dans les versions ultérieures d'Oracle9i, si l'on crée une base de données sans demander la création d'un undo tablespace en même temps (clause UNDO TABLESPACE de la commande CREATE DATABASE), Oracle en crée automatiquement un, appelé SYS_UNDOTBS avec un fichier de données placé dans le répertoire $ORACLE_HOME/dbs et dont le nom est assigné par le système ; sa taille par défaut est de 100Mo.
On peut créer plusieurs undo tablespaces par base de données. Mais un seul peut être actif à un moment donné par instance.
A tout moment, l'administrateur peut basculer dynamique sur un undo tablespace différent en changeant en ligne le paramètre UNDO_TABLESPACE (commande ALTER SYSTEM). Cependant, s'il veut basculer entre les modes d'annulation automatique et manuel, il doit redémarrer la base de données.
On peut effectuer des opérations DDL (create, alter, drop) sur les undo tablespaces ; cependant, on ne peut pas effectuer des opérations DDL sur les undo segments. Toute tentative de ce genre se solde par le message "ORA-30019: Illegal rollback Segment opération in Automatic Undo mode". Pour éviter l'affichage de tels messages, il suffit de mettre le paramètre UNDO_SUPPRESS_ERRORS à TRUE.
Nous récapitulons dans les deux tableaux ci-dessous les principaux paramètres utilisés pour le mode automatique de gestion des annulations et ce qu'il faut en retenir.

Description des paramètres de gestion automatique d'annulation
PARAMETREDESCRIPTION ET COMMENTAIRES
UNDO_MANAGEMENTDétermine si la gestion automatique des annulations (AUM) est activée dans la base de données. La valeur AUTO active l'AUM et la valeur MANUAL le désactive.
UNDO_RETENTIONDéfinit la longueur minimale de temps pendant lequel Oracle retient les données d'annulation après leur génération et après l'achèvement de la transaction les ayant générées. Oracle fait le meilleur effort pour retenir les données d'annulation pendant le temps demandé mais il n'y a aucune garantie.
UNDO_SUPPRESS_ERRORSPermet de contrôler l'affichage de messages d'erreurs qui résulte de certaines commandes SQL quand la base de données est en mode automatique de gestion des annulations. Il faut être prudent lorsque l'on met ce paramètre à TRUE dans la mesure où il supprime tout message d'erreur émis lors de tentatives d'opérations manuelles quand on est en mode automatique.
UNDO_TABLESPACEDéfinit un ou plusieurs undo tablespaces qui seraient utilisés par Oracle pour la gestion automatique des annulations. Si ce paramètre est positionné et UNDO_MANAGEMENT est mis à AUTO quand on exécute la commande "CREATE DATABASE", alors on doit inclure tous les tablespaces listés dans ce paramètre dans la commande "CREATE DATABASE" ; sinon cette dernière échoue. On peut lister plusieurs tablespaces pour ce paramètre mais seul le dernier tablespace listé sera utilisé (Oracle ne permet l'utilisation que d'un undo tablespace à un moment donné).


Spécificités des paramètres de gestion automatique d'annulation
PARAMETREVALEUR PAR DEFAUTVALEURS VALIDESDYNAMIQUE ?
UNDO_MANAGEMENTMANUALAUTO, MANUALNON
UNDO_RETENTION900 secondes0 à la valeur maximale autorisée par 32 bitsOUI (immediat pour le système)
UNDO_SUPPRESS_ERRORSTRUETRUE, FALSEImmediat pour le système ; autorisé pour la session
UNDO_TABLESPACEOn peut utiliser ce paramètre pour spécifier le nom du undo tablespace à utiliser par l'instance. Si ce paramètre n'est pas spécifié, alors Oracle choisira le premier undo tablespace disponible sys_undotbs, ou le rollback segment system si aucun aucun undo tablespace n'est disponible.Nom de undo tablespace valide. Plusieurs undo tablespaces ne sont pas supportés bien qu'Oracle ne génère pas une erreur.Immediat pour le système


III-2) Informations relatives aux undo segments

VUE/TABLEDESCRIPTION
DBA_SEGMENTSVue stockant les informations relatives aux segments créés dans la base de données : leur taille, tablespace, type, paramètres de stockage, etc.
DBA_ROLLBACK_SEGSVue stockant des informations relatives à tous les segments d'annulation : leur status, nom de tablespace, tailles, etc.
V$ROLLNAMEVue stockant les numéros et noms de tous les segments d'annulation en ligne.
V$ROLLSTATVue contenant les statistiques relatives aux annulations : taille de segment, valeur OPTIMAL, nombre de "morceaux depuis le démarrage de l'instance, nombre de transactions actives, extents, status, etc.
V$UNDOSTATVue collectant des "photographies/instantanés" qui reflètent la performance du tablespace d'annulation comme aide à l'ajustement de sa taille pour supporter les exigences de charge du système qui évolue.


Quelques exemples de requêtes
- Les segments d’annulation de la base de données
SQL> select segment_name, owner, tablespace_name, status from dba_rollback_segs ;
- Statistiques sur les segments d’annulation actuellement utilisés
SQL> select n.name, s.extents, s.rssize, s.hwmsize, s.xacts, s.status frm v$rollname n, v$rollstat s
where n.usn = s.usn ;
- Vérification que les transactions en cours utilisent un segment d’annulation
SQL> 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 ;

IV - BIBLIOGRAPHIE
1) Oracle9i DBA Fundamentals I – par BijuThomas et Bob Bryla – Chez Sybex ,Alameda (USA) 452 pages.
2) Support de cours – par R. MISSINHOUN – Vauréal 2004.
3) Automatic Undo Management (AUM) –
http://www.orafaq.com/node/73
4) Talking tuning : Tuning Undo Tablespace – By Kimberly Floss – http://www.oracle.com/technology/oramag/05-jul/o45tuning.html.
5) Managing Undo Space – Oracle9i Database reference – http://www.lc.leidenuniv.nl/awcourse/oracle/server.920/a9651/undo.htm

0 Comments:

Post a Comment

<< Home