“Os dados de undo são gerados para permitir transações atômicas, consistência de leitura e isolamento da transação. o banco de dados Oracle garante totalmente a integridade transacional, mas não necessariamente a consistência de leitura. Se o sistema de undo não estiver configurado apropriadamente, as consultas poderão falhar devido a falta de dados de  undo – mas se uma consulta for be-sucedida, ela será consistente. Esse comportamento pode ser modificado pela ativação do RETENTION GUARANTEE, embora isso possa significar que a transação falhou.
Os dados de undo são armazenados em um tablespace de undo que não pode conter nada além dos segmentos de undo gerados e gerenciados automaticamente. Pode haver mais de um tablespace de undo em um banco de dados, mas apenas um estará em uso em um determinado momento; isso é controlado por um parâmetro de instância dinâmico, o UNDO_TABLESPACE.”

Finalidade do UNDO

  • Todas as instruções DML geram dados de undo;
  • Os dados de undo são usados para rollback e isolamento de transações, para fornecer consistência de leitura e para consultas de flashback;
  • O gerenciamento automático de undo usando segmentos de undo é o padrão com a versão 11g.

Como as transações geram undo

  • Os dados de undo sempre serão mantidos até que a transação que os gerou seja concluída com um commit ou um rollback. Esse é o undo ativo;
  • Os dados de undo serão mantidos por um período após terem se tornado inativos para satisfazer os requisitos de consistência de leitura das consultas de longa duração. Esse é o undo não expirado;
  • O undo expirado são dados que não são mais necessários para a consistência de leitura e podem ser sobrescritos a qualquer momento à medida que o espaço nos segmentos de undo é reutilizado.

Gerenciar undo

  • Uma instância usará segmenos de undo em um tablespace de undo designado;
  • Podem existir mais tablespaces de undo, mas somente um de cada vez será usado;
  • O tablespace de undo deve ser suficientemente grande para armazenar os dados de undo, levando em conta a taxa máxima de geração de undo e a consulta mais demorada;
  • Os datafiles do tablespace de undo são datafiles iguais a quaisquer outros.

Dicas para o exame

  • O uso dos segmentos de undo é incompatível com o uso de segmentos de rollback: ou é um ou é o outro, dependendo da configuração do parâmetro UNDO_MANAGEMENT;
  • Nenhuma transação pode usar vários segmentos de undo, mas um segmento de undo pode suportar várias transações;
  • O undo ativo nunca pode ser sobrescrito. O undo expirado pode ser sobrescrito a qualquer momento. O undo não expirado pode ser sobrescrito, mas somente se houver uma falta de espaço de undo;
  • Se uma transação for executada sem espaço de undo, ela falhará com o erro ORA-30036, “unable to extend segment in undo tablespace“. A instrução que causou o problema sofrerá rollback, mas o restante da transação permanece intacta e sem sofrer commit;
  • O erro acima só surgirá se o tablespace de undo estiver absolutamente cheio de dados de undo ativos;
  • A menos que seja especificado na hora da criação na cláusula datafile, os arquivos de dados de um tablespace de undo não serão configurados como autoextensíveis. Mas se seu banco de dados for criado com o DBCA, ele permitirá a extensão automática para os datafiles do tablespace de undo com um tamanho máximo ilimitado. A extensão automática pode ser ativada ou desativada a qualquer momento, como acontece em qualquer datafile;
  • Após a criação de um tablespace de undo, inicialmente haverá um pool de 10 segmentos de undo criados. Outros novos segmentos serão criados se houver mais de 10 transações concorrentes;
  • Se o tablespace de undo for alterado por meio da alteração do parâmetro UNDO_TABLESPACE, quaisquer segmentos no tablespace designado anteriormente que estavam suportando uma transação na hora da alteração permanecerão online até que a transação seja concluída.

Referência Bibliográfica

Este post, assim como todos os posts sobre Certificação OCA deste blog, são trechos do livro “OCA Oracle Database 11g – Administração I (Guia do Exame 1Z0-052)”, da editora Bookman – www.bookman.com.br
Recomendo este livro a todos que pretendem estudar para o exame. Meus posts são apenas algumas dicas para quem já está estudando por outros materiais, e por isso exige uma base de conhecimento anterior em cada um dos capitulos. Para uma referência completa de estudos é recomendado a compra do livro correspondente, bem como a documentação oficial da Oracle.