domingo, 21 de julho de 2013

DBA - Usando seu Backup Online e aplicando Archives

Olá amigos,
Conforme todo bom DBA sabe: "backup bom é o backup que volta". Ou seja, nada adianta backupear 1TB de dados e na hora de voltar, tudo estar corrompido. Com isso, iniciei meus estudos sobre o funcionamento dos backups realizados via RMAN. E hoje vou representar meu pensamento através deste artigo. Vou apenas representar um raciocício. Os comandos técnicos serão abordados posteriormente em outro artigo.

Respondendo a mim mesmo, as perguntas abaixo:

Meu banco está em ARCHIVELOG mode?
Quando ocorreu a falha?
Qual backup posso usar?
Quais archives vou precisar?

Obs.: Tudo isso pode ser encontrado no Capítulo 2 do livro OCP 11g - Preparatório para o exame 1Z0-053: Configurando a Capacidade de Recuperação do Banco de Dados


Pois bem, feito a pergunta. Vamos a resposta.

Imagine o seu banco de dados identificado de 1 até 10:


Cada bloco acima, representa um estado em que o banco estava.

Agora imagine que você tem um backup para cada estado do banco e um grupo de archives para cada estado do bloco do banco de dados (Os chamados SCN)

BACKUPS

ARCHIVES


Temos o seguinte cenário:

Agora vamos raciocinar. Para que diabos eu vou precisar do backup online e dos archives?

Vamos lá!

1) Exemplo: Os metadados foram corrompidos no bloco 9.

2) Você decide fazer o restore utilizando o backup do bloco 6:

Maravilha!
Seu banco de dados perdeu tudo o que foi feito nos blocos 7 e 8?
A resposta é não!

Pois você é um bom DBA e tem todos os archives necessários!

Para que o banco de dados retorne ao momento anterior à falha que ocorreu no bloco 9, você terá que avançar do bloco 6 ao bloco 8. Faça isso aplicando archives:

3) Aplicando os archives dos blocos 7 e 8.

Parabéns! A sua postura gerou a imagem abaixo:

Pronto. Você acabou de garantir seu ambiente.

Obs.: Tudo isso só irá funcionar se você configurou seu banco de dados para trabalhar em ARCHIVELOG mode.
Para consultar se o seu banco de dados está neste modo, utilize a query abaixo:

SQL> select log_mode from v$database;

LOG_MODE
------------
ARCHIVELOG


Obrigado e até o próximo artigo.