Quantas vezes um DBA precisou criar um mais um Banco de Dados de teste ou atualizar os dados deste a partir de produção, pois os desenvolvedores não consegue realizar seus testes no Banco de Dados de teste, porque este encontra-se muito defasado com de Produção.
E comum em muitos sistemas, tem periodos onde é realizada várias atividade que identifica que mudou o periodo. E infelizmente para os desenvolvedores o banco de dados de teste encontra-se com os dados do periodo anterior. Pode acontecer algum erro na base de produção e a equipe de desenvovimento/suporte não conseguir reproduzir o mesmo justamente por falta de dados.
Este artigo, visa justamente atender essa situação, é a criação de um banco de dados que terá os dados de apenas um dia de atraso, Por isso o nome D -1.
A idéia e ter um banco de todos os dias ele realizar um DROP no Banco de Dados e faz um Restore a partir do Backup de Produção.
Os passos são praticamente os mesmos da segunda parte do artigo "Backup & Recovery Parte 3 - Recuperação Incompleta" que é o tópico "Restaurando o Banco de Dados em Outro Servidor". Contudo naquele artigo foi apresentado passos que precisava da intervesão manual do DBA, neste artigo, no final dele, é resultar em um script que o processo será totalmente automático. E ainda neste exemplo para ilustração os diretorios de restauração será diferente, pois em um ambiente real isto pode perfeitamente acontecer.
Vale lembrar que para realizar este processo é preciso que o Banco de Produção esteja configurado para fazer Backup em Rede, como demostrado em "Backup & Recovery Parte 1 - Configurando o Banco Recuperação" e é interessante tem lidos os três artigos de Backup e Recovery.
Além disso é preciso realizar a configuração de AutoBackup do ControlFile em um diretorio da Rede, passo este que não apresentei nos artigos anteriores.
O resumo da operá consite basicamente :
* DROPAR o Banco PROD D-1
* Resturar o ControlFile
* Resturar os DataFiles
* Recuperar os DataFiles
* Abrir o Banco de Dados com ResetLog's
Configurar o Banco de Produção Para AutoBackup do ControlFile
Logue no Rman, confirme os parametros, altere os parametros necessários e obtenha o DBID do banco de dados.
C:\>rman target sys nocatalog
Gerenciador de Recuperação: Release 11.2.0.1.0 - Production on Seg Jul 28 16:30: 05 2014
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
Senha do banco de dados de destino:
conectado ao banco de dados de destino: BDPROD (DBID=3924117592)
usar o arquivo de controle do banco de dados de destino em vez do catálogo de recuperação
RMAN> show all;
Os parâmetros de configuração de RMAN para o banco de dados com db_unique_name BDPROD são:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F';
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO 'D:\APP\C8757887\PRODUCT\11.2.0\DBHOME_1\DATABASE\SNCFBDAGNUS.ORA'; # default
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '\\172.16.1.21\BCK_ORACLE\AUTOBACKUP\CF_%F';
Agora toda vez que o Banco de dados realizar o Backup, uma cópia do controlfile é feito no diretório de Rede compartilhado.
Criandos os Script de Recriação do Banco de Teste.
Serão criados 5 arquivos, sendo 1 script CMD que pode ser chamado via agendador de tarefa e os demais contem tarefas especificas para cada passo da atualização.
1) Cria o arquivo CMD
Crie um arquivo com o nome "AtualizaBancoTESTE.cmd" (sugestão) e digite os comandos para invocar os arquivos/scripts que serão criados.
sqlplus sys/senhasecreta as sysdba @inicia_nomount.txt
rman target sys/senhasecreta nocatalog @ScriptRecover.txt
sqlplus sys/senhasecreta as sysdba @AbreBanco.txt
2)Criar o Arquivo DropDataBase.txt;
create pfile=C:\initBDPROD.ora' from spfile;
Shutdown immediate;
startup mount restrict pfile='C:\initBDPROD.ora';
drop database;
exit;
3)Criar o inicia_nomount.txt
startup nomount pfile='C:\initBDPROD.ora';
exit;
4) Criar o script ScriptRecover.txt.
Neste script deve ser informado o DBID do banco de dados de Produção e também o local onde está sendo feito o backup do controlfile.
Não será possivel realizar um restore completo, pois não temos o RedoLog, por isso setamos um restore incompleto, neste exemplo de 4 horas atras da atual.
Use o parametro DB_CREATE_FILE_DEST para indicar o diretorio onde deseja restaurar o banco de dados e comando " switch datafile all" para que o Oracle edite o controlfile com a nova localização.
O script ficará assim:
run {
set dbid=3924117592;
set controlfile autobackup format for device type disk to '\\172.16.1.21\BCK_ORACLE\AUTOBACKUP\CF_%F';';
restore controlfile from autobackup;
alter database mount;
crosscheck backup;
delete expired backup;
set until time 'SYSDATE - 4/24';
sql 'ALTER SYSTEM SET DB_CREATE_FILE_DEST="C:\app\ADMINISTRADOR\oradata"';
set newname for database to NEW;
restore database;
switch datafile all;
recover database;
}
5)O ultimo passo é criar o AbreBanco.txt;
Neste arquivo você deve renomear os RedoLog para um diretorio válido do servidor de teste, recriar-los com Resetlogs e então para o modo Archivelog (o Banco de Teste não deve faze-lo).
alter database rename file 'D:\APP\ADMINISTRATOR\ORADATA\BDPROD\REDO01.LOG' to 'C:\app\ADMINISTRADOR\oradata\BDPROD\ONLINELOG\REDO01.LOG';
alter database rename file 'D:\APP\ADMINISTRATOR\ORADATA\BDPROD\REDO02.LOG' to 'C:\app\ADMINISTRADOR\oradata\BDPROD\ONLINELOG\REDO02.LOG';
alter database rename file 'D:\APP\ADMINISTRATOR\ORADATA\BDPROD\REDO03.LOG' to 'C:\app\ADMINISTRADOR\oradata\BDPROD\ONLINELOG\REDO03.LOG';
alter database open resetlogs;
shutdown immediate;
startup mount;
alter database noarchivelog;
alter database open;
create spfile from pfile='C:\initBDPROD.ora'';
alter system set log_archive_dest_1='' scope=spfile;
alter system set log_archive_dest_2='' scope=spfile;
shutdown immediate;
startup;
exit;
Pronto, agora toda vez que precisar do banco de teste atualizado basta executar o script. Caso precise de D-1 basta somente colocar no agendador de tarefa.
Até a próxima.
Nenhum comentário:
Postar um comentário