Prepara la base de datos principal de Data Guard
Data Guard requiere una base de datos principal y, al menos, una base de datos en espera para funcionar. Antes de configurar Data Guard en la solución Bare Metal, crea la base de datos principal.
En esta guía, se usan los siguientes ejemplos:
Nombre único de la base de datos | Nombres de host del servidor | Nombres de instancias de RAC | Rol |
---|---|---|---|
DBDG_SITE1 | site1db1, site1db2 | DBDG_SITE11, DBDG_SITE12 | Principal |
DBDG_SITE2 | site2db1, site2db2 | DBDG_SITE21, DBDG_SITE22 | En suspensión |
Los servidores de la solución Bare Metal que ejecutan Oracle en esta guía se configuran con las siguientes variables de entorno:
Nombre de variable de entorno | Valor |
---|---|
ORACLE_BASE | /apps/oracle/oracle_base |
ORACLE_HOME | /apps/oracle/19.0.0/db_home1 |
Es posible que debas modificar las rutas de las variables de entorno según la configuración.
Configura la base de datos principal
Accede al primer servidor de la solución Bare Metal que aloja la base de datos principal.
En el archivo
/etc/oratab
, agrega una entrada a fin de que el comandooraenv
pueda establecer variables de entorno para la base de datos principal. Modifica el nombre de la instancia para que coincida con la instancia en ejecución en cada nodo y especifica la ruta completa a la página principal de la base de datos de Oracle:DBDG_SITE11:ORACLE_HOME:N
Configura la variable de entorno
ORACLE_SID
para que puedas conectarte a la base de datos principal:source oraenv <<< "DBDG_SITE11"
Deberías recibir la respuesta
The Oracle base has been set to /apps/oracle/oracle_base
.
Configura el registro de la base de datos y habilita la base de datos flashback
Inicia SQL*Plus y, luego, habilita
force logging
para que se registren los espacios de tablanologging
agregados a la base de datos:sqlplus / as sysdba
ALTER DATABASE FORCE LOGGING;
Verifica que
archivelog mode
yflashback database
estén activados:ARCHIVE LOG LIST; SELECT LOG_MODE, FLASHBACK_ON FROM V$DATABASE;
Si
archivelog mode
yflashback database
están desactivados, actívalos con los siguientes comandos de SQL:Detén la base de datos agrupada en clústeres para poder realizar los cambios necesarios:
srvctl stop database -d
Ejecuta los comandos de SQL necesarios para activar
archivelog mode
yflashback database
:STARTUP MOUNT; ALTER DATABASE ARCHIVELOG; ALTER DATABASE FLASHBACK ON; ALTER SYSTEM SET DB_FLASHBACK_RETENTION_TARGET=1440 SID='*' SCOPE=BOTH; ALTER DATABASE OPEN; SHUTDOWN IMMEDIATE; EXIT;
Vuelve a iniciar la base de datos agrupada:
srvctl start database -d DBDG_SITE1
Prepara la base de datos para Data Guard
Accede al primer servidor de la solución Bare Metal que aloja la base de datos principal y establece la variable de entorno
ORACLE_SID
para que puedas conectarte a la base de datos principal:source oraenv <<< "DBDG_SITE11"
Deberías recibir la respuesta
The Oracle base has been set to /apps/oracle/oracle_base
.Inicia SQL*Plus y, luego, modifica los parámetros de inicialización de la base de datos necesarios para la configuración y los servicios de Data Guard:
sqlplus / as sysdba
ALTER SYSTEM SET LOG_ARCHIVE_FORMAT='%t_%s_%r.arc' SID='*' SCOPE=SPFILE; ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES=8 SID='*' SCOPE=BOTH; ALTER SYSTEM SET REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE SID='*' SCOPE=SPFILE; ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO SID='*' SCOPE=BOTH;
Comprueba la existencia de registros de rehacer en espera en la base de datos. Cada subproceso debe tener un grupo de registros de rehacer en espera más que la cantidad de grupos de registros de rehacer en línea.
SELECT 'Logfile groups in thread ' || THREAD# || ': ' || COUNT(*) FROM V$LOG GROUP BY THREAD# UNION SELECT 'Standby logfile groups in thread ' || THREAD# || ': ' || COUNT(*) FROM V$STANDBY_LOG GROUP BY THREAD#;
En el siguiente ejemplo, hay cuatro registros de rehacer en línea por subproceso y no hay grupos de registros de rehacer en espera creados. Dado que hay cuatro grupos de registros de rehacer en línea, se deben crear cinco grupos de registros de rehacer en espera para cada subproceso:
Logfile groups in thread 1: 4 Logfile groups in thread 2: 4
Si hay suficientes grupos de registros de rehacer en espera, omite este paso. Los grupos de registros de rehacer en espera deben tener el mismo tamaño que cada grupo de registros de rehacer en línea. Crea la cantidad necesaria de grupos de registros de rehacer en espera con el siguiente código de PL/SQL:
SET FEEDBACK OFF SET SERVEROUTPUT ON DECLARE CURSOR cur_thread IS SELECT THREAD# THREAD, COUNT(*) COUNT FROM V$LOG GROUP BY THREAD#; standbylog_count NUMBER := 0; standbylog_group NUMBER := 0; standbylog_size NUMBER := 0; last_group_number NUMBER; sqlstmt VARCHAR2(200); BEGIN SELECT MAX(GROUP#), MAX(BYTES) INTO last_group_number, standbylog_size FROM V$LOG; standbylog_group := last_group_number + 1; FOR rec_thread IN cur_thread LOOP standbylog_count := rec_thread.count + 1; FOR i IN 1..standbylog_count LOOP sqlstmt := 'ALTER DATABASE ADD STANDBY LOGFILE THREAD ' || rec_thread.thread || ' GROUP ' || TO_CHAR(standbylog_group) || ' SIZE ' || standbylog_size || ';'; DBMS_OUTPUT.PUT_LINE( sqlstmt); standbylog_group := standbylog_group + 1; END LOOP; END LOOP; END; / SET FEEDBACK ON
En el siguiente resultado de ejemplo, se indica que debes crear cinco grupos de registro de rehacer en espera para cada uno de los dos subprocesos:
ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 9 SIZE 2147483648; ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 10 SIZE 2147483648; ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 11 SIZE 2147483648; ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 12 SIZE 2147483648; ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 GROUP 13 SIZE 2147483648; ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 GROUP 14 SIZE 2147483648; ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 GROUP 15 SIZE 2147483648; ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 GROUP 16 SIZE 2147483648; ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 GROUP 17 SIZE 2147483648; ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 GROUP 18 SIZE 2147483648;
Verifica que los registros de rehacer en espera estén configurados correctamente para tu configuración:
SELECT 'Logfile groups in thread ' || THREAD# || ': ' || COUNT(*) FROM V$LOG GROUP BY THREAD# UNION SELECT 'Standby logfile groups in thread ' || THREAD# || ': ' || COUNT(*) FROM V$STANDBY_LOG GROUP BY THREAD#;
El siguiente resultado tiene cuatro grupos de registros de rehacer en línea por subproceso y cinco grupos de registros de rehacer en espera por subproceso:
Logfile groups in thread 1: 4 Logfile groups in thread 2: 4 Standby logfile groups in thread 1: 5 Standby logfile groups in thread 2: 5
Sal de SQL*Plus:
EXIT;
Copia los archivos de contraseña y parámetro de la base de datos en los servidores en espera
Crea un archivo de parámetro de base de datos y cópialo en el servidor en espera:
Crea una carpeta para el archivo de parámetro de base de datos en espera (
pfile
):mkdir /home/oracle/backup
Inicia SQL*Plus y, luego, crea la base de datos en espera
pfile
:sqlplus / as sysdba
CREATE PFILE='/home/oracle/backup/initDBDG_SITE21.ora' FROM SPFILE;
Sal de SQL*Plus y, luego, copia
pfile
en el primer servidor de la solución Bare Metal en la ubicación en espera:EXIT;
scp /home/oracle/backup/initDBDG_SITE21.ora ORACLE_USERNAME@site2db1:/apps/oracle/19.0.0/db_home1/dbs/initDBDG_SITE21.ora
Asegúrate de que la contraseña de acceso remoto de SYS se guarde de forma segura. Si no conoces la contraseña, restablécela.
Copia el archivo de contraseña en el clúster en espera:
Obtén la ubicación del archivo de contraseña con el comando
srvctl
:srvctl config database -db DBDG_SITE1 | grep -i password
En el siguiente resultado, se muestra la ubicación de un almacén de archivos de contraseña en ASM:
Password file: +DATA/DBDG_SITE1/PASSWORD/pwdDBDG_SITE1.287.1086459663
Realiza una copia temporal del archivo de contraseña en el sistema de archivos local con el comando
asmcmd
:asmcmd cp +DATA/DBDG_SITE1/PASSWORD/pwdDBDG_SITE1.287.1086459663 /tmp/orapwDBDG_SITE21
Copia el archivo de contraseña en el primer servidor de la solución Bare Metal en la ubicación en espera y, luego, borra la copia temporal del servidor de la solución Bare Metal en la ubicación principal:
scp /tmp/orapwDBDG_SITE21 ORACLE_USERNAME@site2db1:/apps/oracle/19.0.0/db_home1/dbs/orapwDBDG_SITE21 rm /tmp/orapwDBDG_SITE21
Configura la conectividad de la base de datos
Edita el archivo $ORACLE_HOME/network/admin/tsnames.ora
en cada servidor de la solución Bare Metal en la ubicación de la base de datos principal para actualizar la configuración del servicio Net.
El archivo tiene tres entradas: una para cada base de datos y una entrada temporal usada durante la duplicación de la base de datos que borrarás más adelante:
DBDG_SITE1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = DBDG_SITE1_SCAN_HOSTNAME)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = DBDG_SITE1) (UR=A)
)
)
DBDG_SITE2 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = DBDG_SITE2_SCAN_HOSTNAME)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = DBDG_SITE2) (UR=A)
)
)
DBDG_SITE2_FOR_DUPLICATION =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = site2db1)(PORT = 1523))
(CONNECT_DATA =
(SERVER = DEDICATED)
(INSTANCE_NAME = DBDG_SITE21) (UR=A)
)
)
La base de datos principal ya está lista para usarse en una configuración de Data Guard.
Próximos pasos
A continuación, crea la base de datos en espera de Data Guard.