Implantar Instâncias do Active Data Guard Far Sync

Implante instâncias do Far Sync em VMs do OCI Compute em cada região para garantir zero perda de dados entre regiões.

  1. Crie um arquivo de controle Far Sync a partir do banco de dados Principal e copie-o para os hosts Far Sync.
    SQL> alter database create far sync instance controlfile as '/home/oracle/controlfs.ctl';

    Copie o arquivo de controle recém-criado para os hosts da instância do Far Sync.

    scp -p controlfs.ctl farsync-region1:/u01/app/oracle/oradata/fstor/controlfs/
    scp -p controlfs.ctl farsync-region2:/u01/app/oracle/oradata/fssyd/controlfs/
  2. Copie o arquivo de senha do banco de dados Principal para os hosts do Far Sync usando os nomes de instância do Far Sync.
    Neste exemplo, a instância do Far Sync na região Principal (Região 1) será chamada de FSTOR. Portanto, o nome do arquivo de senha será orapwFSTOR.
    # check the location of the password file
    SQL> select file_name from v$passwordfile_info;
                        
    # as grid user, copy the file from ASM to the local filesystem
    asmcmd -p
    cp +DATAC2/DB_REGION1/PASSWORD/pwddb_region1.421.1185102507 /home/grid/orapw
                       
    # as root user, change the owner of the password file to oracle user
    cp /home/grid/orapw /home/oracle/
    chown oracle:oinstall /home/oracle/orapw
                        
    # copy the files to the Far Sync instance hosts using the new names "orapwFSTOR" and "orapwFSSYD"
    scp -p /home/oracle/orapw farsync-region1:/u01/app/oracle/product/19c/dbhome_1/dbs/orapwFSTOR
    scp -p /home/oracle/orapw farsync-region2:/u01/app/oracle/product/19c/dbhome_1/dbs/orapwFSSYD
  3. Crie um arquivo de parâmetros para a instância do Far Sync a partir do banco de dados Principal, copie-o para os hosts da instância do Far Sync e ajuste os parâmetros para refletir seus valores de parâmetros e caminhos de diretório para a instância do Far Sync. Como alternativa, você pode começar com um novo arquivo de parâmetros nos hosts da instância do Far Sync (por exemplo, na região Principal).
    1. Na região Principal (FSTOR):
      # create a parameter file
      vi /u01/app/oracle/product/19c/dbhome_1/dbs/init_FSTOR.ora
      *.db_name='DBTOR'
      *.db_unique_name='FSTOR'
      *.compatible='19.0.0'
      *.control_files='/u01/app/oracle/oradata/fstor/controlfs/controlfs.ctl'
      *.diagnostic_dest='/u01/app/oracle/oradata/fstor/diag/'
      *.core_dump_dest='/u01/app/oracle/oradata/fstor/coredump/'
      *.audit_file_dest='/u01/app/oracle/oradata/fstor/audit/'
      *.audit_trail='DB'
      *.db_recovery_file_dest='/u01/app/oracle/oradata/fstor/fra/'
      *.db_recovery_file_dest_size=250g
      *.dg_broker_config_file1='/u01/app/oracle/oradata/fstor/dg_broker/fstor_01.dat'
      *.dg_broker_config_file2='/u01/app/oracle/oradata/fstor/dg_broker/fstor_02.dat'
      *.dg_broker_start=TRUE*.dispatchers='(PROTOCOL=TCP) (SERVICE=FSTORXDB)'
      *.standby_file_management='AUTO'
                                  
      # start the instance with the parameter file
      export ORACLE_SID=FSTOR
      sqlplus / as sysdba
      startup pfile='/u01/app/oracle/product/19c/dbhome_1/dbs/init_FSTOR.ora' nomount;
                                  
      # create an spfile
      create spfile='/u01/app/oracle/product/19c/dbhome_1/dbs/spfileFSTOR.ora' from pfile='/u01/app/oracle/product/19c/dbhome_1/dbs/init_FSTOR.ora';
                                  
      # restart the instance with the spfile
      shutdown immediate;
      startup mount;
      select name, db_unique_name, database_role, open_mode from v$database;
    2. Na região Stand-by (FSSYD):
      # create a parameter file
      vi /u01/app/oracle/product/19c/dbhome_1/dbs/init_FSSYD.ora
      *.db_name='DBTOR'
      *.db_unique_name='FSSYD'
      *.compatible='19.0.0'
      *.control_files='/u01/app/oracle/oradata/fssyd/controlfs/controlfs.ctl'
      *.diagnostic_dest='/u01/app/oracle/oradata/fssyd/diag/'
      *.core_dump_dest='/u01/app/oracle/oradata/fssyd/coredump/'
      *.audit_file_dest='/u01/app/oracle/oradata/fssyd/audit/'
      *.audit_trail='DB'
      *.db_recovery_file_dest='/u01/app/oracle/oradata/fssyd/fra/'
      *.db_recovery_file_dest_size=250g
      *.dg_broker_config_file1='/u01/app/oracle/oradata/fssyd/dg_broker/fssyd_01.dat'
      *.dg_broker_config_file2='/u01/app/oracle/oradata/fssyd/dg_broker/fssyd_02.dat'
      *.dg_broker_start=TRUE
      *.dispatchers='(PROTOCOL=TCP) (SERVICE=FSSYDXDB)'
      *.standby_file_management='AUTO'
                                  
      # start the instance with the parameter file
      export ORACLE_SID=FSSYD
      sqlplus / as sysdba
      startup pfile='/u01/app/oracle/product/19c/dbhome_1/dbs/init_FSSYD.ora' nomount;
                                  
      # create an spfile
      create spfile='/u01/app/oracle/product/19c/dbhome_1/dbs/spfileFSSYD.ora' from pfile='/u01/app/oracle/product/19c/dbhome_1/dbs/init_FSSYD.ora';
                                  
      # restart the instance with the spfile
      shutdown immediate;
      startup mount;
      select name, db_unique_name, database_role, open_mode from v$database;
  4. Crie e inicie um listener de banco de dados em cada host do Far Sync.
    1. Na região Principal:
      vi $ORACLE_HOME/network/admin/listener.ora
      LISTENER =
        (DESCRIPTION_LIST =
          (DESCRIPTION =
            (ADDRESS = (PROTOCOL = TCP)(HOST = farsync-region1.hubsubnetregion1.hubvcnregion1.oraclevcn.com)(PORT = 1521))
            (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
          )
        )
                                  
      lsnrctl start
      lsnrctl services
    2. Na região Stand-by:
      vi $ORACLE_HOME/network/admin/listener.ora
      LISTENER =
        (DESCRIPTION_LIST =
          (DESCRIPTION =
            (ADDRESS = (PROTOCOL = TCP)(HOST = farsync-region2.hubsubnetregion2.hubvcnregion2.oraclevcn.com)(PORT = 1521))
            (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
          )
        )
                                  
      lsnrctl start
      lsnrctl services
  5. Adicione entradas TNS principais e stand-by nos hosts Far Sync.
    vi $ORACLE_HOME/network/admin/tnsnames.ora
                        
    DB_REGION1 =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = vmc1ca-4vzoi-scan.ocidbdelegated.ocivnoffsitedb.oraclevcn.com)(PORT = 1521))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = db_region1.ocidbdelegated.ocivnoffsitedb.oraclevcn.com)
        )
      )
    
    DB_REGION2 =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = abvmc1auseh-glcfo-scan.ociabvnet5subn.ociabvirtualne.oraclevcn.com)(PORT = 1521))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = db_region2.ociabvnet5subn.ociabvirtualne.oraclevcn.com)
        )
      )
  6. Adicione as entradas TNS Far Sync nos hosts de banco de dados principal e stand-by e teste de conectividade.

    Adicione as strings de conexão TNS das instâncias do Far Sync ao arquivo tnsname.ora nos hosts de banco de dados principal e stand-by (em todos os hosts do cluster de VMs do Exadata).

    vi $ORACLE_HOME/network/admin/dbtor/tnsnames.ora
    FSTOR =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = farsync-region1)(PORT = 1521))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = FSTOR)
        )
      )
    
    FSSYD =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = farsync-region2)(PORT = 1521))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = FSSYD)
        )
      )
    # Test the connectivity
    sqlplus SYS@FSTOR as sysdba
    show parameter instance_name
    
    sqlplus SYS@FSSYD as sysdba
    show parameter instance_name
    
    # If the connection fails, ensure port 1521 is open on Far Sync hosts
    sudo firewall-cmd --permanent --add-port=1521/tcp
    sudo firewall-cmd --reload
  7. Adicione e ative as instâncias do Far Sync na configuração do broker do Active Data Guard (do banco de dados Principal).

    Use o broker do Active Data Guard para adicionar a instância do Far Sync à configuração existente do Active Data Guard enquanto estiver conectado ao banco de dados Principal.

    dgmgrl SYS as sysdba
    
    DGMGRL> ADD FAR_SYNC FSTOR AS CONNECT IDENTIFIER IS FSTOR;
    DGMGRL> ENABLE FAR_SYNC FSTOR;
    
    DGMGRL> ADD FAR_SYNC FSSYD AS CONNECT IDENTIFIER IS FSSYD;
    DGMGRL> ENABLE FAR_SYNC FSSYD;
  8. Configure as propriedades RedoRoutes no broker para bancos de dados principais e instâncias do Far Sync.

    Use a propriedade RedoRoutes do broker do Active Data Guard para configurar o banco de dados Principal para transportar o redo para a instância local do Far Sync no modo FastSync e a instância do Far Sync para encaminhar o redo para o banco de dados stand-by remoto no modo ASYNC.

    DGMGRL> EDIT DATABASE 'db_region1' SET PROPERTY RedoRoutes = '( LOCAL : ( FSTOR FASTSYNC PRIORITY=1, db_region2 ASYNC PRIORITY=2 ))';
    DGMGRL> EDIT FAR_SYNC 'FSTOR' SET PROPERTY RedoRoutes = '( db_region1 : db_region2 ASYNC )';
    
    DGMGRL> EDIT DATABASE 'db_region2' SET PROPERTY RedoRoutes = '( LOCAL : ( FSSYD FASTSYNC PRIORITY=1, db_region1 ASYNC PRIORITY=2 ))';
    DGMGRL> EDIT FAR_SYNC 'FSSYD' SET PROPERTY RedoRoutes = '( db_region2 : db_region1 ASYNC )';
    Os parâmetros do banco de dados log_archive_dest_n para as instâncias principal, stand-by e Far Sync são definidos de acordo.
  9. Altere o modo de proteção de configuração para Maximum Availability.
    DGMGRL> EDIT CONFIGURATION SET PROTECTION MODE AS MAXAVAILABILITY;
  10. Verifique a configuração do Active Data Guard.
    DGMGRL> SHOW CONFIGURATION
    
    Configuration - dbtor_dgconf
    
    Protection Mode: MaxAvailability
    Members:
      db_region1 - Primary database
      fstor      - Far sync instance
      db_region2  - Physical standby database
    
    Members Not Receiving Redo:
      fssyd      - Far sync instance
    
    Fast-Start Failover:  Disabled
    
    Configuration Status:
      SUCCESS   (status updated 57 seconds ago)

    Observação:

    Inicialmente, a instância remota do Far Sync poderá mostrar Warning: ORA-16789: standby redo logs configured incorrectly até receber dados do redo pela primeira vez. Por exemplo, após uma chave de atribuição ou atualizando temporariamente as rotas redo.

    Verifique a configuração após o switchover.

    DGMGRL> SHOW CONFIGURATION
    
    Configuration - dbtor_dgconf
    
    Protection Mode: MaxAvailability
    Members:
      db_region2  - Primary database
      fssyd      - Far sync instance
      db_region1 - Physical standby database
    
    Members Not Receiving Redo:
      fstor      - Far sync instance
    
    Fast-Start Failover:  Disabled
    
    Configuration Status:
      SUCCESS   (status updated 54 seconds ago)