Proteger e recuperar bancos de dados Oracle em um ambiente Windows

Antes de começar

Antes de descobrir, proteger e montar bancos de dados Oracle em um ambiente do Windows, verifique o seguinte:

  1. Verifique as seguintes configurações no servidor de banco de dados:

    1. O banco de dados Oracle e o Oracle Listener estão em execução (verifique os serviços do Windows).

    2. Confirme se há uma entrada tns com o SID do nome. O arquivo tnsnames.ora está em

      %ORACLE_HOME%\network\admin
      
    3. Para verificar se a entrada de tns é válida, execute o seguinte comando:

      %ORACLE_HOME%\bin\tnsping <SID>
      
  2. Verifique se o modo de registro está definido como "Arquivo de registro":

    sql> archive log list
    

    Se o banco de dados estiver no modo de registro sem arquivamento, retorne-o ao modo de registro de arquivamento:

    sql> shutdown immediate;
    sql> startup mount;
    sql> alter database archivelog;
    sql> alter database open;
    
  3. Ative o rastreamento de blocos de mudança do banco de dados. Com o BCT do banco de dados desativado, o tempo de backup incremental é afetado. O recurso de rastreamento de mudança de bloco está disponível no Oracle Enterprise Edition. Execute uma consulta SQL para verificar se o rastreamento de blocos de mudança está ativado. Execute a consulta:

    sqlplus / as sysdba
    sql> select * from v$block_change_tracking;
    

Para ativar o acompanhamento de alterações em blocos:

    sql> alter database enable block change tracking
    using file '<Oracle home directory>\orcl.bct';

Fazer backup de um banco de dados Oracle em um ambiente Windows

Para fazer backup de um banco de dados Oracle em um ambiente Windows, siga estas etapas:

  1. Defina os detalhes e as configurações do aplicativo para bancos de dados Oracle.

  2. Aplique um plano de backup para proteger o banco de dados.

Problema conhecido

O Oracle 19c SQLPlus (sqlplus.exe) às vezes trava no Windows ao executar o comando de saída (ID de documento 2820655.1). Esse bug é específico do Windows. A Oracle confirmou que esse problema ocorre nas versões 19.10, 19.11 e 19.12 do SQLPlus. A Oracle forneceu estas soluções:

  • Use o SQL*Plus 21.1 ou versão mais recente (ou)
  • Aplique o patch:31466370. Esse patch está disponível para as versões 19.11 e 19.13.

Recuperar bancos de dados Oracle em um ambiente Windows manualmente usando o RMAN para um ponto de backup programado se o arquivo de registro não estiver protegido por backup e DR

Para recuperar um banco de dados Oracle inteiro em um ambiente Windows, faça o seguinte:

  1. Monte o snapshot de backup do banco de dados do Backup e DR de volta ao servidor Oracle, conforme detalhado em Montar um banco de dados Oracle como uma montagem padrão.

  2. Defina o ambiente do banco de dados e inicie-o sem montagem usando o arquivo de parâmetro do volume montado de backup e DR (por exemplo, para um volume de banco de dados montado em E:):

    sqlplus / as sysdba
    sql> startup nomount pfile='E:\<sid>___backup.ora';
    
  3. Crie um spfile a partir de um pfile:

    sql> create spfile='%ORACLE_HOME%\database\spfile<sid>.ora'
    from pfile='E:\<sid>___backup.ora';
    
  4. Inicie o banco de dados com o spfile no estado nomount:

    sql> shutdown immediate;
    sql> startup nomount;
    
  5. Restaure o arquivo de controle usando o RMAN no volume montado de backup e DR:

    rman target /
    rman> restore controlfile from 'E:\cf-D_<sid>-id_<id>.ctl';
    
  6. Monte o banco de dados:

    rman> alter database mount;
    
  7. Crie um catálogo do arquivo de dados e da pasta de arquivos do volume montado de backup e DR para o RMAN:

    rman> run
    {
    catalog start with 'E:\datafile' noprompt;
    catalog start with 'E:\archivelog' noprompt;
    }
    
  8. Restaure e recupere o banco de dados:

    rman> run
    {
    restore database;
    recover database;
    }
    
  9. Abra o banco de dados com a opção de redefinir registro:

    rman> alter database open resetlogs;
    

