You are on page 1of 22

Universidade Federal do Piau

Centro de Ensino Aberto e a


Distncia
Curso de Sistemas de
Informao

Bancos de Dados: Recuperao de Banco


de Dados
Prof. Arlino Magalhes
arlino@ufpi.edu.br
1

Sumrio
1. Introduo
2. Tipos de Falhas
3. Recuperao Baseada em Log
4. Checkpoint
5. Tcnicas de Recuperao
6. Tcnicas de Recuperao de Meio de Armazenamento
7. Recuperao Baseada em Pginas Sombras

BANCOS DE DADOS: RECUPERAO DE BANCO DE DADOS

Introduo
O Sistema de Recuperao a parte responsvel pela deteco de falhas e pela restaurao
do BD para um estado consistente que existia antes da ocorrncia da falha.
O Sistema de Recuperao baseia-se em redundncia de dados que consiste na criao de
cpias dos dados e operaes ou a replicao desses dados. No caso de falha dos dados
principais, podem-se utilizar as cpias para recuperar os dados e ento retornar o BD a um
estado consistente.
Quando ocorre uma falha, o SGBD deve executar aes para retornar o BD a um estado
consistente. As duas aes bsicas so:
UNDO: desfazer uma atualizao no BD.
REDO: refazer uma atualizao no BD.

BANCOS DE DADOS: RECUPERAO DE BANCO DE DADOS

Tipos de Falhas
Existem diferentes tipos de falhas que podem afetar a consistncia de um BD:
1.
2.
3.
4.

Falha
Falha
Falha
Falha

de Transao
de Sistema
de Meio de Armazenamento
Catastrfica

BANCOS DE DADOS: RECUPERAO DE BANCO DE DADOS

Tipos de Falhas
1. Falha de Transao:
A falha de transao ocorre quando uma transao ativa termina de forma anormal.
As principais causas para esse tipo de falha so: violao de uma restrio de integridade, lgica da
transao mal definida, deadlock, cancelamento pelo usurio, entre outras.
Como as causas so muito comuns, essa falha tem maior probabilidade de ocorrncia. Entretanto,
seu tempo de recuperao pequeno, pois no compromete as memrias principal e secundria.

2. Falha de Sistema:
A falha de sistema ocorre quando o SGBD encerra a sua execuo de forma anormal.
As principais causas para esse tipo de falha so: interrupo de energia, falha no sistema
operacional erro interno no software do SGBD, falha de hardware, entre outras.
Nesse caso, as transaes em execuo no podem mais continuar, porm possvel recuper-las.
Esse tipo de falha compromete a memria principal, mas no compromete a memria secundria.
Como as causas so mais comuns do que a falha de transao, esse tipo de falha tem probabilidade
mdia de ocorrncia. Entretanto, seu tempo de recuperao mdio, pois compromete a memria
principal.
BANCOS DE DADOS: RECUPERAO DE BANCO DE DADOS

Tipos de Falhas
3. Falha de Meio de Armazenamento:
A falha de meio de armazenamento ocorre quando o BD torna-se total ou parcialmente inacessvel.
As principais causas para esse tipo de falha esto relacionadas ao disco: setores corrompidos no
disco, falha no cabeote de leitura/gravao, entre outras.
Esse tipo de falha no compromete a memria principal mas compromete a memria secundria.
Como as causas no so comuns, essa falha tem menor probabilidade de ocorrncia. Entretanto,
seu tempo de recuperao grande, pois compromete a memria secundria.

4. Falha Catastrfica:
Na falha catastrfica esto vrias situaes em que a mdia que contm o BD completamente
destruda.
Os exemplos incluem exploses ou incndios no local do banco de dados, vandalismo ou vrus.
Para evitar ou contornar essas falhas, os seguintes procedimentos so executados:
a) toda vez que feita uma modificao no BD, mantido automaticamente pelo sistema um
registro num arquivo especial;
b) periodicamente feito um backup de todo o BD (normalmente em fita magntica).

BANCOS DE DADOS: RECUPERAO DE BANCO DE DADOS

Recuperao Baseada em Log


