Este artículo es la parte 2 de una serie de dos partes que describe los pasos para configurar el modo de espera físico activo de Data Guard en la arquitectura de un nodo de RAC. Puedes encontrar la parte 1 aquí.
1. Cuando finalice el proceso de duplicación de la base de datos (Parte 1 del artículo), agregue la base de datos en espera en 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. cerrar una base de datos
sqlplus> shutdown immediate;
3. Copie el "archivo de contraseña de Oracle" con el nuevo nombre de instancia "orapwanalyticsdg_1"
cd $ORACLE_HOME/dbs cp orapwanalytics_dg orapwanalyticsdg_1
4. Iniciar base de datos
$ 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. De acuerdo con el patrón de reinicio de Oracle, la instancia de analytics_dg se llamará analyticsdg_1, por lo tanto, se debe actualizar listener.ora.
Ejecute el comando "recargar oyente" para obligar al oyente a leer las entradas "listener.ora" nuevamente. ¡Atención! Esta operación afectará la disponibilidad del oyente.
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. El servicio Redo Transport se habilitará manualmente para validar las conexiones y la configuración.
Parámetros DB_BLOCK_CHECKSUM , DB_BLOCK_CHECKING y DB_LOST_WRITE_PROTECT se configurará para ambas bases de datos, principal y en espera, para prevenir y detectar bloques dañados.
6.1. Ajustar parámetros en la base de datos 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. Ajustar parámetros en la base de datos principal:
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. El atributo de "estado" de Primario y Standby debe devolver 'VÁLIDO'
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. Iniciar manualmente Rehacer Aplicar:
sqlplus> alter database recover managed standby database using current logfile disconnect;
6.5. Sincronización entre la validación de la base de datos principal y de reserva
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. Detener Redo Apply antes de configurar Data Guard Broker
sqlplus> alter database recover managed standby database cancel; Database altered.
7. Configure Data Guard Broker en la base de datos principal y en espera
Nota:Los archivos de configuración de Data Guard se crearán en ASM en diferentes grupos de discos:dg_broker_config_file1 y dg_broker_config_file2
7.1. En la base de datos principal:
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. En la base de datos en espera:
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. Configuración del corredor:
$ 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.
Utilice el comando MOSTRAR CONFIGURACIÓN para mostrar un breve resumen de la configuración.
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. Validar configuraciones con comandos
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_LEVEL DATABASE_ROLE --------- -------------------- -------------------- -------------------- ----------- analytics READ WRITE MAXIMUM PERFORMANCE MAXIMUM PERFORMANCE PRIMARY
Base de datos en espera:
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. Se realizarán ajustes en Broker a las configuraciones "MaxConnections", "TransportDisconnectedThreshold" y "TransportLagThreshold" [1]
La propiedad "MaxConnections" especifica cuántos procesos ARCn se usarán en paralelo para transferir datos desde un archivo de registro de rehacer al sitio remoto cuando hay un GAP en el proceso. Si MaxConnections se define con un valor superior a 1, los servicios de transporte de rehacer utilizan varios procesos ARCn para transferir datos desde un archivo de registro de rehacer al modo de espera.
La propiedad "TransportDisconnectedThreshold" se puede utilizar para crear un estado de advertencia para una espera lógica o física o una captura instantánea cuando la última comunicación de la base de datos principal supera el valor especificado de la propiedad. El valor de la propiedad se expresa en segundos.
La propiedad "TransportLagThreshold" se puede utilizar para crear un estado de advertencia para una espera lógica o física o una captura instantánea cuando el retraso en el transporte de la base de datos supera el valor especificado de la propiedad. El valor de la propiedad se expresa en segundos.
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. Cambie los registros de archivo de la política de exclusión en la base de datos principal.
rman> CONFIGURE ARCHIVELOG DELETION POLICY TO SHIPPED TO STANDBY;
Activación activa de Dataguard
10. Detener Rehacer Aplicar en corredor
$ dgmgrl dgmgrl> connect sys dgmgrl> edit database 'analytics_dg' set state = 'apply-off'; dgmgrl> show database 'analytics_dg'
11. Abra la instancia en espera en modo de solo lectura.
sqlplus> alter database open read only;
12. Inicie Redo Apply en broker
$ dgmgrl dgmgrl> connect sys dgmgrl> edit database 'analytics_dg' set state = 'apply-on'; dgmgrl> show database 'analytics_dg'
Referencias
[1] Corredor de protección de datos. Disponible en:https://docs.oracle.com/cd/E11882_01/server.112/e40771/dbpropref.htm#DGBKR3781