Validar Prontidão de DR

Revise as melhores práticas de prontidão para recuperação de desastres e verifique a configuração de recuperação de desastres para eventos planejados e não planejados.

Sobre Prontidão de DR

Revise as melhores práticas de prontidão para recuperação de desastres (DR).

Use o Data Guard Ativo para descarregar a carga de trabalho somente leitura para o banco de dados stand-by para fornecer validação contínua em nível de aplicativo de que o stand-by está pronto para produção. Isso fornece um nível de garantia, além da validação contínua do nível de bloco do Oracle executada pelos processos de aplicação do Oracle Data Guard.

Use um banco de dados stand-by de snapshot para criar uma réplica exata de um banco de dados de produção para fins de desenvolvimento e teste. Coloque periodicamente o stand-by no modo de leitura/gravação (usando o Stand-by de Snapshot do Data Guard) para validar sua prontidão para suportar cargas de trabalho de produção de leitura/gravação. Um stand-by de snapshot também pode ser usado para um nível final de testes funcionais e de desempenho de patches e upgrades, pois o tamanho do sistema DR é semelhante ao sistema de produção. Um Stand-by de Snapshot continua recebendo redo do banco de dados principal onde ele é arquivado para uso posterior, que fornece proteção de dados em todos os momentos. No entanto, o tempo de recuperação (RTO) será estendido pelo tempo necessário para converter o Stand-by de Snapshot novamente no banco de dados stand-by se um failover for necessário durante o teste. O armazenamento adicional é necessário para a área de recuperação rápida quando um stand-by está no modo de snapshot (para reter o redo arquivado recebido do banco de dados de produção principal para uso posterior e os redo e flashback atuais gerados pelo stand-by de snapshot).

Veja a seguir alguns dos benefícios do uso de um banco de dados stand-by de snapshot:

  • Ele fornece uma réplica exata de um banco de dados de produção para desenvolvimento e teste, mantendo a proteção de dados em todos os momentos. Você pode usar a opção Oracle Real Application Testing para capturar a carga de trabalho do banco de dados principal e, em seguida, repeti-la para fins de teste no stand-by do snapshot.
  • Ele é facilmente atualizado para conter dados de produção atuais convertendo em um stand-by físico e ressincronizando.

Converta o Banco de Dados Stand-by em Stand-by de Snapshot

Quando você quiser uma réplica exata de um banco de dados de produção, poderá usar o Oracle Data Guard Broker para converter o banco de dados stand-by físico em um banco de dados stand-by de snapshot e validar o failover.

Um stand-by de snapshot é um banco de dados stand-by totalmente atualizável que é criado a partir de um banco de dados stand-by físico. Nos bancos de dados stand-by de snapshot, os dados redo são recebidos, mas não aplicados até que o banco de dados stand-by de snapshot seja convertido em um banco de dados stand-by físico.

A interface de linha de comandos do Oracle Data Guard (DGMGRL) permite gerenciar uma configuração do Oracle Data Guard broker e seus vários membros diretamente da interface de linha de comandos.

  1. Efetue log-in em uma sessão DGMGRL na instância do banco de dados stand-by com o nome de usuário e senha sys.
    DGMRGL> connect
    Username: sys
    Password:
    A saída terá uma aparência semelhante à seguinte:
    Connected to "ORCLCDB_iad1s3"
    Connected as SYSDBA.
  2. Converta o banco de dados stand-by físico em um banco de dados stand-by de snapshot.
    DGMGRL> convert database standby_database_unique_name (standbyDB) to snapshot standby;
    Quando a conversão for concluída, a saída terá uma linha semelhante a:
    Converting database "standby_database_unique_name" to a Snapshot Standby database, please wait...
    Database "standby_database_unique_name" converted successfully
  3. Exiba a configuração para verificar a conversão.
    DGMGRL> show configuration;
    A saída terá uma aparência semelhante à seguinte:
    Configuration - onpremdr
      Protection Mode: MaxPerformance
      Members:
      orclcdb_iad1s3 - Primary database
        orclcdb        - Physical standby database 
    Fast-Start Failover:  Disabled
    Configuration Status:
    SUCCESS   (status updated 26 seconds ago)
  4. Converta o stand-by de snapshot em um banco de dados stand-by físico.
    DGMGRL> convert database standby_database_unique_name to physical standby;
    A saída terá uma aparência semelhante à seguinte:
    Converting database "orclcdb" to a Physical Standby database, please wait...
    Operation requires a connection to database "orclcdb_iad1s3"
    Connecting ...
    Connected to "ORCLCDB_IAD1S3"
    Connected as SYSDBA.
    Operation requires shut down of instance "ORCLCDB" on database "orclcdb"
    Shutting down instance "ORCLCDB"...
    Connected to "ORCLCDB"
    Database closed.
    Database dismounted.
    ORACLE instance shut down.
    Operation requires start up of instance "ORCLCDB" on database "orclcdb"
    Starting instance "ORCLCDB"...
    Connected to an idle instance.
    ORACLE instance started.
    Connected to "ORCLCDB"
    Database mounted.
    Connected to "ORCLCDB"
    Continuing to convert database "orclcdb" ...
    Database "orclcdb" converted successfully
  5. Exiba a configuração para verificar a conversão.
    DGMGRL> show configuration;
    A saída terá uma aparência semelhante à seguinte:
    Configuration - onpremdr
    
      Protection Mode: MaxPerformance
      Members:
      orclcdb_iad1s3 - Primary database
        orclcdb        - Physical standby database 
          Warning: ORA-16854: apply lag could not be determined
    
    Fast-Start Failover:  Disabled
    
    Configuration Status:
    WARNING   (status updated 11 seconds ago)

