- Despliegue una topología de recuperación ante desastres multinube mediante Oracle Database Service for Azure
- Preparación para el despliegue de la topología
Preparación para el despliegue de la topología
Para que Data Guard funcione, las dos bases de datos de las distintas regiones deben comunicarse. Por lo tanto, debe configurar una conexión de intercambio de tráfico remoto entre las dos regiones de OCI a través de sus respectivos DRG. OracleDB crea los DRG para la configuración de Azure, por lo que solo necesita establecer una conexión de intercambio de tráfico remoto entre los DRG existentes.
Configuración de la red
Para configurar la red, realice los siguientes pasos:
- Configure la conectividad de red para la máquina virtual de Azure y OracleDB para los sistemas de base de datos de Azure.
- Asegúrese de que tiene la clave privada ssh para el sistema de Oracle DB disponible en la máquina virtual de Azure.
- Pruebe la conectividad entre las máquinas virtuales de Azure y OracleDB para los sistemas de base de datos de Azure.
- Configure la red para los sistemas de base de datos en OCI.
- En primer lugar, vaya a los detalles de la VCN del sistema de base de datos en la región 1, seleccione Asociaciones de gateway de direccionamiento dinámico y, a continuación, el nombre de DRG para cargar los detalles del DRG en la región 1. A continuación, seleccione Asociaciones de conexiones de intercambio de tráfico remoto. En una segunda ventana del explorador, haga exactamente lo mismo para la región 2.
- A continuación, en ambas regiones, seleccione Crear conexión de intercambio de tráfico remoto para crear una RPC.
- Cuando se hayan creado ambas RPC, seleccione el nombre de RPC en la región 1 y copie el OCID.
- En la región 2, seleccione el nombre de RPC y seleccione Establecer conexión. Seleccione el nombre de región correcto para la región 1 (a la que nos estamos conectando) y proporcione el OCID para la RPC en la región 1, que ha copiado en el paso anterior. Unos momentos después de establecer la conexión, el estado de peer debe ser "Peered".
- A continuación, permita el tráfico entre las redes virtuales en las dos regiones. Vaya a los detalles de la VCN y seleccione la lista de seguridad por defecto. Seleccione Agregar reglas de entrada para permitir el tráfico desde el rango de CIDR de la VCN opuesta.
- Por último, conéctese desde las máquinas virtuales de Azure a los respectivos sistemas de base de datos base de OCI. Edite el archivo
tnsnames.ora
para que ambos sistemas de base de datos base tengan una conexión a la otra base de datos. - Confirme que
tnsping
funciona correctamente desde ambos sistemas de base de datos a la base de datos opuesta.
Configuración de DR de Oracle Database for Azure
Para configurar la base de datos Oracle para la recuperación ante desastres de Azure, debe preparar una base de datos principal y una secundaria, como se describe a continuación.
Note:
Haga clic en Copiar para guardar el ejemplo de comando en el portapapeles para pegarlo en la línea de comandos. Asegúrese de sustituir cualquiervariables
por valores específicos de la implantación.
Preparar Base de Datos Primaria
Para preparar la base de datos primaria, debe configurar listeners estáticos, actualizar el archivo tnsnames.ora y configurar varios parámetros y valores de la base de datos.
- En la petición de datos
SQL>
, para verificar la siguiente información:- Comprobar que el flashback de base de datos está activado
- Compruebe que el registro forzado de la base de datos está activado
- Comprobar que la base de datos está en modo archive log
- Comprobar que la base de datos está en modo abierto
- Comprobar que la base de datos está en el rol de base de datos primaria
select log_mode, FORCE_LOGGING, FLASHBACK_ON, OPEN_MODE, DATABASE_ROLE from v$database ;
La salida debe ser similar a esta:LOG_MODE FORCE_LOGGING FLASHBACK_ON OPEN_MODE DATABASE_ROLE ---------------- ------------------------ ---------------------- -------------------- ----------------------- ARCHIVELOG YES YES READ WRITE PRIMARY
- Compruebe que la gestión automática de archivos en espera se ha definido como automática ejecutando este comando:
show parameter standby_file_management
La salida debe ser similar a esta:NAME TYPE VALUE ------------------------------------ ----------- ---------- standby_file_management string AUTO
- Defina los archivos de configuración del broker:
show parameter dg_broker_config_file1;
La salida debe ser similar a esta:NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ dg_broker_config_file1 string /u01/app/oracle/product/19.0.0.0/dbhome_1/dbs/dr1dbuks_898_lhr.dat
A continuación, introduzca este comando:
show parameter dg_broker_config_file2;
La salida debe ser similar a esta:NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ dg_broker_config_file2 string /u01/app/oracle/product/19.0.0.0/dbhome_1/dbs/dr2dbuks_898_lhr.dat
- Active Data Guard Broker:
show parameter dg_broker_start
La salida debe ser similar a esta:NAME TYPE VALUE ------------------------------------ ----------- -------------- dg_broker_start boolean FALSE
A continuación, introduzca estos comandos:alter system set dg_broker_start=true scope=both;
show parameter dg_broker_start
La salida debe ser similar a esta:NAME TYPE VALUE ------------------------------------ ----------- -------------- dg_broker_start boolean TRUE
- En el símbolo del sistema (por ejemplo,
[oracle@ldbuksdr ]$
), observe el estado de listerner:lsnrctl status
- Tenga en cuenta los detalles de configuración de la base de datos:
srvctl config database -d db_unique_name
- Tenga en cuenta las entradas
tns
:cat $ORACLE_HOME/network/admin/tnsnames.ora
- Observe la salida
sqlnet.ora
:cat $ORACLE_HOME/network/admin/sqlnet.ora
- Copie el archivo de contraseñas en el sistema de base de datos en espera en la ubicación
/tmp
introduciendo estos comandos:cd .ssh
scp -i private_key /tmp/orapw<sid> opc@ip_standby_vm:/tmp/orapwsid
- Busque y copie los archivos de cartera en el sistema de base de datos en espera en la ubicación
/tmp
:select CON_ID, WRL_PARAMETER, WRL_TYPE, STATUS, WALLET_TYPE from V$ENCRYPTION_WALLET;
La salida debe ser similar a esta:CON_ID WRL_PARAMETER STATUS WALLET_TYPE ---------- ------------------------------------------------------------------------------ ------------ ------------ ---------------------------- 1 /opt/oracle/dcs/commonstore/wallets/dbuks_898_lhr/tde/ OPEN AUTOLOGIN 2 OPEN AUTOLOGIN 3 OPEN AUTOLOGIN
Introduzca:cd /opt/oracle/dcs/commonstore/wallets/db_unique_name/tde ls -ltra
Verá algo similar a lo siguiente:-rw------- 1 oracle asmadmin 5467 Jun 19 18:59 ewallet.p12 -rw------- 1 oracle asmadmin 5512 Jun 19 18:59 cwallet.sso
A continuación, introduzca estos comandos (dondedb_unique_name
es el nombre único de la base de datos de la cartera):[oracle@ ~]$ cp /opt/oracle/dcs/commonstore/wallets/db_unique_name/tde/ewallet.p12/tmp/cwallet.p12
cp /opt/oracle/dcs/commonstore/wallets/db_unique_name/tde/cwallet.sso/tmp/cwallet.sso
chmod 777 /tmp/ewallet.p12
chmod 777 /tmp/cwallet.sso
scp -i private_key /tmp/ewallet.p12 opc@ip_standby_vm:/tmp/ewallet.p12
scp -i private_key /tmp/cwallet.sso opc@ip_standby_vm:/tmp/cwallet.sso.
- Configure el listener estático.Se necesita un listener estático para la instanciación inicial de la base de datos en espera. Cuando una base de datos está caída, un listener estático permite una conexión remota a una instancia, lo que le permite utilizar Oracle Data Guard para iniciar la instancia. Asegúrese de que no haya saltos de línea ni espacios en blanco en los archivos
listener.ora
.En la base de datos primaria, agregue el archivo
SID_LIST_LISTENER
en el archivolistener.ora
para incluir el nombre único de la base de datos, el directorio raíz de Oracle y el identificador del sistema (SID) de Oracle de la base de datos primaria.
Agregue la siguiente entrada alsnrctl status vi listener.ora
listener.ora
, donde:DB_UNIQUE_NAME
es el nombre único de la base de datos principal.ORACLE_HOME
es el directorio raíz de Oracle local de la base de datos primaria.ORACLE SID
es el SID de la base de datos primaria.
La entrada debe tener un aspecto similar al siguiente (las entradas paraSID_LIST_LISTENER=(SID_LIST=(SID_DESC=(GLOBAL_DBNAME=DB_UNIQUE_NAME)(ORACLE_HOME=ORACLE_HOME) (SID_NAME = ORACLE SID)))
GLOBAL_DBNAME
,ORACLE_HOME
ySID_NAME
variarán):SID_LIST_LISTENER=(SID_LIST=(SID_DESC=(GLOBAL_DBNAME=dbuks_898_lhr.odsp129521.cvcn.oraclevcn.com) (ORACLE_HOME=/u01/app/oracle/product/19.0.0.0/dbhome_1)(SID_NAME=dbuks)))
Vuelva a cargar el listener y compruebe su estado.lsnrctl reload lsnrctl status
- Configure las entradas
tns
.Necesita entradas para cada base de datos en los archivostnsnames.ora
principal y en espera para garantizar un transporte de redo adecuado. Las direcciones IP se utilizan porque no hay DNS entre las bases de datos para resolver nombres de servidor en direcciones IP. Utilice el siguiente ejemplo, sustituyendo los valores relevantes para la configuración. Las configuraciones de Oracle Real Application Clusters (Oracle RAC) no pueden resolver el nombre del listener de exploración; por lo tanto, debe utilizar una lista de direcciones para definir todos los nodos. Se agregarán más adelante, la instancia inicial solo debe mostrar una dirección IP en las entradas de tns para garantizar que Oracle Recovery Manager (RMAN) se conecte siempre a los mismos nodos.[oracle@~]$ cd $ORACLE_HOME/network/admin [oracle@~]$ vi tnsnames.ora
La entrada del archivotnsnames.ora
debe ser similar a la siguiente:DBUKS_R2J_AMS=(DESCRIPTION=(SDU=65536)(RECV_BUF_SIZE=134217728)(SEND_BUF_SIZE=134217728)(ADDRESS_LIST=(FAILOVER=on)(CONNECT_TIMEOUT=3) (RETRY_COUNT=3)(ADDRESS=(PROTOCOL=TCP)(HOST=10.91.0.177)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED) (SERVICE_NAME=dbuks_r2j_ams.odsp083156.cvcn.oraclevcn.com)(UR=A))) DBUKS_898_LHR=(DESCRIPTION=(SDU=65535)(RECV_BUF_SIZE=134217728)(SEND_BUF_SIZE=134217728)(ADDRESS_LIST=(FAILOVER=on)(CONNECT_TIMEOUT=3) (RETRY_COUNT=3)(ADDRESS=(PROTOCOL=TCP)(HOST=10.90.0.246)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED) (SERVICE_NAME=dbuks_898_lhr.odsp129521.cvcn.oraclevcn.com)(UR=A)))
Preparación de la base de datos en espera
A continuación, compare la base de datos en espera.
- Suprima manualmente la base de datos creada por las herramientas de Oracle Database for Azure. Antes de suprimir la base de datos en espera, guarde el archivo db_unique_name actual y anote la ubicación de la cartera, ya que se utilizará posteriormente. La siguiente consulta proporciona detalles para la ubicación de cartera.
- Desde el símbolo del sistema sqlplus, introduzca:
select * from V$ENCRYPTION_WALLET;
- A continuación, prepare el script
rm_dbfiles.sql
para eliminar los archivos relacionados con la base de datos:srvctl config database -d db_unique_name
- Ejecute el siguiente script para cerrar la base de datos que está creando como base de datos en espera y eliminar los archivos de base de datos:
vi rm_dbfiles.sql set heading off linesize 999 pagesize 0 feedback off trimspool on spool /home/oracle/demo/files.lst select 'asmcmd rm '||name from v$datafile union all select 'asmcmd rm '||name from v$tempfile union all select 'asmcmd rm '||member from v$logfile; spool off create pfile='/home/oracle/demo/ORACLE_UNQNAME.pfile' from spfile; exit
- A continuación, vaya a la petición de datos sqlplus como DBA del sistema:
sqlplus "/ as sysdba"
Y ejecute estos comandos:@rm_dbfiles.sql
exit
- A continuación, otorgue permiso para leer, escribir y ejecutar (donde
db_unique_name
es el nombre único de la base de datos afectada):chmod 777 files.lst
srvctl stop database -d db_unique_name
- Guardar y ejecutar el script:
./files.lst
- Desde el símbolo del sistema sqlplus, introduzca:
- Copie el archivo de contraseñas y los archivos de cartera recibidos en
/tmp
de la base de datos primaria en las ubicaciones respectivas del sistema de base de datos en espera.- Copie el archivo de contraseñas de la base de datos y los archivos de cartera recibidos en /tmp desde la base de datos primaria a las ubicaciones respectivas del sistema de base de datos en espera (donde orapwsid es la contraseña del SID):
Por ejemplo:sudo cp /tmp/orapwsid $ORACLE_HOME/dbs/orapwsid
La salida debe ser similar a la siguiente:sudo ls -ltra /u01/app/oracle/product/19.0.0.0/dbhome_1/dbs/orapwdbuks
-rw-r-----1 oracle oinstall 2048 Jul3 13:42 /u01/app/oracle/product/19.0.0.0/dbhome_1/dbs/orapwdbuks
- Verifique que la salida md5sum del archivo de contraseñas coincida con la salida principal y la base de datos en espera (donde orapwsid es la contraseña SID):
La salida de la base de datos primaria debe tener un aspecto similar al siguiente (donde el orapwsid esmd5sum /u01/app/oracle/product/19.0.0.0/dbhome_1/dbs/orapwsid
orapwdbuks
):
Y para la base de datos en espera:b3895fa6357471f80c6e0f4ac16fdc23 /u01/app/oracle/product/19.0.0.0/dbhome_1/dbs/orapwdbuks
b3895fa6357471f80c6e0f4ac16fdc23 /u01/app/oracle/product/19.0.0.0/dbhome_1/dbs/orapwdbuks
- Elimine los archivos de cartera existentes y copie los archivos de cartera de
/tmp
en la ubicación de TDE (dondedb_unique_name
es el nombre único de la base de datos afectada):[oracle@ ~]$ cd /opt/oracle/dcs/commonstore/wallets/db_unique_name/tde/
rm ewallet.p12 cwallet.sso
sudo cp /tmp/ewallet.p12 /opt/oracle/dcs/commonstore/wallets/db_unique_name/tde/ewallet.p12
sudo cp /tmp/cwallet.sso /opt/oracle/dcs/commonstore/wallets/db_unique_name/tde/cwallet.ss
chown oracle:asmadmin /opt/oracle/dcs/commonstore/wallets/db_unique_name/tde/ewallet.p12
sudo chown oracle:asmadmin /opt/oracle/dcs/commonstore/wallets/db_unique_name/tde/cwallet.sso
- Copie el archivo de contraseñas de la base de datos y los archivos de cartera recibidos en /tmp desde la base de datos primaria a las ubicaciones respectivas del sistema de base de datos en espera (donde orapwsid es la contraseña del SID):
- Configurar listener estático:
- En la base de datos en espera de OCI, agregue el archivo
SID_LIST_LISTENER
para incluir el nombre único de la base de datos, el directorio raíz de Oracle de OCI y el identificador del sistema (SID) de Oracle de la base de datos primaria.lsnrctl status
vi listener.ora
- Agregue la siguiente entrada al archivo
listener.ora
, donde:- DB_UNIQUE_NAME es el nombre de la base de datos primaria.
- ORACLE_HOME es el directorio raíz de Oracle local de la base de datos primaria.
- ORACLE SID es el SID de la base de datos primaria.
Por ejemplo, la entrada debe tener un aspecto similar al siguiente:SID_LIST_LISTENER=(SID_LIST=(SID_DESC=(GLOBAL_DBNAME=DB_UNIQUE_NAME)(ORACLE_HOME=ORACLE_HOME) (SID_NAME = ORACLE_SID)))
SID_LIST_LISTENER=(SID_LIST=(SID_DESC=(GLOBAL_DBNAME= dbuks_r2j_ams. odsp083156.cvcn.oraclevcn.com) (ORACLE_HOME=/u01/app/oracle/product/19.0.0.0/dbhome_1)(SID_NAME=dbuks)))
- Vuelva a cargar el listener y compruebe el estado:
lsnrctl reload
lsnrctl status
- En la base de datos en espera de OCI, agregue el archivo
- Configure las entradas
tns
:cd $ORACLE_HOME/network/admin
vi tnsnames.ora
La entrada del archivotnsnames.ora
debe ser similar a la siguiente:DBUKS_R2J_AMS=(DESCRIPTION=(SDU=65536)(RECV_BUF_SIZE=134217728)(SEND_BUF_SIZE=134217728)(ADDRESS_LIST=(FAILOVER=on)(CONNECT_TIMEOUT=3) (RETRY_COUNT=3)(ADDRESS=(PROTOCOL=TCP)(HOST=10.91.0.177)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED) (SERVICE_NAME=dbuks_r2j_ams.odsp083156.cvcn.oraclevcn.com)(UR=A))) DBUKS_898_LHR=(DESCRIPTION=(SDU=65535)(RECV_BUF_SIZE=134217728)(SEND_BUF_SIZE=134217728)(ADDRESS_LIST=(FAILOVER=on)(CONNECT_TIMEOUT=3) (RETRY_COUNT=3)(ADDRESS=(PROTOCOL=TCP)(HOST=10.90.0.246)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED) (SERVICE_NAME=dbuks_898_lhr.odsp129521.cvcn.oraclevcn.com)(UR=A)))