Pular para o conteúdo principal

Questão de Banco de Dados — Recuperação de falhas — FGV 2025

Banco de DadosRecuperação de falhas
Código
fg116228
Banca
FGV
Órgão
MPU
Ano
2025
Nível
Superior
Cargo
Analista do - Suporte e Infraestrutura
A equipe de banco de dados (BD) do Ministério Público da União (MPU) identificou uma falha não catastrófica no seu sistema, de forma que mantinha o BD em um estado não consistente. Para se recuperar da falha, a equipe identificou que antes as atualizações eram gravadas no log ou no buffer da memória principal e somente eram gravadas no banco após a confirmação da transação. Ao desfazer as operações confirmadas, baseadas no log, a falta de consistência foi removida.A técnica de recuperação utilizada pela equipe foi o algoritmo:
  1. ANO-UNDO/REDO;
  2. BUNDO/REDO;
  3. CUNDO/NO-REDO;
  4. Dlogging write-ahead;
  5. Esteal/no-force.
Revelar gabarito e comentário

GabaritoA — NO-UNDO/REDO;

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Algoritmos de Recuperação em Banco de Dados

Gabarito: letra A – NO-UNDO/REDO. A descrição do enunciado aponta para uma política no-steal (atualizações de transações não confirmadas não são gravadas no disco, apenas no log ou buffer) e no-force (as alterações de transações confirmadas só são refletidas no BD após o commit). Em tais condições, não há necessidade de desfazer transações não confirmadas (UNDO) – pois elas não estão no disco –, mas é preciso refazer (REDO) as transações confirmadas que ainda não foram persistidas. O algoritmo NO-UNDO/REDO é exatamente o que se encaixa nesse cenário.

A banca testa a compreensão das correlações entre as políticas de buffer e os algoritmos de recuperação. A frase "Ao desfazer as operações confirmadas" é uma armadilha: a intenção é descrever que as transações que estavam confirmadas precisaram ser refeitas (REDO), mas o texto se refere a "desfazer" como sinônimo de "eliminar a inconsistência" – o que gera confusão. O candidato deve interpretar com base no contexto geral.

Algoritmos de recuperação
  • 1Política de buffer
    • Steal (grava não confirmado no disco)
    • No-steal (só grava após commit)
    • Force (grava antes do commit)
    • No-force (grava após commit)
  • 2Algoritmos
    • NO-UNDO/REDO
      • No-steal + No-force
      • Não precisa desfazer
      • Precisa refazer
    • UNDO/REDO
      • Steal + No-force
      • Precisa desfazer
      • Precisa refazer
    • UNDO/NO-REDO
      • Steal + Force
      • Precisa desfazer
      • Não precisa refazer
LEVEL · soulevel.com.br

Alternativa A — ✅ Correta ⟵ GABARITO

Corresponde ao algoritmo NO-UNDO/REDO, que adota as políticas no-steal e no-force. Como as transações não confirmadas não foram escritas no disco, não é preciso desfazê-las (no-undo); mas as confirmadas podem não ter sido gravadas, exigindo o redo (REDO) a partir do log.

Alternativa B — ❌ Incorreta

UNDO/REDO implica política steal/no-force. No steal, as atualizações de transações não confirmadas podem ser gravadas no disco antes do commit, o que exigiria UNDO para desfazê-las. O enunciado deixa claro que as atualizações só iam para o BD após o commit, portanto não há steal.

Alternativa C — ❌ Incorreta

UNDO/NO-REDO corresponde a steal/force. A política force exige que todas as alterações de uma transação sejam gravadas no disco antes do commit – o que contraria a afirmação "somente eram gravadas no banco após a confirmação da transação". Assim, não se aplica.

Alternativa D — ❌ Incorreta

"Logging write-ahead" (registro de log com gravação antecipada) é uma técnica utilizada por todos os algoritmos de recuperação, e não um algoritmo específico. A questão pede o algoritmo (UNDO/REDO, NO-UNDO/REDO etc.), não uma técnica de log.

Alternativa E — ❌ Incorreta

"Steal/no-force" é uma política de gerenciamento de buffer, não um algoritmo de recuperação. Além disso, steal não se aplica ao caso (não havia escrita de não confirmadas no disco) e no-force sozinho não define o algoritmo – ele seria parte de UNDO/REDO ou NO-UNDO/REDO.

Conclusão: apenas a alternativa A (NO-UNDO/REDO) é coerente com a situação descrita: sem necessidade de UNDO (no-steal), mas com necessidade de REDO (no-force).

NÃO CAIA NESSA!

A banca usa "desfazer as operações confirmadas" para induzir ao erro. O candidato pode pensar em UNDO, mas na verdade a expressão quer dizer "refazer (REDO) as operações confirmadas que não estavam no disco". Lembre-se: com no-steal, UNDO é desnecessário; com no-force, REDO é obrigatório.

PEGA ESSA DICA!

Monte uma tabela mental ou anote a correspondência:

Política de buffer

Algoritmo

steal / no-force

UNDO/REDO

steal / force

UNDO/NO-REDO

no-steal / no-force

NO-UNDO/REDO

no-steal / force

NO-UNDO/NO-REDO

Para a prova, identifique primeiro se há ou não escrita de dados não confirmados no disco (steal? sim ⇒ UNDO; não ⇒ NO-UNDO) e se as confirmações são forçadas ao disco antes do commit (force? sim ⇒ NO-REDO; não ⇒ REDO).

Link permanente: /questoes/fg116228