Prepare bancos de dados Oracle em um ambiente Windows para backup e DR em um appliance de backup/recuperação

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 nome SID. O arquivo tnsnames.ora está em

      %ORACLE_HOME%\network\admin
      
    3. Verifique se a entrada tns é válida executando:

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

    sql> archive log list
    

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

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

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

Para ativar o rastreamento 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. No console de gerenciamento do dispositivo, defina Detalhes e 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 SQL*Plus (sqlplus.exe) às vezes trava no Windows ao executar o comando de saída (ID do 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 SQL*Plus. A Oracle forneceu estas soluções:

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

Recuperar bancos de dados Oracle em um ambiente do Windows manualmente usando o RMAN para um ponto de backup programado se o archivelog não estiver protegido pelo Backup e DR

Para recuperar um banco de dados Oracle inteiro em um ambiente do Windows:

  1. Monte o snapshot de backup do banco de dados do Backup e DR de volta no 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 banco de dados no estado 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 com base no pfile:

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

    sql> shutdown immediate;
    sql> startup nomount;
    
  5. Restaure o arquivo de controle usando o RMAN do volume montado do 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. Catalogue o arquivo de dados e a pasta de arquivos do volume montado do 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 redefinição de registro:

    rman> alter database open resetlogs;
    

Recuperar bancos de dados Oracle em um ambiente do Windows manualmente usando o RMAN para um ponto de backup programado com roll-forward do archivelog protegido por backup e DR

  1. Monte o backup do servidor de banco de dados de origem para recuperar. Monte o snapshot de backup do Backup e DR de volta no 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 banco de dados no estado sem montagem usando o arquivo de parâmetro do volume montado do Backup e DR. Neste exemplo, o backup do banco de dados é montado 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 com base no pfile:

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

    ```sql
    shutdown immediate;
    startup nomount;
    ```
    
  5. Restaure o arquivo de controle usando o RMAN do backup de registro de arquivo montado 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. Catalogue o arquivo de dados e a pasta archivelog do backup do banco de dados montado pelo Backup e DR e do backup do registro de arquivo 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 redefinição de registro:

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

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

Script de monitoramento para verificar se os volumes do banco de dados estão sendo montados

Se você criar uma montagem com reconhecimento de 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 reconhecimento de aplicativos são descritas em Como montar um banco de dados Oracle como um aplicativo virtual.

Ao realizar uma montagem com reconhecimento de aplicativo, use este script de monitoramento. O local do script precisa ser: C:\Arquivos de Programas\Backup e 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