Os comandos DML alteram os dados. À medida que eles gravam blocos de dados no database buffer cache, os vetores de alteração aplicados são gravados no fluxo de redo log. Eventualmente, o DBWn gravará os buffers alterados de volta no disco, sobrescrevendo as versões anteriores dos blocos, mas isso não acontece em tempo real. Por outro lado, os vetores de alteração vão para o disco quase que imediatamente. O método de processamento do COMMIT garante que os dados nunca serão perdidos, gravando os vetores de alteração em tempo real quando um COMMIT é emitido. Um comando ROLLBACK é implementado pela construção de outra instrução (ou instruções) que reverterá o efeito de todo o trabalho feito pela transação até aqui. Os princípios de atomicidade, consistência e isolamento são impostos pelo uso de segmentos de undo, que armazenam os dados necessários para construir essas instruções de inversão. As alterações feitas aos segmentos de undo são protegidas pelo mecanismo de redo.

Os blocos PL/SQL podem ser submetidos para execução dentro da instância como blocos anônimos enviados de processos de usuário ou recuperados de blocos armazenados no dicionário de dados. Esses blocos geralmente são compostos de código procedural com um código SQL embutido nele.

O bloqueio de registro é completamente automático. O mecanismo padrão garante o nível mais alto possível de concorrência: bloqueio em nível de linha e nenhum bloqueio para consultas.

Gerenciar dados usando DML

  • Todos os comandos DML geram undo e redo.
  • O redo protege todas as alterações feitas aos segmentos – segmentos de undo, bem como segmentos de dados.
  • Os processos de servidor leem os datafiles; o DBWn grava nos datafiles.

Identificar e administrar objetos PL/SQL

  • O PL/SQL anônimo é armazenado no cliente, o PL/SQL armazenado é armazenado no dicionário de dados.
  • As procedures e funções podem ser empacotadas; os triggers não podem ser empacotados.
  • O código PL/SQL pode executar código SQL.

Monitorar e resolver disputas por bloqueio

  • O nível padrão de bloqueio é o nível de linha.
  • Os bloqueios são requeridos para todos os comandos DML e são opcionais para SELECT.
  • Uma instrução DML requer bloqueios compartilhados nos objetos envolvidos e bloqueios exclusivos nas linhas envolvidas.
  • Um bloqueio DDL requer um bloqueio exclusivo sobre o objeto que ele afeta.
  • Os deadlocks são resolvidos automaticamente.

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.

Milton Bastos é DBA Oracle e Desenvolvedor PL/SQL, dividido entre Apucarana/PR e Curitiba/PR. Certificações: OCA (Oracle 11g DBA Certified Associate), Oracle Database 11g Data Warehousing Certified Implementation Specialist, Oracle Database 11g Sales Specialist Assessment, Oracle Database Appliance PreSales Specialist Assessment, Oracle Database Appliance Sales Specialist Assessment