Definir os Parâmetros do Oracle Data Guard

Antes de executar um switchover, defina os parâmetros do Oracle Data Guard nas instâncias do banco de dados principal e stand-by.

  1. No banco de dados principal local, verifique o SCN (system change number).
    select standby_became_primary_scn from v$database;
    A saída terá uma aparência semelhante à seguinte:
    STANDBY_BECAME_PRIMARY_SCN
    --------------------------
                                  0
  2. Verifique se o flashback não está ativado no banco de dados principal.
    select flashback_on from v$database;
    A saída terá uma aparência semelhante à seguinte:
    FLASHBACK_ON
    ------------------
    NO
  3. Na instância on-premises, crie um diretório de recuperação com o mesmo nome de banco de dados principal que o Usuário do Oracle.
    Neste exemplo, ORCLCDB é o nome do banco de dados local.
    [oracle@bastion dbhome_1]$ cd /opt/oracle/
    [oracle@bastion oracle]$ mkdir recovery
    [oracle@bastion oracle]$ cd recovery/
    [oracle@bastion recovery]$ mkdir ORCLCDB
    [oracle@bastion oracle]$ cd ORCLCDB /
    Confirme o caminho completo.
    $ pwd
    /opt/oracle/recovery/ORCLCDB
  4. Defina o tamanho do parâmetro DB_RECOVERY_FILE_DEST_SIZE para atender ao tamanho do banco de dados.
    O exemplo a seguir usa 20G como o tamanho dos dados de amostra. Defina o tamanho dos dados com base no banco de dados.
    SQL> alter system set DB_RECOVERY_FILE_DEST_SIZE=20G;
    System altered
  5. Defina o destino do arquivo de recuperação do banco de dados para o diretório criado anteriormente.
    SQL> alter system set db_recovery_file_dest = '/opt/oracle/recovery/on_premises_SID';
    System altered
  6. Ativar flashback no banco de dados principal.
    SQL> alter database flashback on;
    Database altered
  7. Confirme se o flashback do banco de dados está ativado (ativado).
    SQL> select flashback_on from v$database;
    A saída terá uma aparência semelhante à seguinte:
    FLASHBACK_ON
    ------------------
    YES
  8. Determine se o flashback está ativado no banco de dados stand-by do OCI na nuvem.
    SQL> select flashback_on from v$database;
    A saída terá uma aparência semelhante à seguinte:
    FLASHBACK_ON
    ------------------
    NO
  9. Consulte o status do modo aberto para o banco de dados stand-by na nuvem.
    SQL> select open_mode from v$database;
    A saída terá uma aparência semelhante à seguinte:
    OPEN_MODE
    -------------------- 
    MOUNTED
  10. Defina o flashback na instância do banco de dados na nuvem.
    SQL> alter database recover managed standby database cancel;
    Database altered
  11. Consulte o status do modo aberto para o banco de dados stand-by na nuvem.
    SQL> select open_mode from v$database;
    A saída terá uma aparência semelhante à seguinte:
    OPEN_MODE
    -------------------- 
    MOUNTED
  12. Ativar flashback para o banco de dados stand-by.
    SQL> alter database flashback on;
    Database altered
  13. Desconecte o stand-by da sessão.
    SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
    Database altered
  14. Confirme se o flashback do banco de dados está ativado (ativado).
    SQL> select flashback_on from v$database;
    FLASHBACK_ON
    ------------------
    YES
  15. Exiba os parâmetros de retenção.
    SQL> show parameter_retention;
    A saída terá uma aparência semelhante à seguinte:
    NAME				     TYPE	 VALUE
    ------------------------------------ ----------- ------------------------------
    db_flashback_retention_target	     integer	 1440
    undo_retention			      integer	 900

