sql >> Base de Datos >  >> RDS >> Database

Configuración de la reserva física de Active Data Guard en la arquitectura de un nodo de RAC:parte 1

Este artículo es la Parte 1 de una serie de dos partes que describe los pasos para configurar Active Data Guard Physical Standby en RAC One Node Architecture.

Introducción

Oracle Data Guard es uno de los componentes principales de Oracle Database High Availability (HA), un conjunto integrado de soluciones que ayuda a las organizaciones a minimizar la inactividad, ya sea planificada o no, para garantizar el flujo de su negocio. Active Data Guard es una opción con licencia para Oracle Database Enterprise Edition que amplía la funcionalidad básica de Data Guard [1] al permitir recursos avanzados, como:consultas, informes, actualizaciones de bases de datos en espera que no afectan a la base de datos principal, recuperación automática de bloques de datos dañados, copias de seguridad incrementales, entre otros.

Oracle RAC One Node utiliza una arquitectura de disco compartido para proporcionar una solución de alta disponibilidad de base de datos, similar a Oracle Real Application Clusters (RAC). A diferencia de Oracle RAC, que ejecuta varias instancias simultáneamente, Oracle RAC One Node proporciona una solución de conmutación por error en una sola instancia, además, puede hacer que la infraestructura en el clúster sea más fácil, ya que se actualiza fácilmente a una configuración de Oracle Real Application Clusters con varias instancias.

Medio ambiente

  • La base de datos principal utiliza Oracle RAC con 2 nodos
  • El modo de protección utilizado será "Máximo rendimiento" utilizando el modo "transporte de rehacer asíncrono"
  • No se utilizará la función "Fast Start Failover".
  • Configuración del agente de Data Guard

1. Establezca db_unique_name en Base de datos principal:

sqlplus> alter system set db_unique_name='analytics' scope=spfile sid='*';

2. Copie el "archivo de contraseña de Oracle" en el servidor en espera:

scp orapwanalytics oracle@hostdr:/u01/app/oracle/product/12.1.0.2/dbhome_1/dbs

3. En las instancias bancarias de los nodos 1 y 2 del servidor principal, agregue entradas en listener.ora:

Nodo 1:

(SID_DESC =
(GLOBAL_DBNAME = analytics1_dgmgrl)
(SID_NAME = analytics1)
(ORACLE_HOME = /u01/app/oracle/product/12.1.0.2/dbhome_1)
)

Nodo 2:

 
(SID_DESC =
(GLOBAL_DBNAME = analytics2_dgmgrl)
(SID_NAME = analytics2)
(ORACLE_HOME = /u01/app/oracle/product/12.1.0.2/dbhome_1)
)

4. En el servidor en espera, agregue una entrada en listener.ora

 
(SID_DESC =
(GLOBAL_DBNAME = analytics_DG_DGMGRL)
(SID_NAME = analytics_dg)
(ORACLE_HOME = /u01/app/oracle/product/12.1.0.2/dbhome_1)
)

Después de esta configuración, se necesita ejecutar el comando "recarga del oyente" para obligar al oyente a leer las entradas de listener.ora nuevamente. ¡Atención! Esta operación afectará la disponibilidad del oyente.

5. Agregue entradas en el archivo tnsnames.ora en la base de datos principal y en espera;

5.1. Comentar entrada antigua

 
#analytics =
# (DESCRIPTION =
# (ADDRESS = (PROTOCOL = TCP)(HOST = hostdr-pscan1)(PORT = 1521))
# (CONNECT_DATA =
# (SERVER = DEDICATED)
# (SERVICE_NAME = analytics)
# ))

5.2. Agregar nuevas entradas:

 
analytics =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = hostdr-pscan1)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = analytics)
(UR=A)
))

analytics1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = hostdr01vmp01-vip)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = analytics)
(SID = analytics1)
(UR=A)
))

analytics2 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = hostdr02vmp01-vip)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = analytics)
(SID = analytics2)
(UR=A)
))

