← Administração Oracle: recuperação, desempenho e produção
12 / 13 · 65 MIN

Visibilidade e fronteiras de transação

Distingue o estado de cada sessão, escolhe leituras coerentes e identifica commits que tornam uma reversão insuficiente.

Construir uma cronologia antes de intervir

Num fecho de fundos fictício, o operador A altera um montante de 100 para 150. A sua consulta mostra 150, mas o colega B continua a obter 100. Antes de declarar atraso de replicação, identifica a instância, o serviço, o utilizador, a sessão, a query e a existência de commit. No laboratório, ambas as sessões ligaram à mesma PDB. A alteração ainda estava pendente: A observava a própria escrita e B a versão confirmada anterior. Depois do commit de A, uma nova consulta de B devolveu 150. Esta sequência foi repetida duas vezes com dados sintéticos. O diagnóstico resulta das fronteiras observadas; não exige reiniciar a base nem alterar parâmetros para forçar visibilidade.

Uma sequência de consultas não é uma fotografia única

Imagina um relatório APS que recolhe primeiro o total por aplicação e depois os detalhes por operação. A equipa de negócio continua a lançar movimentos entre as duas consultas. Em READ COMMITTED, o facto de ambas usarem a mesma ligação não garante que observem o mesmo instante. Define com o negócio se o relatório deve mostrar um estado consistente ou o valor mais recente de cada consulta. Para o primeiro objetivo, uma transação READ ONLY pode fixar a visão das consultas. Tem de começar na fronteira apropriada da transação. Não acrescentes COMMIT a uma ligação partilhada sem confirmar se existem alterações pendentes que pertencem a outro passo funcional.

Ler os resultados do laboratório com o utilizador certo

Depois da primeira confirmação, a soma era 650. A iniciou READ ONLY com um utilizador de aplicação dedicado. B alterou outro montante e confirmou: a sua soma passou a 675, enquanto A continuou a obter 650. A terminou a transação e a leitura seguinte devolveu 675. Não houve perda de atualização nem necessidade de limpar caches. A documentação exclui SYS deste comportamento READ ONLY; por isso, o laboratório reservou SYS para criar e remover a fixture. A preparação inicial encontrou ORA-01466 após DDL recente. As duas execuções finais separaram a criação da fixture do exercício por dois segundos. Esse ajuste local não constitui uma receita de recuperação para incidentes reais.

DDL altera a fronteira de recuperação

Numa sessão de manutenção, o operador atualiza um registo e executa CREATE TABLE para guardar diagnósticos. No exercício, o valor pendente era 165; B via ainda 160 antes do DDL e passou a ver 165 depois. O ROLLBACK posterior manteve 165. A conclusão é operacional: o plano de reversão deve distinguir transações por confirmar de alterações já confirmadas. A regra documentada inclui um commit antes de DDL sintaticamente válido, mesmo quando a execução termina em erro, e outro depois de DDL bem-sucedido. Se um deployment mistura DML e DDL, ensaia as fronteiras e a compensação necessária. Não prometas atomicidade do ficheiro inteiro só porque existe ROLLBACK no tratamento de erro.

Aceitar a alteração com evidência de negócio

No handover, entrega a cronologia, os valores esperados, as sessões envolvidas e a operação que encerrou cada transação. Um teste que termina com soma 690 demonstra a sequência sintética executada; não demonstra que todos os movimentos de uma aplicação bancária estão corretos. Pede à equipa funcional critérios de reconciliação, duplicação e efeitos externos. Se a ligação cair durante uma confirmação, a ausência de resposta não prova que a base rejeitou a operação. Consulta evidência autorizada do resultado antes de repetir um movimento sensível. O laboratório não simulou essa falha, carga de produção, RAC ou transações distribuídas. Mantém estas limitações na passagem de conhecimento para evitar que um exemplo didático seja tratado como procedimento aprovado.

-- Dedicated synthetic application session after fixture setup.
SET TRANSACTION READ ONLY;
SELECT SUM(amount) FROM jobs;
-- Another session changes and commits data here.
SELECT SUM(amount) FROM jobs;
COMMIT;
SELECT SUM(amount) FROM jobs;
NA PRÁTICA

A lê 650 durante READ ONLY; B confirma um total de 675; A só observa 675 depois de terminar a transação.

Armadilhas comuns

Usar SYS para demonstrar READ ONLY; confundir ligação com snapshot; introduzir DDL numa transação que se pretende reverter.

Tópicos relacionados: Diagnóstico de desempenho · Recuperação e reconciliação · Deployments e aceitação operacional

Leva esta ideia contigo

Documenta quem lê, em que transação e depois de que commit antes de recomendar uma intervenção.

Criar conta

Referência: Data Concurrency and Consistency · 1Z0-183 public objectives inspected 2026-09-30; revision date not published

Oracle® é uma marca registada da Oracle e/ou das suas afiliadas. A dr.pt é uma plataforma de preparação independente e não está afiliada, associada, patrocinada, autorizada nem aprovada por Oracle. Os conteúdos e as perguntas são originais, não são perguntas oficiais de exame, e concluir os nossos testes não atribui nem garante qualquer certificação. Os nomes são usados apenas para identificar o tema. Todas as outras marcas pertencem aos respetivos titulares.