Alternar o Banco de Dados Principal do Local para o OCI

Quando você tiver uma atividade planejada, como manutenção, poderá tornar o banco de dados no OCI (Oracle Cloud Infrastructure) o banco de dados principal com perda de dados zero. Um switchover é um evento planejado iniciado no banco de dados local e concluído na instância do banco de dados na nuvem.

  1. Efetue log-in em uma sessão DGMGRL no banco de dados local com um nome de usuário e senha sys.
    DGMRGL> connect
  2. No banco de dados local, valide se o banco de dados stand-by está pronto para switchover e failover.
    Neste exemplo, o banco de dados principal é orclcdb e o banco de dados stand-by é orclcdb_iadls3.
    DGMGRL> validate database orclcdb_iad1s3 (StandbyDatabaseOCIInstance)
    A saída terá uma aparência semelhante à seguinte:
    Database Role:     Physical standby database
      Primary Database:  orclcdb
    
      Ready for Switchover:  Yes
      Ready for Failover:    Yes (Primary Running)
    
      Managed by Clusterware:
        orclcdb       :  NO             
        orclcdb_iad1s3:  NO             
        Validating static connect identifier for the primary database orclcdb...
        The static connect identifier allows for a connection to database "orclcdb".
    
      Log Files Cleared:
        orclcdb Standby Redo Log Files:         Cleared
        orclcdb_iad1s3 Online Redo Log Files:   Not Cleared
        orclcdb_iad1s3 Standby Redo Log Files:  Available
    
      Current Log File Groups Configuration:
        Thread #  Online Redo Log Groups  Standby Redo Log Groups Status       
                  (orclcdb)               (orclcdb_iad1s3)                     
        1         3                       2                       Insufficient SRLs
    
      Future Log File Groups Configuration:
        Thread #  Online Redo Log Groups  Standby Redo Log Groups Status       
                  (orclcdb_iad1s3)        (orclcdb)                            
        1         3                       0                       Insufficient SRLs
        Warning: standby redo logs not configured for thread 1 on orclcdb
  3. No banco de dados local (principal), execute o comando para alternar para o banco de dados stand-by.
    DGMGRL> switchover to orclcdb_iad1s3 (StandbyDatabaseOCIInstance)
    A saída terá uma aparência semelhante à seguinte:
    Performing switchover NOW, please wait...
    New primary database "orclcdb_iad1s3" is opening...
    Operation requires start up of instance "ORCLCDB" on database "orclcdb"
    Starting instance "ORCLCDB"...
    Connected to an idle instance.
    ORACLE instance started.
    Connected to "ORCLCDB"
    Database mounted.
    Database opened.
    Connected to "ORCLCDB"
    Switchover succeeded, new primary is "orclcdb_iad1s3"
  4. No banco de dados local, exiba o status da configuração.
    DGMGRL> show configuration
    A saída terá uma aparência semelhante à seguinte:
    Configuration - onpremdr
    
      Protection Mode: MaxPerformance
      Members:
      orclcdb_iad1s3 - Primary database
      orclcdb        - Physical standby database 
    
    Fast-Start Failover:  Disabled
    
    Configuration Status:
    SUCCESS   (status updated 70 seconds ago)
  5. No banco de dados na nuvem, determine o status do modo aberto.
    SQL> select open_mode from v$database;
    A saída terá uma aparência semelhante à seguinte:
    OPEN_MODE
    -------------------- 
    READ WRITE
  6. No banco de dados local, determine o status do modo aberto.
    SQL> select open_mode from v$database;
    A saída terá uma aparência semelhante à seguinte:
    OPEN_MODE
    -------------------- 
    READ ONLY WITH APPLY
O banco de dados stand-by na nuvem é agora o banco de dados principal.

Alternar o Banco de Dados Principal de OCI para On-Premises

