Fiquei me perguntando se alguém poderia verificar meu entendimento sobre as diferenças entre os três termos referentes aos bancos de dados Oracle.
Muitas fontes confundem esses termos e não os explicam em detalhes, por isso foi um desafio encontrar informações.
Pelo que eu entendo:
- Confirmação e confirmação rápida são exatamente a mesma coisa, todas as confirmações são confirmadas rapidamente.
- Uma confirmação rápida basicamente atualiza apenas o sinalizador na tabela de transações do cabeçalho do segmento de desfazer / retroceder para indicar que a transação foi confirmada. No entanto, o bloco real não é revisitado, o que significa que o UBA (Desfazer Byte) na lista de transações interessadas (ITL), localizada no cabeçalho do bloco de dados, ainda aponta para a tabela de transações do segmento de desfazer correspondente. Além disso, os bytes de bloqueio das linhas correspondentes não são liberados e a contagem de bloqueios no ITL permanece inalterada (as linhas ainda estão bloqueadas).
- Em uma limpeza de confirmação, o bloco é revisitado e o ITL é atualizado com o SCN de confirmação. No entanto, a contagem de bloqueios no ITL e o byte de bloqueio armazenados em cada linha ainda não são atualizados (a linha ainda é bloqueada como no commit rápido), isso não gera refazer, mesmo que o bloco seja alterado.
- Os blocos que foram confirmados normalmente (== rapidamente confirmados) serão submetidos à Limpeza Atrasada do Bloco quando eles forem tocados em seguida (e gerarão refazer).
- Os blocos que foram submetidos à limpeza de confirmação serão submetidos à Limpeza Atrasada do Bloco de Log quando forem tocados em seguida (e gerarão refazer).
Espero que alguém possa verificar esses pontos! Obrigado!