- Implementa Active Data Guard Far Sync per proteggere i dati nelle aree di Oracle Database@Azure
- Distribuisci istanze di sincronizzazione remota di Data Guard attive
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.
- 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/
- 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
- 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;
- 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
- 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) ) )
- 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
- 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;
- 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 parametrilog_archive_dest_n
del database per le istanze primarie, in standby e sincronizzazione remota vengono ora impostati di conseguenza. - 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;
- 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)