Oracle
 sql >> Base de données >  >> RDS >> Oracle

Oracle : Pourquoi Oracle crée-t-il un vecteur de modification de rétablissement décrivant la modification apportée au bloc d'annulation lorsque l'utilisateur émet une instruction pour modifier un élément de données ?

Disons que vous avez une transaction inachevée (non validée). Oracle a fait tout ce que vous avez dit dans la question.

Maintenant, la machine plante.

Le DBA, après la restauration de la machine (ou sur une nouvelle machine, cela dépend :)) restaure la dernière sauvegarde et applique tous les redo logs sur la nouvelle instance. Dans la restauration, il y a aussi ce qui a été fait à l'étape 1. Mais ce travail n'est pas validé, donc le moteur doit le restaurer. Pour cela, il a besoin du segment d'annulation. Mais le segment d'annulation ne sera pas là si vous ne l'avez pas connecté à l'étape 3.

Je sais que vous allez demander maintenant :pourquoi applique-t-il des journaux pour le travail non engagé ? C'était aussi ma question quand j'ai lu à ce sujet. Je ne sais pas avec certitude, mais c'est peut-être plus facile de le faire. Il est peut-être plus difficile de vérifier pour chaque entrée du journal qu'elle fait partie d'une transaction validée. Cependant, c'est comme ça qu'Oracle fonctionne :j'applique tous les journaux de rétablissement, puis annule les transactions non validées.