sql >> Base de Datos >  >> RDS >> Oracle

Oracle:¿Por qué Oracle crea un vector de cambio de rehacer que describe el cambio en el bloque de deshacer cuando el usuario emite una instrucción para cambiar un elemento de datos?

Digamos que tiene una transacción sin terminar (no comprometida). Oracle ha hecho todo lo que dijo en la pregunta.

Ahora la máquina falla.

El DBA, después de la recuperación de la máquina (o en una nueva máquina, depende :)) restaura la última copia de seguridad y aplica todos los registros de rehacer en la nueva instancia. En la rehacer también está lo que se hizo en el paso 1. Pero ese trabajo no está comprometido, por lo que el motor necesita revertirlo. Para ello necesita el segmento rollback. Pero el segmento de reversión no estará allí si no lo registró en el paso 3.

Sé que te preguntarás ahora:¿por qué aplica registros para trabajos no comprometidos? Esa fue mi pregunta también cuando lo leí. No estoy seguro, pero tal vez sea más fácil hacerlo. Tal vez sea más difícil verificar que cada entrada del registro sea parte de una transacción confirmada. Sin embargo, así es como funciona Oracle:aplico todos los registros de rehacer y luego deshago las transacciones no confirmadas.