Distribuisci istanze di sincronizzazione remota di Active Data Guard

Distribuisci un'istanza di sincronizzazione remota di Active Data Guard sulla virtual machine di computazione OCI in ogni area per garantire zero perdite di dati tra le varie aree.

  1. Creare un control file di sincronizzazione remota.

    Creare un control file per l'istanza di sincronizzazione remota dal database primario.

    SQL> alter database create far sync instance controlfile as '/home/oracle/controlfs.ctl';

    Copiare il control file appena creato negli host dell'istanza di sincronizzazione remota.

    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. Copiare il password file.

    Copiare il password file del database primario negli host delle istanze di sincronizzazione remota utilizzando il nome delle istanze di sincronizzazione remota. In questo esempio, l'istanza di sincronizzazione remota nell'area di Toronto verrà denominata FSTOR. Il nome del password file è 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. Creare un file di parametri.

    Creare un file di parametri per l'istanza di sincronizzazione remota dal database primario, copiarlo negli host dell'istanza di sincronizzazione remota e regolare i parametri in modo da riflettere i valori dei parametri e i percorsi di directory per l'istanza di sincronizzazione remota.

    In alternativa, è possibile iniziare con un nuovo file di parametri sugli host delle istanze di sincronizzazione remota (ad esempio, nell'area 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;

    Nella regione di 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. Creare un listener del database.

    Negli host di sincronizzazione remoti, creare e avviare un listener di database.

    Nella regione di 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

    Nella regione di 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. Aggiungere voci TNS primarie e in standby agli host di sincronizzazione remota.
    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. Aggiungere le voci TSN di sincronizzazione remota agli host del database primario e in standby.

    Aggiungere le stringhe di connessione TNS delle istanze di sincronizzazione remota al file tnsname.ora negli host del database primario e in standby (su tutti gli host del cluster VM 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. Aggiungere e abilitare le istanze di sincronizzazione remota alla configurazione di Active Data Guard.

    Utilizzare il broker Active Data Guard per aggiungere l'istanza di sincronizzazione remota alla configurazione Active Data Guard esistente durante la connessione al database primario.

    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. Modificare le proprietà RedoRoutes del broker Active Data Guard.

    Utilizzare la proprietà RedoRoutes del broker Active Data Guard per configurare il database primario in modo da trasportare il redo all'istanza di sincronizzazione remota locale in modalità FastSync e l'istanza di sincronizzazione remota per inoltrare il redo al database di standby remoto in modalità 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 )';
    I parametri log_archive_dest_n del database per le istanze primarie, in standby e sincronizzazione remota vengono ora impostati di conseguenza.
  9. Modificare la modalità di protezione della configurazione di Active Data Guard.

    Aumentare la modalità di protezione della configurazione Active Data Guard alla massima disponibilità.

    DGMGRL> EDIT CONFIGURATION SET PROTECTION MODE AS MAXAVAILABILITY;
    
  10. Controllare la configurazione di Active Data Guard.

    Controllare la configurazione.

    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)

    Nota

    All'inizio, l'istanza di sincronizzazione remota mostrerà un'avvertenza "Avvertenza: ORA-16789: redo log in standby configurati in modo errato" fino a quando non riceve i dati di redo per la prima volta, dopo un cambio di ruolo o modificando temporaneamente la configurazione degli instradamenti di redo per inviare i dati all'istanza di sincronizzazione remota.

    Controllare la configurazione dopo lo 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)