analytics1_DGMGRL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = hostdr01vmp01-vip)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = analytics_DGMGRL)
(UR=A)
))

analytics2_DGMGRL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = hostdr02vmp01-vip)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = analytics_DGMGRL)
(UR=A)
))

5.3. Entradas de DG:

analytics_DG =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = host01vmp01-vip)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = analytics_dg) (UR = A)
))

analytics_DG_DGMGRL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = host01vmp01-vip)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = analytics_dg_dgmgrl)
(UR=A)
))

6. Pruebe nuevas entradas en el archivo tnsnames.ora

 
tnsping analytics
tnsping analytics1
tnsping analytics2
tnsping analytics_DG
tnsping analytics1_DGMGRL
tnsping analytics2_DGMGRL
tnsping analytics_DG_DGMGRL

7. Habilite "Forzar registro" y "Modo Archivelog" en la base de datos principal. Nota:La instancia ya estaba configurada en modo archivelog.

 
sqlplus> alter database force logging;
sqlplus> select force_logging, log_mode from v$database;

FORCE_LOGGING LOG_MODE
--------------------------------------- ------------
YES ARCHIVELOG

8. Verifique la configuración de RedoLogs en la base de datos principal. El script usado logfiles.sql está disponible en oracle-base.com.

9. Agregar archivos de registro en espera.

Para determinar el número recomendado de registros de rehacer en espera, use la siguiente fórmula [2]:

(número máximo de grupos de archivos de registro +1) * número máximo de hilos

Mi base de datos principal tiene dos subprocesos y cada uno tiene cuatro grupos de rehacer en línea, por lo tanto, deberíamos tener diez registros de rehacer en espera.

(número máximo de grupos de archivos de registro +1) * número máximo de subprocesos =((4 + 1) * 2 =10)

 
sqlplus> alter database add standby logfile thread 1 group 41 ('+DG_RECO_DR') size 1024M;
sqlplus> alter database add standby logfile thread 2 group 42 ('+DG_RECO_DR') size 1024M;
sqlplus> alter database add standby logfile thread 1 group 43 ('+DG_RECO_DR') size 1024M;
sqlplus> alter database add standby logfile thread 2 group 44 ('+DG_RECO_DR') size 1024M;
sqlplus> alter database add standby logfile thread 1 group 45 ('+DG_RECO_DR') size 1024M;
sqlplus> alter database add standby logfile thread 2 group 46 ('+DG_RECO_DR') size 1024M;
sqlplus> alter database add standby logfile thread 1 group 47 ('+DG_RECO_DR') size 1024M;
sqlplus> alter database add standby logfile thread 2 group 48 ('+DG_RECO_DR') size 1024M;
sqlplus> alter database add standby logfile thread 2 group 49 ('+DG_RECO_DR') size 1024M;
sqlplus> alter database add standby logfile thread 2 group 50 ('+DG_RECO_DR') size 1024M;

10. En la base de datos principal, cree un archivo pfile que será la base de los archivos de parámetros de la base de datos en espera.

 
create pfile='/tmp/initanalytics_dg_aux.ora' from spfile;

11. En la base de datos Standby, cree el archivo pfile con la información del servidor remoto. La forma más sencilla de crear este archivo es copiar el archivo de parámetros de la base de datos principal (elemento 10) a la base de datos en espera y editarlo.

$ cd $ORACLE_HOME/dbs
$ vi initanalytics_dg_aux.ora

