Database
 sql >> Database >  >> RDS >> Database

Impostazione dello standby fisico di Active Data Guard nell'architettura RAC One Node – Parte 2

Questo articolo è la parte 2 di una serie in due parti che descrive i passaggi per l'impostazione di Active Data Guard Physical Standby in RAC One Node Architecture. Puoi trovare la parte 1 qui.

1. Al termine del processo di duplicazione del database (Parte 1 dell'articolo), aggiungere il database Standby in Clusterware

 
srvctl add database -d analytics_dg -o /u01/app/oracle/product/12.1.0.2/dbhome_1 -c RACONENODE -p '+DG_DATA/analytics_DG/PARAMETERFILE/spfileanalytics_dg.ora' -r PHYSICAL_STANDBY -s MOUNT -n analytics_dg -e hostdr

2. chiudere un database

sqlplus> shutdown immediate;

3. Copia "Oracle password file" con il nuovo nome di istanza "orapwanalyticsdg_1"

cd $ORACLE_HOME/dbs
cp orapwanalytics_dg orapwanalyticsdg_1

4. Avvia database

$ srvctl start database -d analytics_dg
$ srvctl config database -d analytics_dg
Database unique name: analytics_dg
Database name: analytics_dg
Oracle home: /u01/app/oracle/product/12.1.0.2/dbhome_1
Oracle user: oracle
Spfile: +DG_DATA/analytics_DG/PARAMETERFILE/spfileanalytics_dg.ora
Password file:
Domain:
Start options: read only
Stop options: immediate
Database role: PHYSICAL_STANDBY
Management policy: AUTOMATIC
Server pools:
Disk Groups: DG_DATA,DG_RECO
Mount point paths:
Services:
Type: RACOneNode
Online relocation timeout: 30
Instance name prefix: analyticsdg
Candidate servers: hostdr
OSDBA group: sdba
OSOPER group: soper
Database instances:
Database is administrator managed

5. Secondo il modello di Oracle Restart, l'istanza analytics_dg sarà chiamata analyticsdg_1, pertanto listener.ora deve essere aggiornato.

Esegui il comando "listener reload" per forzare l'ascoltatore a leggere nuovamente le voci "listener.ora". Attenzione! Questa operazione influirà sulla disponibilità dell'ascoltatore.

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = analytics_dg_dgmgrl)
# (SID_NAME = analytics_dg)
(SID_NAME = analyticsdg_1)
(ORACLE_HOME = /u01/app/oracle/product/12.1.0.2/dbhome_1)
)
)

6. Redo Transport Service verrà abilitato manualmente per convalidare connessioni e impostazioni.

Parametri DB_BLOCK_CHECKSUM , DB_BLOCK_CHECKING e DB_LOST_WRITE_PROTECT verrà configurato per entrambi i database, primario e standby, per prevenire e rilevare i blocchi danneggiati.

6.1. Regola i parametri nel database di standby

sqlplus> alter system set log_archive_config='dg_config=(analytics,analytics_dg)' scope=both sid='*' ;
sqlplus> alter system SET log_archive_dest_1='LOCATION=USE_DB_RECOVERY_FILE_DEST VALID_FOR=(ALL_ROLES, ALL_LOGFILES) db_unique_name=analytics_dg' scope=both sid='*' ;
sqlplus> alter system set log_archive_dest_2='service=analytics LGWR ASYNC NOAFFIRM max_failure=10 max_connections=1 reopen=180 valid_for=(online_logfiles,primary_role) db_unique_name=analytics' scope=both sid='*';
sqlplus> alter system set fal_server='analytics' scope=both sid='*';
sqlplus> alter system set fal_client='analytics_dg' scope=both sid='*';
sqlplus> alter system set log_archive_max_processes=4 scope=both sid='*';
sqlplus> alter system set standby_file_management='AUTO' scope=both sid='*';
sqlplus> alter system set db_file_name_convert='+DG_DATA_DR/analytics','+DG_DATA/analytics_DG','+DG_RECO_DR/analytics','+DG_RECO/analytics_DG' scope=spfile sid='*';
sqlplus> alter system set log_file_name_convert='+DG_DATA_DR/analytics','+DG_DATA/analytics_DG','+DG_RECO_DR/analytics','+DG_RECO/analytics_DG' scope=spfile sid='*';
sqlplus> alter system set db_block_checksum=FULL scope=both sid='*' ;
sqlplus> alter system set db_block_checking=MEDIUM scope=both sid='*' ;
sqlplus> alter system set db_lost_write_protect=TYPICAL scope=both sid='*' ;
sqlplus> alter system set log_archive_dest_state_1='enable' scope=both sid='*';
sqlplus> alter system set log_archive_dest_state_2='enable' scope=both sid='*';

6.2. Regola i parametri nel database primario:

