Gestion des Rollback Segments
Objectifs Planification du nombre et de la taille Création avec initialisation appropriée du stockage Maintenance des rollback segments Récupérer les informations à partir du dictionnaire de données Dépannage.
Rollback Segment Ancienne image Nouvelle image Table Rollback segment Transaction Mise à jour
Rollback Segments: Objectif L’ancienne Image est sauvegardée Transaction rollback Annulation des modifications Non validées Pendant la transaction Rollback: Cohérence en lecture (lorsque plusieurs utilisateurs utilisent la base: un en modification (non commiter), un en lecture (il obtient les « anciennes valeur ») Annulation des modifications non validées en cas de pb Restauration Transaction Rollback segment Lecture cohérente
Types de Rollback Segments SYSTEM Non-SYSTEM System : pour les modifications systèmes (créés à la création de la base) Non-system : données
Transactions et Rollback Segments 1 2 Transaction 1 Transaction 2 4 3 Extent actif Extent inactif
Croissance des Rollback Segments rollback Segment de 4 extents 1 2 1 2 5 3 4 3 4 Extent Actif Extent Supplémentaire si 1 à 4 plein. (Cf MAXEXTENTS) Extent Inactif
Rétrécissement d’un Rollback Segments 6 1 1 2 5 2 6 3 3 4 Extent Actif Paramètre Optimal (taille en octets) Extent Inactif
Lecture Cohérente SELECT * FROM table Table Nouvelle image Tant que le commit n’est pas effectif Nouvelle image Image au début de l’instruction
Planification des Rollback Segments : Nombre OLTP (on line transaction processing) petit, mais plusieurs segments Batch Grand, mais peu de segment OLTP : beaucoup de requête mais moins de données Batch: peu de requêtes mais beaucoup de données
Planification Rollback Segments: Nombre d’Extents 0.50 Minextents=20 0.40 Probabilité d’extention 0.30 0.20 Plus il y a d’extents moins il y aura à modifier leur taille 0.10 0.00 10 20 30 40 Nombre d’ extents
Création des Rollbacks Segments Exemple CREATE ROLLBACK SEGMENT rbs01 TABLESPACE rbs STORAGE ( INITIAL 100K NEXT 100K OPTIMAL 4M MINEXTENTS 20 MAXEXTENTS 100); Toujours faire un tablespace rollback segment distinct
Mise Online des Rollback Segments Avec la commande suivante: Spécifier le paramètre d’initialisation suivant pour une lise online au démarrage : ALTER ROLLBACK SEGMENT rbs01 ONLINE; ROLLBACK_SEGMENTS=(rbs01)
Comment les Instances Acquièrent des Rollback Segments Il y a t-il Assez de RBS ? Acquisition du RBS nommé Calcul du Nombre de RBS requis Non Oui Acquisition Des RBS Mise online Des RBS acquis
Changement de l’initialisation du Stockage des Rollback Segment Utilisez ALTER ROLLBACK SEGMENT ALTER ROLLBACK SEGMENT rbs01 STORAGE( MAXEXTENTS 200 );
Libération d’espace dans les Rollback Segments Utilisez ALTER ROLLBACK SEGMENT ALTER ROLLBACK SEGMENT rbs01 SHRINK TO 4M;
Mise Offline des Rollback Segments Mettre un rollback segment offline pour Le rendre indisponible. ALTER ROLLBACK SEGMENT rbs01 OFFLINE;
Suppression des Rollback Segments Un RBS doit être offline avant de pouvoir être supprimé. DROP ROLLBACK SEGMENT rbs01;
Les Rollback Segments dans la base de données DBA_ROLLBACK_SEGS Identification SEGMENT_ID SEGMENT_NAME Emplacement, type, et status TABLESPACE_NAME OWNER (PUBLIC or SYS) STATUS (ONLINE or OFFLINE)
Statistique sur les Rollback Segments V$ROLLNAME USN NAME V$ROLLSTAT USN EXTENTS RSSIZE XACTS OPTSIZE HWMSIZE AVEACTIVE STATUS CUREXT CURBLK
Rollback Segment: Activité courante V$SESSION SADDR USERNAME SID SERIAL# V$TRANSACTION SES_ADDR XIDUSN UBAFIL UBABLK UBASQN UBAREC STATUS USED_UBLK USED_UREC
Problèmes de Rollback Segment Espace insuffisant pour la transaction Erreur de lecture cohérente Transaction bloquante Erreur de mise offline du tablespace
Espace insuffisant pour la transaction Pas d’espace dans le tablespace (01562) Agrandir le fichier de données Allocation automatique Ajouter un fichier de données MAXEXTENTS atteint pour le segment Augmentation MAXEXTENTS Recréation segments avec des extents plus grande
Erreur de Lecture Cohérente SELECT * FROM table Bloc réutilisé Table ORA-01555 SNAPSHOT TOO OLD Nouvelle image Image au démarrage de l’instruction écrasée par une autre transaction
SOLUTIONS Mettre des MINEXTENTS plus élevés Mettre des tailles d’extents plus grandes Utilisez un autre RBS avec : SET TRANSACTION USE ROLLBACK SEGMENT « nouveau segment » Toujours construire plusieurs RBS
Session de blocage 1 2 4 1 5 3 3 2 4 Extent existant Nouvel extent
Erreur à la mise offline d’un Tablespace Impossibilité de mettre offline un tablespace RBS actif Vérification des rollback segments dans le tablespace (dba_rollback_segs) Recherche des transactions actives en utilisant ces même RBS (v$transaction) Recherche de session ID et numéro de série (v$session) Arrêt de la session si nécessaire
Résumé Création de rollback segments adéquats Dépannage de problème de rollback segment