Flashback Database

Publicado: março 4, 2016 em Features, RMAN, Uncategorized
Tags:

O database, a fronteira final. Essas são as viagens da nave na edição Enterprise, em sua missão de vários restore points, para explorar novos mundos, buscar novas formas de Flashback, novas incarnations. Audaciosamente indo, aonde nenhum DBA jamais esteve.

Para a abordagem do Flashback Database resolvi fazer uma brincadeira com o filme Star Trek, dirigido pelo J. J. Abrams. Pois vi uma certa semelhança na forma como o roteiro foi feito para utilizarem os antigos personagens do ponto onde a história tinha parado, porém iniciando uma história alternativa com o funcionamento do Flashback Database da Oracle.

No filme, Spock, seguindo a linha do tempo original, promete aos romulanos salvar o planeta deles utilizando uma tecnologia vulcana. Porém, a missão não termina com sucesso e o planeta é destruído. E como resultado, um romulano o persegue na tentativa de se vingar. Com isso, Spock sente-se obrigado a entrar em um buraco negro criado por ele mesmo, ocasionando a volta dele para um determinado ponto do passado. Após o fato de Spock voltar parcialmente no tempo, é gerada uma realidade paralela. Alterando assim, o curso da vida para um novo futuro.

Imagine se Spock fosse um DBA em vez de vulcano (coisas bem parecidas, pois os dois não podem demonstrar emoções e devem ser muito racionais, na hora da pressão), e ao aplicar scripts para correção de erros no banco de dados, ocorressem problemas alarmantes e precisasse recuperar o banco para o momento anterior. Ele teria a opção de utilizar a tecnologia Flashback Database. Criaria um restore point anteriormente à aplicação dos scripts com alterações no banco de dados, e após o acontecimento dos erros, voltaria a base ao restore point criado ou à um tempo passado após o restore point. E como para ter acesso ao banco onde foi utilizado o Flashback, deve ser utilizado o Resetlogs ao abri-lo, criaria uma nova linha do tempo para o banco, chamada também de nova Incarnation.

Vamos agora para a parte prática desse recurso!

Versão do Oracle: 12.1.0.2

Antes de habilitarmos o Flashback, devemos verificar se o banco atende os seguintes pré-requisitos:
1) O banco deve estar no modo ARCHIVELOG, já que os archived logs são utilizados nas operações de Flashback.
Screen Shot 03-04-16 at 03.36 PM.PNG

2) O banco deve estar com a Fast Recovery Area (FRA) habilitada, pois os flashback logs podem ser armazenados nessa área.
Screen Shot 03-04-16 at 03.37 PM

Sabendo disso, iremos verificar se o Flashback Database está habilitado.
Screen Shot 03-04-16 at 03.34 PM

Como não está habilitado, vamos realizar a alteração, ação esta que pode ser realizada com o banco online.
Screen Shot 03-04-16 at 03.38 PM

Agora que já temos o Flashback habilitado, vamos criar uma tabela de teste para ver o funcionamento do danado.
Screen Shot 03-04-16 at 03.46 PM.PNG

Depois de criada a tabela, vamos criar um Restore Point com a opção de GUARANTEE para que seja garantido que será mantido os arquivos de Flashback Logs necessários para fazer realizar a ação. Já que no Restore Point normal, caso não tenha espaço necessário, os arquivos mais antigos serão sobrepostos pelos novos arquivos gerados.
Screen Shot 03-04-16 at 03.52 PM Screen Shot 03-04-16 at 03.58 PM
O banco irá garantir que os Flashback Logs não serão excluídos pelo tempo informado pelo parâmetro DB_FLASHBACK_RETENTION_TARGET (em minutos):
Screen Shot 03-04-16 at 04.43 PM.PNG

Nesse momento podemos ver que o restore point está ligado a Incarnation número 2 do banco, caso o banco seja restaurado para esse ponto.

Iremos assim, realizar o um update e depois drop da tabela de teste.
Screen Shot 03-04-16 at 04.24 PM 001
Screen Shot 03-04-16 at 04.24 PM

Agora vamos realizar o Flashback para o Restore Point que criamos, seguindo os seguintes passos:
1) Realizar o shutdown do banco;
2) Subir o banco em estado MOUNT;
3) Realizar o Flashback para o Restore Point desejado;
4) Alterar o banco para o estado OPEN com a opção RESETLOGS.
Screen Shot 03-04-16 at 04.38 PM.PNG

Pronto! Realizamos o Flashback do banco para o cenário de quando foi criado o Restore Point TESTE_FLASHBACK. Podemos verificar consultando os dados da tabela teste:
Screen Shot 03-04-16 at 04.40 PM.PNG
E verificando no RMAN, podemos verificar que o banco está em uma nova Incarnation.
Screen Shot 03-04-16 at 04.57 PM.PNG
Funcionou corretamente!

Para finalizar só alguns pontos que devem ser lembradas algumas limitações do Flashback Database:
1) Não é possível realizar o Flashback para reparar falhas de mídia ou exclusão de datafiles, pois ele só consegue realizar operações em arquivos encontrados no Control File.
2) Caso seja restaurado o Control File, serão descartados os arquivos de Flashback Logs necessários para realizar a ação de Flashback Database.

Links:
Using Flashback Database and Restore Points
FLASH RECOVERY AREA and FLASHBACK database (Doc ID 369759.1)
CREATE RESTORE POINT

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s