Implantar Instâncias de Far Sync do Active Data Guard

Implante uma instância de far sync do Active Data Guard na máquina virtual de computação OCI em cada região para garantir zero perda de dados entre regiões.

  1. Criar um arquivo de controle far sync.

    Crie um arquivo de controle para a instância de far sync do banco de dados principal.

    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 de far sync.

    scp -p controlfs.ctl farsync-toronto:/u01/app/oracle/oradata/fstor/controlfs/
    scp -p controlfs.ctl farsync-sydney:/u01/app/oracle/oradata/fssyd/controlfs/
  2. Copie o arquivo de senha.

    Copie o arquivo de senha do banco de dados principal para os hosts da instância de far sync usando o nome das instâncias de far sync. Neste exemplo, a instância de far sync na região de Toronto será denominada FSTOR. Portanto, o nome do arquivo de senha é 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_TORONTO/PASSWORD/pwddb_toronto.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-toronto:/u01/app/oracle/product/19c/dbhome_1/dbs/orapwFSTOR                    
    scp -p /home/oracle/orapw farsync-sydney:/u01/app/oracle/product/19c/dbhome_1/dbs/orapwFSSYD
  3. Crie um arquivo de parâmetros.

    Crie um arquivo de parâmetros para a instância de far sync do banco de dados principal, copie-o para os hosts de instância de far sync e ajuste os parâmetros para refletir seus valores de parâmetro e caminhos de diretório para a instância de far sync.

    Como alternativa, você pode começar com um novo arquivo de parâmetros nos hosts da instância de far sync (por exemplo, na região de Toronto).

    #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;

    Na região de Sydney:

    #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 um listener de banco de dados.

    Nos hosts de far sync, crie e inicie um listener de banco de dados.

    Na região de Toronto:

    vi $ORACLE_HOME/network/admin/listener.ora
    LISTENER =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = farsync-toronto.hubsubnettoront.hubvcntoronto.oraclevcn.com)(PORT = 1521))
          (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
        )
      )
     
    lsnrctl start
    lsnrctl services

    Na região de Sydney:

    vi $ORACLE_HOME/network/admin/listener.ora
    LISTENER =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = farsync-sydney.hubsubnetsydney.hubvcnsydney.oraclevcn.com)(PORT = 1521))
          (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
        )
      )
     
    lsnrctl start
    lsnrctl services
  5. Adicione entradas de TNS principais e stand-by aos hosts de far sync.
    vi $ORACLE_HOME/network/admin/tnsnames.ora
     
    DB_TORONTO=
            (DESCRIPTION=
              (ADDRESS=(PROTOCOL=TCP)(HOST=vmc1ca-4vzoi-scan.ocidbdelegated.ocivnoffsitedb.oraclevcn.com)(PORT=1521))
              (CONNECT_DATA=
                (SERVER=DEDICATED)
                (SERVICE_NAME=db_toronto.ocidbdelegated.ocivnoffsitedb.oraclevcn.com)
                )
              )
     
    DB_SYDNEY=
            (DESCRIPTION=
              (ADDRESS=(PROTOCOL=TCP)(HOST=abvmc1auseh-glcfo-scan.ociabvnet5subn.ociabvirtualne.oraclevcn.com)(PORT=1521))
              (CONNECT_DATA=
                (SERVER=DEDICATED)
                (SERVICE_NAME=db_sydney.ociabvnet5subn.ociabvirtualne.oraclevcn.com)
                )
              )
  6. Adicione as entradas TSN de far sync aos hosts de banco de dados principal e stand-by.

    Adicione as strings de conexão TNS das instâncias de 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-toronto)(PORT = 1521))
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = FSTOR)
        )
      )
     
    FSSYD =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = farsync-sydney)(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, make sure port 1521 is open on the Far Sync instance hosts
    sudo firewall-cmd --permanent --add-port=1521/tcp
    sudo firewall-cmd --reload
  7. Adicione e ative as instâncias de far sync para a configuração do Active Data Guard.

    Use o broker do Active Data Guard para adicionar a instância de 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. Edite as propriedades RedoRoutes do broker do Active Data Guard.

    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 de far sync local no modo FastSync e a instância de far sync para encaminhar o redo para o banco de dados stand-by remoto no modo ASYNC.

    EDIT DATABASE 'db_toronto' SET PROPERTY RedoRoutes = '( LOCAL : ( fstor FASTSYNC PRIORITY=1, db_sydney ASYNC PRIORITY=2 ))';
    EDIT FAR_SYNC 'fstor' SET PROPERTY RedoRoutes = '( db_toronto : db_sydney ASYNC )';
     
    EDIT DATABASE 'db_sydney' SET PROPERTY RedoRoutes = '( LOCAL : ( fssyd FASTSYNC PRIORITY=1, db_toronto ASYNC PRIORITY=2 ))';
    EDIT FAR_SYNC 'fssyd' SET PROPERTY RedoRoutes = '( db_sydney : db_toronto ASYNC )';
    Os parâmetros log_archive_dest_n do banco de dados para as instâncias principal, stand-by e Far Sync agora são definidos de acordo.
  9. Altere o modo de proteção de configuração do Active Data Guard.

    Aumente o modo de proteção da configuração do Active Data Guard para Disponibilidade Máxima.

    DGMGRL> EDIT CONFIGURATION SET PROTECTION MODE AS MAXAVAILABILITY;
    
  10. Verifique a configuração do Active Data Guard.

    Verifique a configuração.

    DGMGRL> show configuration
     
    Configuration - dbtor_dgconf
     
      Protection Mode: MaxAvailability
      Members:
      db_toronto - Primary database
        fstor      - Far sync instance
          db_sydney  - 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:

    No início, a instância de far sync remota mostrará uma advertência "Advertência: ORA-16789: redo logs stand-by configurados incorretamente" até que receba dados de redo pela primeira vez, seja após uma alternância de atribuição ou alterando temporariamente a configuração das rotas de redo para enviar dados à instância de far sync remota.

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

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