O log (ou Journal) a estrutura largamente usada para registrar modificaes no banco de
dados.
Um log registra sequencialmente as operaes feitas por transaes no banco de dados.
Esse arquivo geralmente consultado em caso de falhas para a realizao.
O log mantido em uma ou mais cpias em memria secundria, tais como disco e fita.
Os principais tipos de log so:
log UNDO: esse log mantm apenas o valor antigo do dado (before image).
log REDO: esse mantm apenas o valor atualizado do dado (after image).
log UNDO/REDO: esse o log mais comum e mantm os valores antigo e atualizado do dado.

BANCOS DE DADOS: RECUPERAO DE BANCO DE DADOS

Recuperao Baseada em Log


Representao do Log
Incio da Transao
3.
Incio da Transao
2.
Incio da Transao
1.

T3 altera o item B
do valor 15 para o
valor 12.
T2 altera o item B
do valor 12 para o
valor 18.

T3 altera o item A
do valor 10 para o
valor 19.

T1 altera o item D
do valor 20 para o
valor 25.

T3 efetivada.

T1 efetivada.

T2 efetivada.

BANCOS DE DADOS: RECUPERAO DE BANCO DE DADOS

T2 altera o item D
do valor 25 para o
valor 26.
8

Recuperao Baseada em Log


Representao do Log
importante observar que apenas as operaes de escrita so armazenadas no log. Outra
forma de representar o log considerar a operao feita no BD:
insert: <write Tx, X, INSERT, afterImage>
update: <write Tx, X,UPDATE, beforeImage, afterImage>
delete: <write Tx, X,DELETE, beforeImage>

Como o log armazena informaes sobre todas as atividades do BD, o volume de dados
armazenados no log pode tornar-se excessivamente grande. Existem meios seguros para
apagar informaes do log ou para compact-lo.

BANCOS DE DADOS: RECUPERAO DE BANCO DE DADOS

Recuperao Baseada em Log


Gerenciamento de Buffer

O buffer um conjunto de blocos da


memria principal.
O uso do buffer surge da necessidade de
evitar acessos frequentes ao meio fsico (LOG
e BD).
O SGBD responsvel pela gerncia de
alguns buffers, tais como buffers para dados,
para processamento de transaes e para o
log.
O SGBD assume o controle desses buffers,
ao invs do sistema operacional.

BANCOS DE DADOS: RECUPERAO DE BANCO DE DADOS

10

Recuperao Baseada em Log


Gerenciamento de Buffer
Buffer do Log:
Esse buffer agrupa um conjunto de registros de log.
Os registros do log devem ser armazenados no arquivo na ordem em que eles foram criados.
Uma transao s considerada efetivada quando todos os registros de log dessa transao
estiverem no meio fsico, ou seja, persistidas em memria secundria.

Buffer do Banco de Dados:


Esse buffer guarda na memria principal alguns blocos do banco de dados fsico.
Quando um dado do banco de dados precisa ser lido e o bloco fsico onde esse dado est
armazenado no est no buffer, ento esse bloco recuperado do banco de dados fsico.

BANCOS DE DADOS: RECUPERAO DE BANCO DE DADOS

11

Recuperao Baseada em Log


Gerenciamento de Buffer
Tcnicas para o Gerenciamento de Buffer:
Essas tcnicas utilizam o princpio Write-Ahead-Log (WAL), onde um bloco atualizado na cache s
pode ser gravado no banco de dados aps o histrico dos dados atualizados nesse bloco ter sido
gravado no Log em disco.
Exemplo:
Uma transao Tx s pode passar para o estado efetivada (committed) aps todas as suas
atualizaes terem sido gravadas no banco.
O SGBD aplica tcnicas de gerenciamento de buffer e essas tcnicas influenciam as tcnicas de
recuperao. As principais tcnicas so:
NOT-STEAL
STEAL
FORCE
NOT-FORCE

BANCOS DE DADOS: RECUPERAO DE BANCO DE DADOS

12

Recuperao Baseada em Log


Gerenciamento de Buffer
NOT-STEAL:
Nessa tcnica, um bloco na cache utilizado por uma transao Tx no pode ser gravado antes do
commit de Tx.
Esse bloco possui um bit de status indicando se foi (1) ou no (0) modificado.
Com isso, o processo de recuperao mais simples, pois evita dados de transaes inacabadas
sendo gravadas no banco de dados.