sqlplus> alter system set log_archive_config='dg_config=(analytics,analytics_dg)' scope=both sid='*' ;
sqlplus> alter system SET log_archive_dest_1='LOCATION=USE_DB_RECOVERY_FILE_DEST VALID_FOR=(ALL_ROLES,ALL_LOGFILES) db_unique_name=analytics' scope=both sid='*' ;
sqlplus> alter system set log_archive_dest_2='service=analytics_dg LGWR ASYNC NOAFFIRM max_failure=10 max_connections=1 reopen=180 valid_for=(online_logfiles,primary_role) db_unique_name=analytics_dg' scope=both sid='*';
sqlplus> alter system set fal_server='analytics_dg' scope=both sid='*';
sqlplus> alter system set fal_client='analytics' scope=both sid='*';
sqlplus> alter system set log_archive_max_processes=4 scope=both sid='*' ;
sqlplus> alter system set standby_file_management='AUTO' scope=both sid='*' ;
sqlplus> alter system set db_file_name_convert='+DG_DATA/analytics_DG','+DG_DATA_DR/analytics','+DG_RECO/analytics_DG','+DG_RECO_DR/analytics' scope=spfile sid='*';
sqlplus> alter system set log_file_name_convert='+DG_DATA/analytics_DG','+DG_DATA_DR/analytics','+DG_RECO/analytics_DG','+DG_RECO_DR/analytics' scope=spfile sid='*';
sqlplus> alter system set db_block_checksum=TYPICAL scope=both sid='*' ;
sqlplus> alter system set db_block_checking=MEDIUM scope=both sid='*' ;
sqlplus> alter system set db_lost_write_protect=TYPICAL scope=both sid='*' ;
sqlplus> alter system set log_archive_dest_state_1='enable' scope=both sid='*' ;
sqlplus> alter system set log_archive_dest_state_2='enable' scope=both sid='*' ;

6.3. L'attributo "status" di Primary e Standby deve restituire "VALID"

sqlplus> select dest_id,status,destination ,error from v$archive_dest where dest_id <=5;
 ID DB_status Archive_dest Error
---------- --------- ----------------------------- -------
1 VALID USE_DB_RECOVERY_FILE_DEST
2 VALID analytics_dg
3 INACTIVE
4 INACTIVE
5 INACTIVE

sqlplus> select dest_id,status,database_mode,recovery_mode from v$archive_dest_status where status <> 'INACTIVE';
 DEST_ID STATUS DATABASE_MODE RECOVERY_MODE
---------- --------- --------------- -----------------------
1 VALID OPEN IDLE
2 VALID MOUNTED-STANDBY IDLE

6.4. Avvia manualmente Ripeti Applica:

sqlplus> alter database recover managed standby database using current logfile disconnect;

6.5. Sincronizzazione tra la convalida del database primario e di standby

sqlplus> select * from v$archive_gap;
sqlplus> select name, value, datum_time, time_computed from v$dataguard_stats where name like 'apply lag';
sqlplus> select file_type, number_of_files, percent_space_used from v$recovery_area_usage;
sqlplus> select current_scn from v$database;
sqlplus> select sequence#, first_time, applied from v$archived_log order by sequence#;

6.6. Interrompi Ripeti Applica prima di configurare Data Guard Broker

sqlplus> alter database recover managed standby database cancel;
Database altered.

7. Configura Data Guard Broker nel database primario e in standby

Nota:i file di impostazione di Data Guard verranno creati in ASM in diversi diskgroup:dg_broker_config_file1 e dg_broker_config_file2

7.1. Nel database primario:

sqlplus> alter system set dg_broker_config_file1 = '+DG_DATA_DR/analytics/BROKERCFG/brokeranalytics1.dat' scope=both sid='*';
sqlplus> alter system set dg_broker_config_file2 = '+DG_RECO_DR/analytics/BROKERCFG/brokeranalytics2.dat' scope=both sid='*';
sqlplus> alter system set log_archive_dest_2='' scope=both sid='*' ;
sqlplus> alter system set DG_BROKER_START=FALSE scope=both sid='*';
sqlplus> alter system set DG_BROKER_START=TRUE scope=both sid='*';

7.2. Nel database di standby:

sqlplus> alter system set dg_broker_config_file1 = '+DG_DATA/analytics_DG/BROKERCFG/brokeranalytics_dg1.dat' scope=both sid='*';
sqlplus> alter system set dg_broker_config_file2 = '+DG_RECO/analytics_DG/BROKERCFG/brokeranalytics_dg2.dat' scope=both sid='*';
sqlplus> alter system set log_archive_dest_2='' scope=both sid='*' ;
sqlplus> alter system set DG_BROKER_START=FALSE scope=both sid='*';
sqlplus> alter system set DG_BROKER_START=TRUE scope=both sid='*';

7.3. Impostazioni del broker:

$ dgmgrl
dgmgrl> connect sys/xxxxx@analytics
Connected as SYSDBA.
dgmgrl> create configuration 'analytics_cfg' as primary database is 'analytics' connect identifier is analytics;
Configuration "analytics_cfg" created with primary database "analytics"
dgmgrl> add database 'analytics_dg' as connect identifier is analytics_dg maintained as physical;
Database "analytics_dg" added
dgmgrl> edit database 'analytics_dg' set property logxptmode=async;
Property "logxptmode" updated
dgmgrl> edit configuration set protection mode as MAXPERFORMANCE;
Succeeded.
dgmgrl> enable configuration; 
Enabled.

