Oracle
 sql >> Database >  >> RDS >> Oracle

Oracle:Perché Oracle crea un vettore di modifica di ripetizione che descrive la modifica al blocco di annullamento quando l'utente invia un'istruzione per modificare un elemento di dati

Diciamo che hai una transazione non completata (non impegnata). Oracle ha fatto tutte le cose che hai detto nella domanda.

Ora la macchina va in crash.

Il DBA, dopo il ripristino della macchina (o su una nuova macchina, dipende :)) ripristina l'ultimo backup e applica tutti i registri di ripristino sulla nuova istanza. Nel redo c'è anche ciò che è stato fatto nel passaggio 1. Ma quel lavoro non è impegnato, quindi il motore deve ripristinarlo. Per questo ha bisogno del segmento di rollback. Ma il segmento di rollback non sarà presente se non l'hai registrato al passaggio 3.

So che ora ti chiederai:perché applica i log per il lavoro non impegnato? Questa era la mia domanda anche quando l'ho letto. Non lo so per certo, ma forse è più facile farlo. Forse è più difficile controllare per ogni voce del registro che fa parte di una transazione impegnata. Tuttavia, questo è il modo in cui funziona Oracle:applico tutti i registri di ripristino, quindi esegui il rollback delle transazioni non vincolate.