Depois de tornar a instância do banco de dados no Oracle Cloud Infrastructure (OCI) o banco de dados principal, use a interface de linha de comandos Oracle Data Guard (DGMGRL) na instância do banco de dados OCI para alternar e tornar seu banco de dados local seu banco de dados principal novamente.

  1. Valide as atribuições do banco de dados para o banco de dados principal na nuvem.
    Neste exemplo, ORCLCDB é o nome do banco de dados local e orclcdb_iad1s3 é o nome da instância do banco de dados na nuvem.
    DGMGRL> validate database orclcdb;
    A saída pode ser semelhante à seguinte:
    Database Role: Physical standby database
      Primary Database: orclcdb_iad1s3
    
      Ready for Switchover:  Yes
      Ready for Failover:    Yes (Primary Running)
    
      Managed by Clusterware:
        orclcdb_iad1s3:  NO             
        orclcdb       :  NO             
        Validating static connect identifier for the primary database orclcdb_iad1s3...
    Unable to connect to database using (DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.0.2.1)(PORT=1539)))(CONNECT_DATA=(SERVICE_NAME=ORCLCDB_iad1s3_DGMGRL.sub08120021431.onpremocidrvcn.example.com)(INSTANCE_NAME=ORCLCDB)(SERVER=DEDICATED)(STATIC_SERVICE=TRUE)))
    ORA-12541: TNS:no listener
    
    Failed.
        Warning: Ensure primary database's StaticConnectIdentifier property
        is configured properly so that the primary database can be restarted
        by DGMGRL after switchover
    
      Log Files Cleared:
        orclcdb_iad1s3 Standby Redo Log Files:  Cleared
        orclcdb Online Redo Log Files:          Not Cleared
        orclcdb Standby Redo Log Files:         Available
    
      Current Log File Groups Configuration:
        Thread #  Online Redo Log Groups  Standby Redo Log Groups Status       
                  (orclcdb_iad1s3)        (orclcdb)                            
        1         3                       2                       Insufficient SRLs
    
      Future Log File Groups Configuration:
        Thread #  Online Redo Log Groups  Standby Redo Log Groups Status       
                  (orclcdb)               (orclcdb_iad1s3)                     
        1         3                       2                       Insufficient SRLs

    Se você receber a mensagem de advertência do identificador de conexão estática, revise os parâmetros de configuração, o nome do serviço SID, o endereço IP do host ou o endereço da porta.

  2. Efetue log-in em uma sessão DGMGRL com um nome de usuário e senha sys.
    DGMRGL> connect
  3. Revise o identificador de conexão estático do banco de dados local.
    DGMGRL> show database orclcdb StaticConnectIdentifier
    Revise a saída para verificar se os parâmetros StaticConnectIdentifier estão corretos. Veja um exemplo a seguir:
    DGMGRL> show database orclcdb StaticConnectIdentifier
      StaticConnectIdentifier = '(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.0.2.1)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=ORCLCDB)(INSTANCE_NAME=ORCLCDB)(SERVER=DEDICATED)(STATIC_SERVICE=TRUE)))'
  4. Revise o identificador de conexão estático para a instância do banco de dados na nuvem.
    DGMGRL> show database orclcdb_iad1s3 StaticConnectIdentifier
      StaticConnectIdentifier = 
    '(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=10.10.30.3)(PORT=1539)
    ))(CONNECT_DATA=(SERVICE_NAME=ORCLCDB_iad1s3_DGMGRL.sub08120021431.onpremocidrvcn.examplevcn.com) 
    INSTANCE_NAME=ORCLCDB)(SERVER=DEDICATED)))'
    Revise a saída para verificar se os parâmetros StaticConnectIdentifier, como o número da porta e o nome do serviço, estão corretos.
  5. Corrija quaisquer parâmetros StaticConnectIdentifier, como o número da porta e o nome do serviço.
    Ao editar as propriedades, você deve usar a interface de linha de comandos do Oracle Data Guard (DGMGRL) sem quebras de linha. Este exemplo corrige o número da porta e o nome do serviço da instância do banco de dados na nuvem (orclcdb_iad1s3).
    DGMGRL> edit database 'orclcdb_iad1s3' set property StaticConnectIdentifier = '(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.0.2.1)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=ORCLCDB)(INSTANCE_NAME=ORCLCDB)(SERVER=DEDICATED)))';
    Property "staticconnectidentifier" updated
  6. Valide a instância do banco de dados na nuvem.
    DGMGRL> validate database orclcdb_iad1s3;
    A saída terá uma aparência semelhante à seguinte:
    Database Role:    Primary database
      Ready for Switchover:  Yes
    
      Managed by Clusterware:
        orclcdb_iad1s3:  NO             
        Validating static connect identifier for the primary database orclcdb_iad1s3...
        The static connect identifier allows for a connection to database "orclcdb_iad1s3".
  7. Valide o banco de dados local.
    DGMGRL> validate database orclcdb;
    A saída terá uma aparência semelhante à seguinte:
    Database Role:     Physical standby database
      Primary Database:  orclcdb_iad1s3
      Ready for Switchover:  Yes
      Ready for Failover:    Yes (Primary Running)
    
      Managed by Clusterware:
        orclcdb_iad1s3:  NO             
        orclcdb       :  NO             
        Validating static connect identifier for the primary database orclcdb_iad1s3...
        The static connect identifier allows for a connection to database "orclcdb_iad1s3".
    
      Standby Apply-Related Information:
        Apply State:      Running
        Apply Lag:        2 seconds (computed 7 seconds ago)
        Apply Delay:      0 minutes
    
      Log Files Cleared:
        orclcdb_iad1s3 Standby Redo Log Files:  Cleared
        orclcdb Online Redo Log Files:          Not Cleared
        orclcdb Standby Redo Log Files:         Available
    
      Current Log File Groups Configuration:
        Thread #  Online Redo Log Groups  Standby Redo Log Groups Status       
                  (orclcdb_iad1s3)        (orclcdb)                            
        1         3                       2                       Insufficient SRLs
    
      Future Log File Groups Configuration:
        Thread #  Online Redo Log Groups  Standby Redo Log Groups Status       
                  (orclcdb)               (orclcdb_iad1s3)                     
        1         3                       2                       Insufficient SRLs
  8. Exiba e revise a configuração.
    DGMGRL> show configuration;
    A saída terá uma aparência semelhante à seguinte:
    Configuration - onpremdr
    
      Protection Mode: MaxPerformance
      Members:
      orclcdb_iad1s3 - Primary database
        orclcdb        - Physical standby database 
    
    Fast-Start Failover:  Disabled
    
    Configuration Status:
    SUCCESS   (status updated 27 seconds ago)
  9. Alternar da instância do banco de dados no OCI para o banco de dados local.
    DGMGRL> switchover to orclcdb;
    A saída terá uma aparência semelhante à seguinte:
    Performing switchover NOW, please wait...
    Operation requires a connection to database "orclcdb"
    Connecting ...
    Connected to "ORCLCDB"
    Connected as SYSDBA.
    New primary database "orclcdb" is opening...
    Operation requires start up of instance "ORCLCDB" on database "orclcdb_iad1s3"
    Starting instance "ORCLCDB"...
    Connected to an idle instance.
    ORACLE instance started.
    Connected to "ORCLCDB_iad1s3"
    Database mounted.
    Database opened.
    Connected to "ORCLCDB_iad1s3"
    Switchover succeeded, new primary is "orclcdb"
    Após a montagem do banco de dados, você poderá receber a seguinte advertência:
    ORA-16000: database or pluggable database open for read-only access  
    
    Please complete the following steps to finish switchover:
           start up instance "ORCLCDB" of database "orclcdb" 

    Você pode ignorar a advertência e continuar para a próxima etapa.

  10. No stand-by, que agora é o principal, conecte e revise a configuração.
    DGMGRL> show configuration;
    A saída terá uma aparência semelhante à seguinte:
    Configuration - onpremdr
    
      Protection Mode: MaxPerformance
      Members:
      orclcdb        - Primary database
        orclcdb_iad1s3 - Physical standby database 
    
    Fast-Start Failover:  Disabled
    
    Configuration Status:
    SUCCESS   (status updated 86 seconds ago)
  11. Na instância do banco de dados principal, ORCLCDB, verifique se o modo é read write.
    SQL> select database_role, open_mode from v$database;
    DATABASE_ROLE	 OPEN_MODE
    ---------------- --------------------
    PRIMARY 	   READ WRITE
  12. (Opcional) Você pode usar o comando verbose para exibir um dump de pilha completo, incluindo a atribuição, o estado, a instância, as propriedades e a localização do log de Alerta e do log do Data Guard Broker.
    DGMGRL> show database verbose orclcdb

Você pode alternar o banco de dados principal entre o banco de dados local e a instância do banco de dados OCI.