transação

Propaganda
BANCO DE DADOS 2
Reconstrução (“recovery”)
• Idéia básica
TRANSAÇÃO
Prof. Edson Thizon
Tipos de falhas (1)
– Em algum momento no tempo, todo
sistema computacional apresentará uma
falha.
• O SGBD deve incorporar
mecanismos de proteção e
recuperação em caso de falhas
Tipos de falhas (2)
• Falha de transação
– Uma transação que está executando alterações
sobre a base de dados termina de forma anormal
– Causas:
• erro no programa que executa a transação,
cancelamento por Deadlock, interrupção pelo usuário,…
• Demais programas permanecem em execução
• Falha de sistema
• Falha no meio de armazenamento
– Parte ou toda a base de dados está
inacessível ou incorreta (falha no meio de
armazenamento, falha na controladora,
programas fazem alterações incorretas,…)
– O SGBD encerra sua execução enquanto há
transações de alteração em execução
– Causas:
• erro interno no SGBD, problema de execução no
software que suporta o SGBD, falha no hardware,
problema na alimentação, …
Princípios
• Princípio básico dos mecanismos de
reconstrução:
– Redundância de informações
• Limitação fundamental:
– Não existe esquema de reconstrução
completamente seguro
• Objetivo da reconstrução
– Levar a base de dados há um estado no passado
em que os dados estão garantidamente corretos
(nenhuma transação estava sendo executada)
– Refazer transações
– Informar usuários sobre as últimas transações
executadas
Mecanismo genérico de
reconstrução usado pelo SGBD(1)
• Periodicamente a base de dados é
copiada integralmente para outro meio
físico de armazenamento (tipicamente fita
magnética): “backup dump”.
• Cada vez que é executada uma alteração
sobre uma linha de uma tabela é criado
um registro de “log”
1
Mecanismo genérico de
reconstrução usado pelo SGBD(1)
• Ocorrendo uma falha, existem duas
possibilidades de acordo com estado da
base de dados:
– A base de dados está danificada
• Carregar a base de dados a partir da última cópia de
segurança feita
• Refazer as transações (“redo”) executadas desde a cópia,
usando as imagens posteriores do arquivo de “log”
– A base de dados não está danificada, mas seu
conteúdo não é confiável, pois quando da falha, havia
transações em execução
• Desfazer transações (“undo”), usando imagens posteriores,
até atingir um estado confiável (em que não havia
transações sendo executadas)
Propriedade desejáveis de
transações (ACID)
• Atomicidade
– Uma transação é uma unidade indivisível de alteração da base
de dados: ou ela é executada por completo, ou então nada é
executado
• preserva Consistência
– Uma transação leva a base de dados de um estado consistente
a outro estado consistente (durante a execução da transação, a
base de dados pode passar por um estado inconsistente)
• Isolamento
– Outras transações não devem “ver” alterações parcialmente
realizadas por uma transação, até seu encerramento com
sucesso
• Durabilidade
– Quando a execução de uma transação for confirmada ao
usuário, ela deve passar a ser permanente, ou seja não deve
ser desfeita pelo SGBD
Recuperação de erro de
transação
• Deve ser executada pelo SGBD quando uma
transação que estava sendo executada é
cancelada (explicita- ou implicitamente):
– Programa que executava a transação foi descontinuado
(divide-byzero,…)
– Usuário executou ABORT-TRANSACTION
• Recuperação:
– Os efeitos da transação em execução devem ser
desfeitos (“undo”)
– Somente estes efeitos são atingidos pela reconstrução
– Consequência
• O arquivo de “log” deve ser acessável de forma randômica
• Não pode haver outros usuários que "viram" os dados alterados
pela transação (isolamento)
Transação
• Nem sempre aquilo que do ponto de vista
do usuário é uma operação atômica pode
ser executado por uma única instrução de
banco de dados.
• Exemplo:
– Incluir um pedido e seus itens (corresponde a
duas instruções INSERT de SQL)
• Consequência:
– É necessário um mecanismo que permita informar
ao SGBD que um conjunto de alterações forma
uma transação
Instruções para controle de transação
• Uma instrução isolada de SQL é considerada uma transação.
• Quando um usuário necessitar montar transações mais
complexas pode usar as seguintes instruções
– BEGIN-TRANSACTION
• O usuário sinaliza ao SGBD que está iniciando uma transação
• É escrito um registro correspondente no arquivo de “log”
– COMMIT-TRANSACTION
• O usuário sinaliza ao SGBD que está encerrando com sucesso
a transação
• Com isso está confirmando ao SGBD todas alterações feitas
desde a execução do BEGIN-TRANSACTION
• É escrito um registro correspondente no arquivo de “log”
– ABORT-TRANSACTION
• O usuário sinaliza ao SGBD que todas as alterações realizadas
desde o último BEGIN-TRANSACTION devem ser desfeitas,
pois há problemas na transação.
• O SGBD deve executar uma operação de “undo”
• É escrito um registro correspondente no arquivo de “log”
Recuperação de falha no
sistema
• O SGBD parou de executar
• Operações de escrita em meio físico
podem ter sido perdidas.
• Buffers em memória podem ter sido
perdidos
• Todas transações que estavam em
execução devem ser desfeitas
• Questão:
– Como o SGBD sabe quais as transações que
estavam em execução?
– Poderia implicar em uma busca em todo arquivo
de “log” de trás para diante.
2
“Check-point”
• De tempos em tempos, o SGBD escreve no arquivo de
“log” um registro especial chamado “check-point”, que
serve para registrar quais as transações que estavam
em execução
• A execução de um “check-point” envolve:
– Descarregar todos os buffers do arquivo de “log” (para
garantir que o efeito de todas operações realizadas até
este ponto estejam registradas no arquivo de “log”)
– Escrever um registro de “check-point” no arquivo de “log”
– Descarregar todos os buffers da base de dados
(garantido que todas operações realizadas até o ponto
tenham sido registradas)
– Escrever na base de dados o endereço “último registro
de checkpoint”.
Reconstrução em sistemas
comerciais
• Oracle7 e Sybase oferecem reconstrução
“on-line”, isto é, apenas aqueles usuários
afetados pela reconstrução são
desconectados - os demais não tomam
conhecimentos da reconstrução
• Oracle7 permite que, em máquinas com
múltiplos processadores sejam geradas
paralelamente diversas cópias de
segurança e que a reconstrução também
aconteça de forma paralela.
Controle de transação no
Oracle
• No Oracle a técnica utilizada para
implementar o gerenciamento de
uma transação é a de Arquivos de
Log, a qual é onde fica registradas
as ações praticadas sobre o Banco
de Dados
Recuperação de falhas no
meio de armazenamento
• A base de dados está danificada. Deve ser usada uma cópia de
segurança. A partir dela, todas operações sobre a área afetada devem
ser refeitas. A cópia de segurança pode ser de diferentes tipos:
– Total
• Toda a base de dados é copiada.
• Não podem existir transações em execução (cópia “off-line”).
– Parcial
• Parte da base de dados é copiada.
• Outras partes podem continuar em uso.
– Incremental
• Somente as partes da base de dados que foram alteradas desde a
última cópia total são copiadas.
– “On-line”
• A base de dados é copiada enquanto transações são executadas.
• Mecanismo de estampas de tempo é usado para sincronizar as
cópias com o arquivo de “log”.
Transação - ORACLE
• As transações são terminadas por um
dos seguintes comandos:
• Commit: executa a efetivação da
transação corrente e começa uma
nova;
• Rollback: aborta a transação corrente;
UPDATE emp
SET sal=sal*1.1
WHERE empno=7369
Server
process
1
Instance
SGA
4
5
Shared pool
Library
cache
Database
buffer
cache
Redo log
buffer
Data
dictionary
cache
3
2
Data files
Control
files
Database
Redo log
files
3
Locks
1
Instance
SGA
Server
process
4
Database
buffer
cache
Shared pool
Redo log
buffer
LGWR
3
2
User
process
Data files
Control
files
Database
Redo log
files
Niveis de Locks
Há normalmete Independente da
nomenclatura dada por fornecedores de
SGBDs, dois níveis de locks importante:
• Locks exclusivos
• Locks Compartilhados
Locks Compartilhados
Chamados de SLOCKS, são usados
para permitir que mais de um usuário
acesse o mesmo dado ao mesmo
tempo. É especialmente utilizado em
casos de pesquisa em tela, por
exemplo.
Locks são recursos de
compartilhamento de dados,
que permitem que o dado seja
atualizado
e
pesquisados
dentro de um ambiente multiusuário de maneira segura e
que lhes garanta confiabilidade e integridade.
Através dos locks é possível garantir a atualização
a um único usuário ou a pesquisa a vários.
Locks Exclusivos
Chamados de
XLOCKS, são
usados para
garantir o uso de
um determinado
dado por um único
usuário.
É especialmente
utilizado em casos
de atualizações.
Quando um usuário
adquire um nível de
lock sobre um dado,
ele pode requisitar
outro nível ao SGBD.
A este conceito
damos o nome de
Promoção de níveis
de Locks
4
Distribuição de Dados
• Há, na teoria 2 arquiteturas básicas de
Banco de Dados no que se refere a
distribuição dos dados:
• Centralizados
• Distribuídos
TWO-PHASE COMMIT
Uma transação usada
em Banco de Dados
Distribuído, que só é
efetuada quando há
recebimento da
confirmação da
possibilidade de
atualização em todas
as tabelas envolvidas.
Referências Bibliográficas
• HEUSER, Carlos Alberto. Fundamentos de
Banco de Dados. UFRGS.
• KORTH, Henry F. & SILBERSCHATZ,
Abraham. Sistemas de Bancos de Dados, São
Paulo. Ed. Makron Books, 1999.
• FERNANDES,
Lúcia.
Oracle
9i
Para
Desenvolvedores Oracle Developer 6i Curso
Completo. Ed. Axcel. 2002.
5
Download