Configuração rman para backup e restauração

Este tópico contém respostas, possui 4 vozes e foi atualizado pela última vez por Profile photo of Flávio Melo Flávio Melo 2 semanas atrás.

  • Autor
    Posts
  • #26844
    Profile photo of Bruno da Silva
    Bruno da Silva
    Participante

    Olá,
    Não trabalho com oracle mais preciso de ajuda para criar script para realizar backup e restauração utilizando o rman.
    gostaria de saber quais as configurações recomendadas para do rman para realizar backup e restauração.

    Detalhes:
    – o backup vai ser sempre completo.
    – A restauração vai pode ocorrer por diversos motivos(restaurar o banco para um momento anterior, restaurar um banco perdido, restaurar BD de uma máquina que deu problema, restaurar em outro host e etc..).

    Obs:
    Tem que ser compatível para o 10g e 11g

  • #26845

    Bruno,

    Para realizar o backup completo de banco de dados Oracle usando o RMAN, sugiro utilizar o seguinte script:

    BACKUP COMPLETO EM ARCHIVELOG

    
    run {
    
    allocate channel t1 device type disk;
    
    sql 'alter system checkpoint';
    sql 'alter system switch logfile';
    sql 'alter system switch logfile';
    
    set command id to 'BACKUP DATABASE';
    
    backup as compressed backupset 
    incremental level 1 database 
    tag 'BKP_INC_1';
    
    backup as compressed backupset
    	current controlfile
    	tag 'BKP_CF';
    
    backup as compressed backupset
    	spfile
    	tag 'BKP_SPFILE';
    
    set command id to 'BACKUP ARCHIVED LOG';
    
    sql 'alter system archive log current';
    
    backup  backupset
    	archivelog all
    	delete all input
    	tag 'BKP_ARCHIVE';
    
    release channel t1;
    }
    

    Depois que fizer, vamos fazer o restore passo-a.-passo.

    Abraços,
    Rodrigo Almeida

  • #26846

    Depois, a ordem para restauração e recuperação deve ser a seguinte:

    1 – RESTORE SPFILE;
    2 – RESTORE CONTROLFILE;
    3- RESTORE DATABASE;
    4 – RECOVER DATABASE;

    E vamos que vamos…

  • #26848
    Profile photo of Bruno da Silva
    Bruno da Silva
    Participante

    Este script de backup é para 10g ou 11g?

    • Esta resposta foi modificada 2 anos, 1 meses atrás por Profile photo of Bruno da Silva Bruno da Silva.
  • #26850

    Brunão,

    É para ambos… se colocar para rodar em 10g, 11g ou 12c, vai funcionar!

    Executa ele no seu ambiente e depois vamos fazer os passos para restauração.

    Abraços,
    Rodrigo Almeida

  • #26851
    Profile photo of Bruno da Silva
    Bruno da Silva
    Participante

    No script de backup faltou um “as” no comando :
    backup as backupset
    archivelog all
    delete all input
    tag ‘BKP_ARCHIVE’;

  • #26854
    Profile photo of Bruno da Silva
    Bruno da Silva
    Participante

    O backup foi feito mais a onde se encontram os arquivos ? no flash_recover_area?
    Se eu setar o caminho do backup utilizando o format tem problema?

  • #26863

    O Backup por padrão vai parar no FRA (Flash Recovery Area) a menos que você diga através no canais para onde ele deveria copiar.

    Neste caso, como não existe nada, foi ao FRA.

    Acesse o RMAN

    
    #> rman target /
    
    

    Agora faça os seguintes comandos:

    
    rman> list bacup of database summary;
    

    Para ver os backups do seu banco de dados com resultados sumarizados.

    
    rman> list backup of spfile;
    

    Para visualizar o backup do seu SPFILE (Server Parameter file)

    
    rman> list backup of controlfile;
    

    Para verificar o backup do seu arquivo de controle (Control File)

    
    rman> list backup of database;
    

    Para visualizar o backup do seu banco de dados;

    
    rman> report schema;
    

    Para saber todas as tablespaces que estão no backup;

    
    rman> list backup of archivelog all;
    

    Para visualizar todos os backups gerados pelo banco de dados.

    PONTO IMPORTANTE

    Nunca perca nenhum Archived Log do seu banco de dados, ele é o arquivo responsável em realizar as recuperações do banco em Point-In-Time (Ponto de Recuperação por dia/hora/minuto/segundo) e consistência.

    Esse comando abaixo, é o comando de CROSSCHECK, ele é importante sempre executar para saber se os seus arquivos de backupset (DB ou ARCHIVE) estão presentes no FRA e/ou File System para utilizar nos comandos de RESTORE.

    
    rman> crosscheck backup of database;
    

    e

    
    rman> crosscheck backup of archivelog all;
    

    ou os Archived Logs correntes no servidor…

    
    rman> crosscheck archivelog all;
    

    Agora, uma vez que você realizou o backup, qual cenário quer trabalhar?

    Abraços,

  • #26864
    Profile photo of Bruno da Silva
    Bruno da Silva
    Participante

    Este tipo de backup faz o dados ficarem no servidor;
    eu precisaria setar uma pasta especifica para que os arquivos de backup sejam copiados, você comentou sobre setar o caminho do channel seria só isto ?
    ou como vi em um exemplo foi setado para cada backup um destino. ex:
    allocate channel t1 device type disk format ‘<pastas> + <nomeFile> %d_%t_%s_%p.bkp’;
    backup current controlfile format ‘<pastas> + controlfile_ %d_%t_%s_%p.bkp’;
    backup spfile format ‘<pastas> + spfile _%d_%t_%s_%p.bkp’;
    backup as backupset database format ‘<pastas> + DB_%d_%t_%s_%p.bkp’;

    o que vc me diz?
    lembrando que o objetivo de backup aqui proposto e feito por outro software que vai copiar o arquivo e armazena-lo em outro destino.

  • #26865

    Exatamente Bruno…

    Caso você queira realizar o backup em diretórios específicos do servidor, basta usar a cláusula FORMAT no CHANNEL ou nos comandos de BACKUP.

    Você pode usar o exemplo abaixo:

    
    run {
    allocate channel t1 device type disk;
    
    sql 'alter system checkpoint';
    sql 'alter system switch logfile';
    sql 'alter system switch logfile';
    
    backup as compressed backupset 
    incremental level 1 database 
    tag 'BKP_INC_1'
    format '/u01/backup/oracle/BKP_DB_%d_%t_%s.rman';
    
    backup as compressed backupset
    	current controlfile
    	tag 'BKP_CF'
           format '/u01/backup/oracle/BKP_CF_%d_%t_%s.rman';
    
    backup as compressed backupset
    	spfile
    	tag 'BKP_SP'
            format '/u01/backup/oracle/BKP_SP_%d_%t_%s.rman';
    
    sql 'alter system archive log current';
    
    backup as compressed backupset
    	archivelog all
    	delete all input
    	filesperset 10
    	maxsetsize=1G
    	tag 'BK_ARCHIVE'
            format '/u01/backup/oracle/BKP_ARCH_%d_%t_%s.rman';
    
    release channel t1;
    }
    

    Executa esse backup e arrume os diretórios “/u01/backup/oracle/” para o diretório desejado. E veja se consegue o seu objetivo.

  • #26866
    Profile photo of Bruno da Silva
    Bruno da Silva
    Participante

    show de bola ! funcionou perfeitamente!
    Agora vamos partir para a restauração;

    Cenários:
    1 – alteração indevida na tabela;
    2 – perda do banco de dados;
    3 – restaurar em um novo host com o mesmos dados;
    4- restauração mais de uma vez no mesmo banco, encontrei certa dificuldade.
    Algum outro caso comum que utilizem restore?

  • #26867

    Brunão,

    Agora é o seguinte, como você tem N cenários, no banco de dados Oracle é uma técnica e recurso diferente que irá depender de N fatores.

    Cenário 1

    Para esse cenário de alteração em uma tabela, ou seja, alteração de DADOS apenas, você pode usar o RMAN para realizar um TABLESPACE POINT-IN-TIME RECOVERY (TSPITR) ou usar a opção de FLASHBACK (Query/Transaction ou Table) que utilizará mais recursos e vai depender de ajustes do DBA no seu banco de dados, se usar FLASHBACK, aí não se utiliza RMAN.

    Cenário 2

    Esse sim, usa esse backup que acabou de realizar pelo script que fiz e segue a ordem de restauração que publiquei acima. Ele irá restaurar item a item.

    Cenário 3

    Pode-se usar o mesmo backup que realizamos, porém, com configuração de SET NEWNAME noscript do RMAN, mas para isso, vamos precisar de mais informações da sua atual base e depois do novo host.

    Cenário 4

    Mesmo procedimento dos cenários 2 e 3, porém, como certos cuidados das INCARNAÇÕES DO BANCO DE DADOS , é normal ter problemas mesmo na restauração do mesmo backup, mas podemos resolver isso conforme os erros vão aparecendo pra ti.

    O que pretende fazer primeiro?

  • #26870
    Profile photo of Bruno da Silva
    Bruno da Silva
    Participante

    fiz um script para restauração pegando informações da web mais não deu certo

      shutdown immediate;
      startup nomount;
      set DBID 1606249227;
      restore spfile
      to ‘C:\oracle\produt\10.1.0\oradata\spfiletemp.ora’
      from ‘C/testeBackup/bkp_spfile_virtos_875215263_18.rman’
      restore controlfile
      from ‘C:/testeBackup/bkp_cp_virtos_875215262_17.rman’
      startup force mount;
      run{
      allocate channel c1 device type disk;
      set until time “To_date(’24-03-2015 19:00:00′ , ‘DD-MM-YYYY HH24:MI:SS’)”;
      restore database
      from ‘C:/testeBackup/bkp_BD_virtos_875215250_16.rman’;
      recover database
      until time “to_date(’20-03-2015 19:00:00′, ‘dd-mm-yyyy HH24:mi:ss’)”;
      alter database open resetlogs;
      release channel c1;
      }
      exit;

      quando começa a executar o run da erro Rman-06509
      Oque estou fazendo de errado ou esqueci de fazer?

  • #26873
    Profile photo of Bruno da Silva
    Bruno da Silva
    Participante

    Vamos começar com o senário 2;

  • #26875
    Profile photo of Bruno da Silva
    Bruno da Silva
    Participante

    Qual seria as etapas para restauração no cenário 2
    Utilizei os script se postei mais não obtive sucesso

  • #26894

    Brunão,

    Faz o seguinte, o erro RMAN-06509 pode ser problemas na leitura dos arquivos de BACKSETSET, permissão de diretório ou até mesmo disponibilidade dos arquivos no controlfile.

    O que podemos fazer nesse momento, é o seguinte:

    – Valide os arquivos no diretório.

    Veja se todos os arquivos de BACKUPSET estão no diretório C:/testebackup

    – Verifique se tem permissão

    Veja qual usuário e as permissões que estão no seu arquivo de backupset

    – Execute o script abaixo:

    
    sql 'alter system checkpoint';
    crosscheck backup of archivelog all;
    crosscheck backup of database;
    delete noprompt expired backup of database;
    delete noprompt expired backup of archivelog all;
    shutdown immediate;
    startup nomount;
    set DBID 1606249227;
    restore spfile to ‘C:\oracle\produt\10.1.0\oradata\spfiletemp.ora’ from ‘C/testeBackup/bkp_spfile_virtos_875215263_18.rman’;
    restore controlfile from ‘C:/testeBackup/bkp_cp_virtos_875215262_17.rman’;
    startup force mount;
    

    Caso tenha erros, vamos realizar o restore por partes, primeiramente vamos realizar apenas o RESTORE DO SPFILE, como no script abaixo:

    
    shutdown immediate;
    startup nomount;
    set DBID 1606249227;
    restore spfile to ‘C:\oracle\produt\10.1.0\oradata\spfiletemp.ora’ from ‘C/testeBackup/bkp_spfile_virtos_875215263_18.rman’;
    shutdown immediate;
    startup nomount;
    

    Me fale agora os problemas que estão ocorrendo…

    OBS: Preciso de mais uns 5 dias para montar um LAB novo no meu note e te ajudo no passo-a-passo, estou numa correria danada!

    Abraços,

  • #26898
    Profile photo of David Siqueira
    David Siqueira
    Participante

    Brunão até aqui tudo perfeito, como o Almeida mesmo disse, você precisa primeiramente identificar o cenário que deseja para achar a estratégia adequada para a sua restauração. Lembrando sempre que em se tratando de Oracle Database 11g temos outras features que podem atende-lo muito mais rápido e facilmente do que com o uso do RMAN. É importante lembrar que caso não haja um servidor paralelo para você executar esses procedimentos de restauração do banco, você terá que proceder com uma restauração local e depois com o rename da base para que possa extrair a informação da tabela em questão. Pata recuperação de tabelas o melhor cenário é usar o EXPORT DATAPUMP mesmo, seria um backup lógico da base de dados, que possibilita a recuperação de dados de uma tabela perdidos, ou ainda pode usar as features de FLASHBACK TABLE que podem vir muito bem a calhar com a sua situação. Restore via RMAN para recuperar tabela é problemático demais, funciona, porém somente no 12c é possivel recuperar tabela de maneira fácil através de técnicas de RMAN, até a versão 11g é um parto faze-lo.

    Abraço

  • #26900

    Exatamente que o David disse…

    Porém precisamos saber em quais passos está!!!

    Abraços,

  • #26972
    Profile photo of Flávio Melo
    Flávio Melo
    Participante

    Olá Rodrigo,
    Qual a diferença ou qual a melhor opção entre o backup as backupset e um backup copy? Você teria algum exemplo de backup copy?

Você deve fazer login para responder a este tópico.