Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Oracle:Por que a Oracle cria um vetor de alteração de redo descrevendo a alteração no bloco de desfazer quando o usuário emite uma instrução para alterar um item de dados


Digamos que você tenha uma transação inacabada (não confirmada). A Oracle fez todas as coisas que você disse na pergunta.

Agora a máquina trava.

O DBA, após a recuperação da máquina (ou em nova máquina, depende :)) restaura o último backup e aplica todos os redo logs na nova instância. No redo também está o que foi feito no passo 1. Mas esse trabalho não está comprometido, então o motor precisa revertê-lo. Para isso, ele precisa do segmento de rollback. Mas o segmento de reversão não estará lá se você não o registrou na etapa 3.

Eu sei que você vai perguntar agora:por que ele aplica logs para trabalho não confirmado? Essa foi a minha pergunta também quando li sobre isso. Não sei ao certo, mas talvez seja mais fácil fazer isso. Talvez seja mais difícil verificar se cada entrada do log faz parte de uma transação confirmada. No entanto, é assim que o Oracle funciona:eu aplico todos os redo logs e depois reverto as transações não confirmadas.