STEAL:
Nessa tcnica um bloco na cache utilizado por uma transao Tx pode ser gravado antes do commit
de Tx.
Se algum dado requisitado do banco de dados por outra transao e no h blocos disponveis na
cache, ento, um bloco a ser eliminado deve ser escolhido atravs de alguma tcnica (como o FIFO,
por exemplo).

BANCOS DE DADOS: RECUPERAO DE BANCO DE DADOS

13

Recuperao Baseada em Log


Gerenciamento de Buffer
FORCE:
Com o FORCE, os blocos que mantm dados atualizados por uma transao Tx so imediatamente
gravados no BD quando Tx alcana o commit.
Para tanto, deve-se saber quais os blocos que Tx atualizou dados. A vantagem com isso garantia
da durabilidade de Tx o mais cedo possvel, permitindo o REDO de Tx em caso de falha.

NOT-FORCE:
Com o NOT-FORCE, os blocos que mantm dados atualizados por Tx no so imediatamente
gravados no BD quando Tx alcana o commit.
Assim, blocos atualizados podem permanecer na cache e serem utilizados por outras transaes,
aps o commit de Tx, o que reduz o custo de acesso a disco.

BANCOS DE DADOS: RECUPERAO DE BANCO DE DADOS

14

Checkpoint
Os logs so utilizados para recuperar o sistema em caso de falha. Contudo, esse processo
pode consumir muito tempo, visto que o log pode ser muito grande.
Alm disso, muitas das transaes que necessitam ser refeitas j escreveram suas
atualizaes no BD e refaz-las se tornar muito oneroso.
Checkpoints (ou pontes de controle) so pontos em que se garante que o contedo dos
buffers do log e do banco de dados foram descarregados nos respectivos meios fsicos.
O ponto crtico em relao falha de sistema que os contedos da memria principal so
perdidos (em particular, os buffers).
No possvel prever o estado preciso de qualquer transao que estava em andamento no
momento a falha. Tal transao pode nunca terminar com sucesso, logo precisa ser desfeita
(rollback) quando o sistema reiniciar.
Entretanto, pode tambm ser necessrio refazer algumas transaes que possam ter
terminado com sucesso antes da falha ocorrer, mas que no tiveram seus resultados
transferidos dos buffers para o banco de dados fsico.
BANCOS DE DADOS: RECUPERAO DE BANCO DE DADOS

15

Checkpoint
Quando ocorre uma falha de sistema,
os seguintes passos devem ser
executados:
1.

2.

3.

Todas as transaes cujos


registros <commit Ti> estejam
depois do registro de Checkpoint
mais recente gravado no log
devem ser refeitas (REDO);
Todas as transaes cujos
registros de <start Ti> forem
encontrados no log e os seus
respectivos <commit Ti> no
forem encontrados devem ser
desfeitas (UNDO);
A tcnica de checkpoint no
interfere no processo de UNDO,
somente no REDO.

BANCOS DE DADOS: RECUPERAO DE BANCO DE DADOS

Exemplo:

Aes a serem tomadas:

Tempo (tc)
do
checkpoint
mais
recentement
e ocorrido
antes da
falha.

Falha de
Sistema

1. T1 terminou antes do tempo tc ento T1 ento no precisa de


recuperao.
2. T2 comeou antes do tempo tc e terminou depois do tempo tc, mas
antes do tempo tf ento, aps a falha, T2 deve ser refeita (REDO).
3. T3 e T5 comearam antes do tempo tc, mas no terminaram antes do
tempo tf ento, aps a falha, devem ser desfeitas (UNDO).
4. T4 comeou depois do tempo tc e terminou antes do tempo tf ento,
aps a falha, deve ser refeita (REDO).
16

Tcnicas de Recuperao
Existem duas tcnicas para usar o log com vistas a assegurar a atomicidade das transaes
apesar das falhas.
Modificao Imediata do Banco de Dados
Modificao Adiada do Banco de Dados

BANCOS DE DADOS: RECUPERAO DE BANCO DE DADOS

17