Usa il comando MOSTRA CONFIGURAZIONE per mostrare un breve riepilogo delle impostazioni.

dgmgrl> show configuration

Configuration - analytics_cfg
Protection Mode: MaxPerformance
Databases:
analytics - Primary database
analytics_dg - Physical standby database
Fast-Start Failover: DISABLED
Configuration Status:
SUCCESS

7.4. Convalida le impostazioni con i comandi

dgmgrl> show database verbose 'analytics_dg' 'RecvQEntries';
dgmgrl> show database verbose 'analytics';
dgmgrl> show database verbose 'analytics_dg';

Nodo 1:

sqlplus> select NAME,OPEN_MODE,PROTECTION_MODE,PROTECTION_LEVEL,DATABASE_ROLE from v$database;
NAME OPEN_MODE PROTECTION_MODE PROTECTION_LEVEL DATABASE_ROLE
--------- -------------------- -------------------- -------------------- -----------
analytics READ WRITE MAXIMUM PERFORMANCE MAXIMUM PERFORMANCE PRIMARY

Nodo 2:

sqlplus> select NAME,OPEN_MODE,PROTECTION_MODE,PROTECTION_LEVEL,DATABASE_ROLE from v$database;
NAME OPEN_MODE PROTECTION_MODE PROTECTION_LEVE DATABASE_ROLE
--------- -------------------- -------------------- -------------------- -----------
analytics READ WRITE MAXIMUM PERFORMANCE MAXIMUM PERFORMANCE PRIMARY

Standby DB:

sqlplus> select NAME,OPEN_MODE,PROTECTION_MODE,PROTECTION_LEVEL,DATABASE_ROLE from v$database;
NAME OPEN_MODE PROTECTION_MODE PROTECTION_LEVEL DATABASE_ROLE
--------- ---------------- -------------------- -------------------- ----------------
analytics MOUNTED MAXIMUM PERFORMANCE MAXIMUM PERFORMANCE PHYSICAL STANDBY

8. Le regolazioni su Broker verranno apportate alle impostazioni "MaxConnections", "TransportDisconnectedThreshold" e "TransportLagThreshold" [1]

La proprietà "MaxConnections" specifica quanti processi ARCn verranno utilizzati in parallelo per trasferire i dati da un file di registro di ripristino al sito remoto quando è presente un GAP nel processo. Se MaxConnections è definito con un valore maggiore di 1, i servizi di trasporto di ripristino utilizzano più processi ARCn per trasferire i dati da un file di registro di ripristino allo standby.

La proprietà "TransportDisconnectedThreshold" può essere utilizzata per creare uno stato di avviso per un'attesa logica o fisica o un'acquisizione istantanea quando l'ultima comunicazione del database primario supera il valore specificato della proprietà. Il valore della proprietà è espresso in secondi.

La proprietà "TransportLagThreshold" può essere utilizzata per creare uno stato di avviso per un'attesa logica o fisica o per l'acquisizione istantanea quando il ritardo di trasporto del database supera il valore specificato della proprietà. Il valore della proprietà è espresso in secondi.

dgmgrl> edit database 'analytics' SET PROPERTY 'MaxConnections'= 4;
Property "MaxConnections" updated
dgmgrl> edit database 'analytics' SET PROPERTY TransportDisconnectedThreshold='180';
Property "transportdisconnectedthreshold" updated
dgmgrl> edit database 'analytics' SET PROPERTY TransportLagThreshold='900';
Property "transportlagthreshold" updated
dgmgrl> edit database 'analytics_dg' SET PROPERTY 'MaxConnections'= 4;
Property "MaxConnections" updated
dgmgrl> edit database 'analytics_dg' SET PROPERTY TransportDisconnectedThreshold='180';
Property "transportdisconnectedthreshold" updated
dgmgrl> edit database 'analytics_dg' SET PROPERTY TransportLagThreshold='900';
Property "transportlagthreshold" updated

9. Modificare gli archivi dei criteri di esclusione nel database primario.

rman> CONFIGURE ARCHIVELOG DELETION POLICY TO SHIPPED TO STANDBY;

Attivazione di Dataguard attiva

10. Interrompi Ripeti Applica nel broker

$ dgmgrl
dgmgrl> connect sys
dgmgrl> edit database 'analytics_dg' set state = 'apply-off';
dgmgrl> show database 'analytics_dg'

11. Apri l'istanza di standby in modalità di sola lettura.

sqlplus> alter database open read only;

12. Avvia Ripeti Applica nel broker

$ dgmgrl
dgmgrl> connect sys
dgmgrl> edit database 'analytics_dg' set state = 'apply-on';
dgmgrl> show database 'analytics_dg'
 

Riferimenti

[1] Broker di protezione dei dati. Disponibile su:https://docs.oracle.com/cd/E11882_01/server.112/e40771/dbpropref.htm#DGBKR3781