SóProvas


ID
1208269
Banca
CESPE / CEBRASPE
Órgão
TJ-SE
Ano
2014
Provas
Disciplina
Banco de Dados
Assuntos

Julgue os seguintes itens, no que se refere ao banco de dados Oracle.

O Oracle utiliza um protocolo de confirmação em duas fases para lidar com transações distribuídas concorrentes.

Alternativas
Comentários
  • Two-phase-commit ?

  • Sim, trata-se do Commit em duas fases (Two-phase-Commit): Um mecanismo de commit em duas fases garante que todos os servidores de banco de dados que participam de uma transação distribuída tenham o commit ou rollback da transação.

    Bons estudos!
  • Uma transação distribuida envolve atualizacoes a 2 ou mais BDs, eh projetada por programadores e envolve o uso de links entre BDs. Nesse caso, o COMMIT instrui os BD a confirmarem a transacao(q consiste em ambas as instrucoes). O COMMIT em cada BD deve ser coordenado: se um falhar e o outro for bem sucedido, os dados globais estariam em um estado insonsistente. Um COMMIT de duas fases prepara cada BD instruindo seus LGWRs(escritores de logs) para fazer flush do buffer de log para o disco(1 fase), e uma vez q isso eh confirmado, a transacao eh marcada como confirmada em todos os lugares(a 2 fase). Se algo sair errado em algum lugar entre as 2 fases, o RECO assume o controle para cancelar o COMMIT e fazer um ROLLBACK do trabalho em todos os BDs.

  • De modo grosseiro e pelo que entendi:
    É como em um casamento comunitário, o qual o padre (ou pastor) conversa com os noivos presentes perguntando se realmente tem certeza (Fase 1: Preparação) que querem se casar. No cenário feliz, todos confirmam que "sim" e então a cerimônia ocorre com 100% de sucesso (Fase 2: Resolução). Contudo, caso algum dos noivos desista, ocorre a interrupção do processo.

  • Commit em duas fases refere-se a uma transação que pode utilizar dois ou mais bancos de dados (multi-database), que podem estar localizados em servidores diferentes. 

    Durante uma transação em bancos com essa característica garante-se que o Commit seja realizado em todos os bancos participantes ou em nenhum, ou seja, ou grava tudo ou não grava nada.

    Por exemplo, se sua aplicação atualiza dados em 2 banco de dados e você faz um commit, o recurso de commit em duas fases previne situações como a de um dos bancos ficar indisponível e suas mudanças serem atualizadas somente em um dos bancos envolvidos.


    http://www.planetadelphi.com.br/dica/1222/o-que-e-o-commit-em-duas-fases

  • Apesar de 3PC ser projetado para BD distribuído, Oracle usa 2PC. O Oracle assegura que a integridade dos dados na transação distribuída  use 2PC. Na fase de preparação, o nó iniciante na transação pede ao nó participante prometer efetuar commit ou realizar rollback da transação. Durante a fase de commit, o nó iniciante pede a todos os nós participante para efetuar o commit da transação. Se a meta não for possível, então todos os nós são pedidos para realizar o rollback.

     

    https://docs.oracle.com/cd/B28359_01/server.111/b28310/ds_txns003.htm#ADMIN12223