Perdi tudo mas…

Tenho backup e agora o que fazer???Bom dia, boa tarde, boa noite!!!
Ufa!! Então você não perdeu nada. hehehehe

Parece estranho falar isso, mas é uma dúvida de diversos alunos, colegas e envolvidos com Oracle: “Se eu perder todos os meus dados, mas tiver um backup, como devo proceder para a restauração??” Ou seja, o que faço com os arquivos de backup?

Vamos nesta dica hoje?
Supondo que você perdeu o seu banco de dados por algum motivo bem sério, sei lá, vamos supor que um terrorista invadiu seu datacenter e se explodiu lá dentro. Com isso, você que é muito esperto (eu imagino e espero que seja mesmo) tem suas cópias de backup bem longe do datacenter. Acertei??
Aproveitando o assunto vou comentar uma curiosidade, pelas leis de segurança de dados internacionais uma distância válida/segura para se um site de backup tem que ser maior que o raio de destruição de uma bomba atômica. Se assustou?? É isso mesmo, caso caia uma  bomba atômica na “cabeça” do datacenter seus backups estarão a salvo.

Bem, vamos lá para nossa situação: Você só tem os arquivos do backup.

Primeiramente terá que reinstalar os binários do Oracle na mesma versão que estavam no servidor para que possa restaurar o ambiente.

Depois disso siga os passos abaixo e muito provavelmente obterá total sucesso:
1- Configure a variável de ambiente ORACLE_SID.
Supondo que seu SID seja orcl vamos lá:
$ export ORACLE_SID=orcl

2- Inicie o RMAN e conecte-se na instância Target para setar o DBID do banco.
$ rman target /

3- Dentro do RMAN você precisará setar o DBID (identificador do database).
Este número é a identificação do banco de dados dentro do sistema, setando ele fará com que o RMAN reconheça a qual banco pertence os backups que você pretende usar.
Comando para setar o DBID:
RMAN> SET DBID 1710860098;

Bem, vou fazer uma pausa para falar dele o DBID. Vale como dica comentar que é muito interessante você ter uma planilha com todos os seus bancos de dados e respectivos DBIDs, isso é de suma importância em operações como esta. Localize-o na v$database

4- Feito isso você deverá “startar” a instância em modo NOMOUNT
RMAN> STARTUP NOMOUNT

Observação importante, neste momento você receberá um erro (startup failed: ORA-01078: failure in processing system parameters), pois como já sabemos durante o nomount a instância lerá o arquivo de parâmetros e ele não existe. Ok calma DBA! Sem pânico beleza?

5- Agora restaure o spfile do autobackup com o comando:
RESTORE SPFILE TO PFILE ‘?/oradata/test/initorcl.ora’ FROM AUTOBACKUP;

6- Baixe a instância:
SHUTDOWN IMMEDIATE;

7- Edite o pfile restaurado do backup e caso necessário altere os parâmetros terminados com _DEST que serão a estrutura no novo local.

8- “Start” a instância em NOMOUNT (pode ser de dentro do rman mesmo.) com o pfile restaurado no passo 5
RMAN> STARTUP NOMOUNT PFILE=’?/oradata/test/initorcl.ora’;

9- Crie um bloco RUN para restaurar o controlfile do autobackup e depois monte o database.
RUN
{
RESTORE CONTROLFILE FROM AUTOBACKUP;
ALTER DATABASE MOUNT;
}

11- Verifique na V$DATAFILE no novo ambiente para determinar o nome dos datafiles como estão armazenado no controlfile(que veio restaurado) para determinar se será necessário utilizar o comando SET NEWNAME para especificar novo local.
Utilize o comando SQL ALTER DATABASE RENAME FILE para especificar o path dos redolog online. Inclua a cláusula SET UNTIL para limitar o recovery ao final do archived redo log files.Incluao comando SWITCH para que o controlfile reconheça os novos endereços dos datafiles.

12- Rode o script para proceder a tarefa.
RUN
{
SET NEWNAME FOR DATAFILE 1 TO ‘?/oradata/test/system01.dbf’;
SET NEWNAME FOR DATAFILE 2 TO ‘?/oradata/test/undotbs01.dbf’;
SET NEWNAME FOR DATAFILE 3 TO ‘?/oradata/test/sysaux.dbf’;
SET NEWNAME FOR DATAFILE 4 TO ‘?/oradata/test/users01.dbf’;
SET NEWNAME FOR DATAFILE 5 TO ‘?/oradata/test/example01.dbf’;

SQL “ALTER DATABASE RENAME FILE ”/u01/app/oracle/oradata/orcl/redo01.log”
TO ”?/oradata/test/redo01.log” “;
SQL “ALTER DATABASE RENAME FILE ”/u01/app/oracle/oradata/orcl/redo02.log” TO ”?/oradata/test/redo02.log” “;
SQL “ALTER DATABASE RENAME FILE ”/u01/app/oracle/oradata/orcl/redo03.log” TO ”?/oradata/test/redo03.log” “;
SET UNTIL SCN 456931;
RESTORE DATABASE;
SWITCH DATAFILE ALL;
RECOVER DATABASE;
}

13- Abra o banco de dados com open resetlogs

Simples não é mesmo?? Porém muito útil para guiar o processo de restore e recover.

Bem meu amigo, era isso por hoje, espero que tenha curtido, e que sendo assim compartilhe com o resto do pessoal.

 

Grande abraço! Até a próxima e jamais esqueça hein… FOCO na META!!!! SEMPRE!!!!

 

Sobre raul andrade

DBA e Instrutor Oracle, apaixonado pela minha família e por ensinar.
Esta entrada foi publicada em DBA Oracle. Adicione o link permanente aos seus favoritos.

6 respostas para Perdi tudo mas…

  1. Diogenes Braz disse:

    Bom dia!

    Muito bom, parabéns pela iniciativa.

  2. Diego disse:

    Obrigado pela dica Raul é de grande Valor !

Deixe um comentário