Déployer des instances de synchronisation à distance Active Data Guard
Déployez des instances de synchronisation à distance sur des machines virtuelles du service Calcul pour OCI dans chaque région afin de garantir qu'il n'y aura aucune perte de données entre les régions.
- Créez un fichier de contrôle de synchronisation à distance à partir de la base de données principale et copiez-le vers les hôtes de synchronisation à distance.
SQL> alter database create far sync instance controlfile as '/home/oracle/controlfs.ctl';
Copiez le fichier de contrôle nouvellement créé sur les hôtes de l'instance de synchronisation à distance.
scp -p controlfs.ctl farsync-region1:/u01/app/oracle/oradata/fstor/controlfs/ scp -p controlfs.ctl farsync-region2:/u01/app/oracle/oradata/fssyd/controlfs/
- Copiez le fichier de mots de passe de la base de données principale vers les hôtes de synchronisation à distance à l'aide des noms d'instance de synchronisation à distance.Dans cet exemple, l'instance de synchronisation à distance dans la région principale (région 1) sera nommée
FSTOR
. Par conséquent, le nom du fichier de mots de passe seraorapwFSTOR
.# 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
- Créez un fichier de paramètres pour l'instance de synchronisation à distance à partir de la base de données principale, copiez-le vers les hôtes de l'instance de synchronisation à distance et ajustez les paramètres pour qu'ils reflètent les valeurs des paramètres et les chemins de répertoire de l'instance de synchronisation à distance. Vous pouvez également commencer par un nouveau fichier de paramètres sur les hôtes de l'instance de synchronisation à distance (par exemple, dans la région principale).
- Dans la région principale (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;
- Dans la région de secours (
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;
- Dans la région principale (FSTOR) :
- Créez et démarrez un processus d'écoute de base de données sur chaque hôte de synchronisation à distance.
- Dans la région principale :
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
- Dans la région de secours :
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
- Dans la région principale :
- Ajoutez des entrées TNS principale et de secours sur les hôtes de synchronisation à distance.
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) ) )
- Ajoutez les entrées TNS de synchronisation à distance sur les hôtes de la base principale et de la base de secours et testez la connectivité.
Ajoutez les chaînes de connexion TNS des instances de synchronisation à distance au fichier
tnsname.ora
sur les hôtes de la base de données principale et de secours (sur tous les hôtes de la grappe de machines virtuelles 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
- Ajoutez et activez les instances de synchronisation à distance dans la configuration du courtier Active Data Guard (à partir de la base de données principale).
Utilisez le courtier Active Data Guard pour ajouter l'instance de synchronisation à distance à la configuration Active Data Guard existante lors de la connexion à la base de données principale.
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;
- Configurez les propriétés
RedoRoutes
dans le courtier pour les bases de données principales et les instances de synchronisation à distance.Utilisez la propriété
RedoRoutes
du courtier Active Data Guard pour configurer la base de données principale afin de transporterredo
vers l'instance de synchronisation à distance locale en modeFastSync
et l'instance de synchronisation à distance pour transmettreredo
à la base de données de secours distante en modeASYNC
.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 )';
Les paramètreslog_archive_dest_n
de la base de données pour les instances principale, de secours et de synchronisation à distance sont définis en conséquence. - Remplacez le mode de protection de configuration par
Maximum Availability
.DGMGRL> EDIT CONFIGURATION SET PROTECTION MODE AS MAXAVAILABILITY;
- Vérifiez la configuration d'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)
Note :
Initialement, l'instance de synchronisation à distance peut afficherWarning: ORA-16789: standby redo logs configured incorrectly
jusqu'à ce qu'elle reçoive les donnéesredo
pour la première fois. Par exemple, après un changement de rôle ou en mettant temporairement à jour les routesredo
.Vérifiez la configuration après la permutation.
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)