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:

  1. 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.
  2. Configure la red para los sistemas de base de datos en OCI.
    1. 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.
    2. A continuación, en ambas regiones, seleccione Crear conexión de intercambio de tráfico remoto para crear una RPC.
    3. Cuando se hayan creado ambas RPC, seleccione el nombre de RPC en la región 1 y copie el OCID.
    4. 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".
    5. 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.
    6. 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.
    7. 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 cualquier variables 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.

  1. 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
    ejecute este comando:
    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
  2. 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
  3. 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
  4. 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
  5. En el símbolo del sistema (por ejemplo, [oracle@ldbuksdr ]$), observe el estado de listerner:
    lsnrctl status
  6. Tenga en cuenta los detalles de configuración de la base de datos:
    srvctl config database -d db_unique_name
  7. Tenga en cuenta las entradas tns:
    cat $ORACLE_HOME/network/admin/tnsnames.ora
  8. Observe la salida sqlnet.ora:
    cat $ORACLE_HOME/network/admin/sqlnet.ora
  9. 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   
  10. 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 (donde db_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.
  11. 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 archivo listener.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.

    lsnrctl status 
    vi listener.ora 
    Agregue la siguiente entrada a 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.
    SID_LIST_LISTENER=(SID_LIST=(SID_DESC=(GLOBAL_DBNAME=DB_UNIQUE_NAME)(ORACLE_HOME=ORACLE_HOME) 
    (SID_NAME = ORACLE SID)))
    La entrada debe tener un aspecto similar al siguiente (las entradas para GLOBAL_DBNAME, ORACLE_HOME y SID_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
  12. Configure las entradas tns.
    Necesita entradas para cada base de datos en los archivos tnsnames.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 archivo tnsnames.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.

  1. 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.
    1. Desde el símbolo del sistema sqlplus, introduzca:
      select * from V$ENCRYPTION_WALLET; 
    2. 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
    3. 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
      
    4. 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
    5. 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
    6. Guardar y ejecutar el script:
      ./files.lst 
    Todos los archivos de la base de datos inicial se han eliminado.
  2. 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.
    1. 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):
      sudo cp /tmp/orapwsid $ORACLE_HOME/dbs/orapwsid 
      Por ejemplo:
      sudo ls -ltra /u01/app/oracle/product/19.0.0.0/dbhome_1/dbs/orapwdbuks 
      La salida debe ser similar a la siguiente:
      
      -rw-r-----1 oracle oinstall 2048 Jul3 13:42 /u01/app/oracle/product/19.0.0.0/dbhome_1/dbs/orapwdbuks
    2. 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):
      md5sum /u01/app/oracle/product/19.0.0.0/dbhome_1/dbs/orapwsid 
      La salida de la base de datos primaria debe tener un aspecto similar al siguiente (donde el orapwsid es orapwdbuks):
      
      b3895fa6357471f80c6e0f4ac16fdc23 /u01/app/oracle/product/19.0.0.0/dbhome_1/dbs/orapwdbuks 
      
      Y para la base de datos en espera:
      
      b3895fa6357471f80c6e0f4ac16fdc23 /u01/app/oracle/product/19.0.0.0/dbhome_1/dbs/orapwdbuks
    3. Elimine los archivos de cartera existentes y copie los archivos de cartera de /tmp en la ubicación de TDE (donde db_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
  3. Configurar listener estático:
    1. 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
    2. 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.
       SID_LIST_LISTENER=(SID_LIST=(SID_DESC=(GLOBAL_DBNAME=DB_UNIQUE_NAME)(ORACLE_HOME=ORACLE_HOME) 
      (SID_NAME = ORACLE_SID)))
      Por ejemplo, la entrada debe tener un aspecto similar al siguiente:
      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))) 
    3. Vuelva a cargar el listener y compruebe el estado:
      lsnrctl reload 
      lsnrctl status
  4. Configure las entradas tns:
    cd $ORACLE_HOME/network/admin
    vi tnsnames.ora
    La entrada del archivo tnsnames.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)))