Proteja e recupere bases de dados Oracle num ambiente Windows

Antes de começar

Antes de poder descobrir, proteger e montar bases de dados Oracle num ambiente Windows, certifique-se de que verifica o seguinte:

  1. Verifique as seguintes definições no servidor da base de dados:

    1. A base de dados Oracle e o Oracle Listener estão em funcionamento (verifique os serviços do Windows).

    2. Confirme que existe uma entrada tns com o nome SID. O ficheiro tnsnames.ora encontra-se em

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

      %ORACLE_HOME%\bin\tnsping <SID>
      
  2. Verifique se o modo de registo está definido como Modo de registo de arquivo:

    sql> archive log list
    

    Se a base de dados estiver no modo de registo sem arquivo, regresse ao modo de registo com arquivo:

    sql> shutdown immediate;
    sql> startup mount;
    sql> alter database archivelog;
    sql> alter database open;
    
  3. Ative a monitorização de blocos de alterações da base de dados. Com o BCT da base de dados desativado, o tempo de cópia de segurança incremental é afetado. A funcionalidade de alteração da monitorização de bloqueios está disponível na Oracle Enterprise Edition. Execute uma consulta SQL para verificar se o acompanhamento de blocos de alterações está ativado. Execute a consulta:

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

Para ativar o acompanhamento de bloqueios de alterações:

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

Faça uma cópia de segurança de uma base de dados Oracle num ambiente Windows

Para fazer uma cópia de segurança de uma base de dados Oracle num ambiente Windows, siga estes passos:

  1. Defina os detalhes e as definições da aplicação para bases de dados Oracle.

  2. Aplique um plano de cópia de segurança para proteger a base de dados.

Problema conhecido

O Oracle 19c SQLPlus (sqlplus.exe) bloqueia ocasionalmente no Windows quando executa o comando de saída (Doc ID 2820655.1). Este erro é específico do Windows. A Oracle confirmou que este problema ocorre nas versões 19.10, 19.11 e 19.12 do SQLPlus. A Oracle disponibilizou estas soluções:

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

Recupere bases de dados Oracle num ambiente Windows manualmente através do RMAN para um ponto de cópia de segurança agendado se o archivelog não estiver protegido através do Backup and DR

Para recuperar uma base de dados Oracle completa num ambiente Windows:

  1. Monte a imagem instantânea da cópia de segurança da base de dados do Backup and DR de volta para o servidor Oracle, conforme detalhado no artigo Monte uma base de dados Oracle como uma montagem padrão.

  2. Defina o ambiente da base de dados e inicie a base de dados no estado no-mount usando o ficheiro de parâmetros do volume montado do Backup and DR (por exemplo, para um volume de base de dados montado em E:):

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

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

    sql> shutdown immediate;
    sql> startup nomount;
    
  5. Restaure o ficheiro de controlo através do RMAN a partir do volume montado do Backup and DR:

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

    rman> alter database mount;
    
  7. Catalogar o ficheiro de dados e a pasta do ficheiro de arquivo do volume montado do Backup and DR para o RMAN:

    rman> run
    {
    catalog start with 'E:\datafile' noprompt;
    catalog start with 'E:\archivelog' noprompt;
    }
    
  8. Restaurar e recuperar a base de dados:

    rman> run
    {
    restore database;
    recover database;
    }
    
  9. Abra a base de dados com a opção de registo de reposição:

    rman> alter database open resetlogs;
    

Recupere bases de dados Oracle num ambiente Windows manualmente através do RMAN para um ponto de cópia de segurança agendado com reversão do registo de arquivo protegido pelo Backup and DR

  1. Monte a imagem a partir do servidor da base de dados de origem para recuperar. Monte o instantâneo da cópia de segurança do Backup and DR novamente no servidor Oracle, conforme detalhado no artigo Monte uma base de dados Oracle como uma montagem padrão.

  2. Defina o ambiente da base de dados e inicie a base de dados no estado no-mount com o ficheiro de parâmetros do volume montado do Backup and DR. Neste exemplo, a imagem de cópia de segurança da base de dados está montada em: E:\ e o registo de arquivo protegido está montado em: Z:.

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

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

    ```sql
    shutdown immediate;
    startup nomount;
    ```
    
  5. Restaure o ficheiro de controlo através do RMAN a partir da imagem do registo de arquivo montada do Backup and DR:

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

    ```rman
    rman> alter database mount;
    ```
    
  7. Catalogar o ficheiro de dados e a pasta archivelog a partir da imagem de base de dados montada do Backup and DR e da imagem do registo 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. Restaurar e recuperar a base de dados:

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

    Para uma recuperação num momento específico, execute o comando de recuperação da seguinte forma:

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

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

    A base de dados está disponível para leitura e escrita.

Script de monitorização para verificar se os volumes da base de dados estão a ser montados

Se criar uma montagem com reconhecimento de aplicações, pode usar um script de monitorização para mostrar os volumes que estão a ser montados a partir do Backup and DR e os processos do Oracle em execução. As montagens conscientes da aplicação são descritas no artigo Montar uma base de dados Oracle como uma aplicação virtual.

Quando realizar uma montagem com reconhecimento de aplicações, pode usar este script de relógio. A localização do script tem de ser: C:\Program Files\Backup and DR\scripts. Os scripts executados em anfitriões Windows têm de ser ficheiros .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
    ```

Que produz um resultado como este:

    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