#*.audit_file_dest='/u01/app/oracle/admin/analytics/adump'
*.audit_file_dest='/u01/app/oracle/admin/analytics_dg/adump'
*.audit_trail='db'
#.cluster_database=true
*.cluster_database=false
*.compatible='12.1.0.2.0'
#*.control_files='+DG_DATA_DR/analytics/controlfile/current.1257.954609365','+DG_RECO_DR/analytics/controlfile/current.527.954609365'
*.control_files='+DG_DATA/analytics_dg/controlfile/current1.ctl','+DG_RECO/analytics_dg/controlfile/
current2.ctl'
*.db_block_size=8192
#*.db_create_file_dest='+DG_DATA_DR'
*.db_create_file_dest='+DG_DATA'
#*.db_create_online_log_dest_1='+DG_DATA_DR'
*.db_create_online_log_dest_1='+DG_DATA'
#*.db_create_online_log_dest_2='+DG_RECO_DR'
*.db_create_online_log_dest_2='+DG_RECO'
*.db_domain=''
*.db_name='analytics'
*.db_files=2000
#*.db_recovery_file_dest='+DG_RECO_DR'
*.db_recovery_file_dest='+DG_RECO'
*.db_recovery_file_dest_size=100G
#*.db_unique_name='analytics'
*.db_unique_name='analytics_dg'

12. Crear jerarquías de directorios.

12.1. Cree un directorio para el "volcado de auditoría" en el que se crearán los archivos y la auditoría de la base de datos.

 
mkdir -p /u01/app/oracle/admin/analytics_dg/adump

12.2. En ASM, cree directorios para el archivo de control y los archivos de parámetros:

 
mkdir +DG_DATA/analytics_DG/
mkdir +DG_DATA/analytics_DG/PARAMETERFILE
mkdir +DG_DATA/analytics_DG/CONTROLFILE
mkdir +DG_DATA/analytics_DG/BROKERCFG
mkdir +DG_RECO/analytics_DG
mkdir +DG_RECO/analytics_DG/BROKERCFG

13. Crear spfile y pfile en Standby Database

 
$ export ORACLE_SID=analytics_dg
$ sqlplus / as sysdba

13.1. Inicie la base de datos en espera con pfile initanalytics_dg_aux.ora y convierta el archivo de parámetros (pfile) a spfile.

 
sqlplus> startup nomount pfile='/u01/app/oracle/product/12.1.0.2/dbhome_1/dbs/initanalytics_dg_aux.ora';
sqlplus> create spfile='+DG_DATA/analytics_DG/PARAMETERFILE/spfileanalytics_dg.ora' from pfile='/u01/app/oracle/product/12.1.0.2/dbhome_1/dbs/initanalytics_dg_aux.ora';

13.2. Cree pfile y en este archivo, inserte la siguiente entrada:

 
echo "spfile='+DG_DATA/analytics_DG/PARAMETERFILE/spfileanalytics_dg.ora'" >> initanalytics_dg.ora

13.3. Arranque de instancia con spfile para posterior restauración de base de datos.

$ export ORACLE_SID=analytics_dg
$ sqlplus sys as sysdba

sqlplus> shutdown immediate;
sqlplus> startup nomount;

14. Ejecute la restauración con el duplicado de la base de datos;

 
connect target sys/xxxxxx@analytics1;
connect auxiliary sys/xxxxxx@analytics_dg_dgmgrl;
RUN {
Allocate channel pr1 device type disk;
Allocate channel pr2 device type disk;
allocate auxiliary channel stby1 type disk;
allocate auxiliary channel stby2 type disk;
DUPLICATE TARGET DATABASE FOR STANDBY FROM ACTIVE DATABASE;
RELEASE CHANNEL pr1;
RELEASE CHANNEL pr2;
RELEASE CHANNEL stby1;
RELEASE CHANNEL stby2;
}

¡La próxima publicación continuaremos con esta saga!

Referencias

[1] Mejores prácticas de Oracle Active Data Guard. Disponible en:https://www.oracle.com/database/technologies/active-data-guard-12c-best-practice.html

[2] Mejores prácticas de alta disponibilidad de Oracle Database 11g versión 2 (11.2). Disponible en:https://docs.oracle.com/cd/E24693_01/server.11203/e10803/config_dg.htm

[3] Corredor de protección de datos. Disponible en:https://docs.oracle.com/cd/E11882_01/server.112/e40771/dbpropref.htm#DGBKR3781