Tcnicas de Recuperao
Modificao Imediata
Na modificao imediata, todos os dados que foram alterados por transaes efetivadas ou no, so
persistidos no arquivo de dados.
A atualizao feita no banco de dados no momento exato em que foi executada, ento, a recuperao
aps falha tem que desfazer (UNDO) tudo e refazer (REDO).
Do ponto de vista do gerenciamento de buffer, essas tcnicas utilizam a abordagem STEAL.
Tcnica UNDO/REDO:
Na tcnica UNDO/REDO gravada a efetivao de uma transao "x no log depois que todas as modificaes,
realizadas por "x", terem sido gravadas no log, e antes dessas modificaes terem sido gravadas no banco de
dados.
Para isso, essa tcnica requer a existncia de um log UNDO e REDO.

Tcnica UNDO/NO-REDO:
Na tcnica UNDO/NO-REDO gravada a efetivao de uma transao "x" no log depois que todas as
modificaes, realizadas por "x", terem sido gravadas no log, e depois que essas modificaes terem sido
gravadas no banco de dados.
Nesse caso, necessrio a existncia de um log UNDO.
BANCOS DE DADOS: RECUPERAO DE BANCO DE DADOS

18

Tcnicas de Recuperao
Modificao Adiada
As tcnicas baseadas em modificao adiada no log realizam alteraes no banco de dados
somente quando todas as transaes, que modificam o banco de dados, so escritas no log.
Do ponto de vista do gerenciamento de buffer, essas tcnicas utilizam a abordagem NOTSTEAL.
Tcnica NO-UNDO/REDO:
Na tcnica NO-UNDO/REDO fora-se a gravao do log em disco aps uma transao "x" concluir
suas modificaes. Com isso, se uma transao "x falhar antes de alcanar sua efetivao, no
necessrio realizar UNDO de "x", pois nenhuma atualizao de "x" foi gravada no banco de dados.

BANCOS DE DADOS: RECUPERAO DE BANCO DE DADOS

19

Tcnicas de Recuperao de
Meio de Armazenamento
Essa tcnica utilizada quando ocorre falha do meio de armazenamento. Nesse caso,
necessita-se de uma cpia do BD atualizada periodicamente.
Os seguintes passos so necessrios para a operao de cpia peridica do BD:
1.
2.
3.

Concluso de todas as transaes ativas: nenhuma transao pode estar ativa e se existem
transaes nesse estado, deve-se aguardar at elas encerrarem com sucesso.
Descarga do buffer do log para o disco;
Descarga do buffer do BD para o BD fsico.

No caso de falha, os passos para recuperao so:


1.
2.

Restaurar o BD a partir da ltima cpia;


Percorrer o arquivo de LOG, realizando o REDO de todas as transaes

BANCOS DE DADOS: RECUPERAO DE BANCO DE DADOS

20

Recuperao Baseada em Pginas


Sombras
Nessa tcnica o BD constitudo de pginas. Existe uma Tabela de Pginas Correntes (TPC)
e uma Tabela de Pginas Sombras (TPS), ambas em memria principal.
Princpio de Funcionamento:
1.
2.
3.
4.
5.

Quando uma transao Ti inicia a execuo, a TPC copiada para TPS, sendo est salva em
disco;
Durante a execuo, a TPS no muda;
Quando uma operao de escrita ocorre em uma pgina, uma nova cpia da pgina modificada
criada e apontada pela TPC;
Para a recuperao de uma falha, ocorre a liberao das pginas modificadas e o descarte das
TPC. Assim, a TPS disponibilizar o estado anterior falha.
Com a confirmao da transao Ti, ento a TPS descartada.

BANCOS DE DADOS: RECUPERAO DE BANCO DE DADOS

21

Recuperao Baseada em Pginas


Sombras
As vantagens da tcnica de recuperao de pginas sombras que essa no necessita
realizar as operaes de UNDO nem REDO.
Essa tcnica apresenta muitas desvantagens:
gerenciamento complexo dos dados, j que ocorrem mudanas constantes nas pginas no disco;
requer coleta de lixo, pois quando uma transao encerra, existem pginas obsoletas;
no suporta SGBD multiusurios, visto que apenas uma transao executada por vez. Por esses
motivos, essa tcnica no utilizada em SGBD atuais.

BANCOS DE DADOS: RECUPERAO DE BANCO DE DADOS

22

You might also like