Recuperar bancos de dados Oracle em um ambiente Windows manualmente usando o RMAN para um ponto de backup programado com reversão de backup e arquivo de registro protegido por DR

  1. Monte a imagem do servidor de banco de dados de origem para recuperar. Monte o snapshot de backup do Backup e DR de volta ao servidor Oracle, conforme detalhado em Montar um banco de dados Oracle como uma montagem padrão.

  2. Defina o ambiente do banco de dados e inicie-o no estado sem montagem usando o arquivo de parâmetro do volume montado de backup e DR. Neste exemplo, a imagem de backup do banco de dados é montada em: E:\ e o registro de arquivo protegido é montado em: Z:.

       sqlplus / as sysdba
    
       startup nomount pfile='E:\<sid>___backup.ora';
    
  3. Crie um spfile a partir de um pfile:

    sql> create spfile='%ORACLE_HOME%\database\spfile<sid>.ora' from
    pfile='E:\<sid>___backup.ora';
    
  4. Inicie o banco de dados com o spfile no estado nomount:

    ```sql
    shutdown immediate;
    startup nomount;
    ```
    
  5. Restaure o arquivo de controle usando o RMAN da imagem de registro de arquivo montada do backup e DR:

    ```rman
    rman target /
    rman> restore controlfile from 'Z:\cf-D_<sid>-id_<id>.ctl';
    ```
    
  6. Monte o banco de dados:

    ```rman
    rman> alter database mount;
    ```
    
  7. Crie um catálogo do arquivo de dados e da pasta de registros de backup e DR da imagem do banco de dados montada e da imagem do registro de backup para o RMAN:

    ```rman
    rman> run
    {
    catalog start with 'E:\datafile' noprompt;
    catalog start with 'E:\archivelog' noprompt;
    catalog start with 'Z:\archivelog' noprompt;
    }
    ```
    
  8. Restaure e recupere o banco de dados:

    ```rman
    rman> run
    {
    restore database;
    recover database;
    }
    ```
    

    Para uma recuperação pontual específica, execute o comando de recuperação da seguinte maneira:

    ```rman
    rman> run
     {
      restore database;
      recover database until time "to_date('<time stamp>','yyyymmddhh24mi')";
     }
     ```
    
  9. Abra o banco de dados com a opção de redefinir registro:

    ```rman
    rman> alter database open resetlogs;
    ```
    

    O banco de dados está disponível para leitura e gravação.

Verificar o script para verificar se os volumes do banco de dados estão sendo montados

Se você criar uma montagem compatível com o aplicativo, poderá usar um script de monitoramento para mostrar os volumes que estão sendo montados do Backup e DR e os processos do Oracle em execução. As montagens com conhecimento do aplicativo são descritas em Como montar um banco de dados Oracle como um aplicativo virtual.

Ao realizar uma montagem ciente do aplicativo, você pode usar este script de observação. O local do script precisa ser: C:\Program Files\Backup and DR\scripts. Os scripts executados em hosts do Windows precisam ser arquivos .bat ou .vbs.

    ```Windows
    @echo off
    :loop
    echo. > watchtemp
    echo ------------------ >> watchtemp
    echo  Oracle Processes >> watchtemp
    echo ------------------ >> watchtemp
    tasklist /svc | findstr oracle >> watchtemp
    echo. >> watchtemp
    echo ------------------ >> watchtemp
    echo   Backup and DR Mounts >> watchtemp
    echo ------------------ >> watchtemp
    wmic volume get label, name | findstr Backup and DR >> watchtemp
    echo. >> watchtemp
    cls
    type watchtemp
    timeout 2 > null
    goto loop
    ```

O que produz uma saída como esta:

    Oracle Processes
    ------------------
    oracle.exe                    1492 OracleServiceORCL
    oracle.exe                    3768 OracleServiceTestDB
    oracle.exe                     872 OracleServiceTestDB2
    ------------------
      Backup and DR Mounts
    ------------------
    Backup and DR-Backup-ORCL    D:\mount_1