Extracción descendente para el despliegue de Oracle GoldenGate

Un despliegue descendente de Oracle GoldenGate permite descargar el procesamiento de los redo logs en una base de datos alternativa denominada base de datos de minería. La base de datos de minería no necesita contener ningún dato de la base de datos de origen, pero debe tener la misma versión de base de datos o una posterior. Esto significa que la versión 12c de Oracle como base de datos de origen puede utilizar la versión de base de datos de minería 19c o superior, lo que permite a Oracle GoldenGate capturar cambios de una base de datos Oracle 12c sin ejecutarse realmente en la base de datos Oracle 12.

La extracción descendente también se puede utilizar en situaciones en las que GoldenGate no puede realizar una conexión a la base de datos de origen.

Nota: Los servidores de base de datos de origen y descendente deben tener los mismos tipos de procesador y endianness. Por ejemplo, el Extract descendente funcionará con Linux de origen (x86) en un servidor de Windows descendente (x86), pero no funciona si el servidor de origen es HP-UX pero el servidor descendente es AIX, o el servidor de origen es HP PA-RISC pero el servidor descendente es HP-Itanium.

Una base de datos de minería descendente acepta archive logs y redo logs en línea de una base de datos origen. Esto implica que un Extract descendente puede existir en dos modos:

En un despliegue descendente típico, la base de datos origen, en la que se realizan cambios en los datos, enviará sus redo logs o archive logs a una base de datos de minería en la que el proceso Extract extraerá los redo logs y escribirá los archivos de pista. El Extract descendente también se puede utilizar en situaciones en las que Oracle GoldenGate no puede establecer una conexión con la base de datos origen. En el siguiente diagrama, CDBNORTH es la base de datos de origen y CDBSOUTH es la base de datos de destino. Hay una base de datos de minería entre el origen y el destino con el servidor de minería de logs de base de datos que transfiere los redo logs del Extract descendente al destino.

Flujo de trabajo entre la base de datos de contenedor multi-inquilino de origen y una base de datos descendente con el servidor de logmining.

Una opción alternativa es utilizar un enfoque en cascada. Si hay una base de datos en espera de Active Data Guard, puede hacer que la base de datos en espera envíe los redo logs a la base de datos de minería en lugar de enviar los logs desde la base de datos primaria. Esta opción se debe utilizar si hay un ancho de banda de red limitado y la base de datos en espera se encuentra en la misma región o centro de datos que la base de datos de minería.

Este enfoque utiliza un ADG configurado en modo en cascada para transportar redo logs a una base de datos de minería descendente, a la que luego hace referencia un Extract descendente, lo que reduce la sobrecarga en la base de datos origen, como se muestra en el siguiente diagrama.

Nota: El proceso de extracción para Oracle no se puede conectar a una base de datos en espera de Data Guard o a una base de datos en espera de Active Data Guard para capturar datos.

Base de datos descendente conectada a Active Data Guard (ADG)

Para obtener detalles de configuración sobre la configuración de un entorno descendente en cascada, consulte Activación de la extracción descendente para trabajar con ADG.

Configuración de las bases de datos de minería de origen y descendente

En esta sección, aprenderá sobre los parámetros y las configuraciones de gestión de usuarios necesarios en la base de datos.

Usuario de Oracle GoldenGate en bases de datos de minería de origen y descendente

El usuario administrador de Oracle GoldenGate debe existir en cada base de datos. En las bases de datos de contenedor, se necesita un usuario común, ya que el Extract se utilizará en el contenedor raíz.

Para configurar usuarios para Oracle AI Database 26ai y versiones posteriores, se debe asignar el rol de usuario OGG_CAPTURE y OGG_APPLY al nuevo usuario. Consulte Otorgar privilegios de usuario para Oracle AI Database 26ai y versiones superiores para obtener más información.

Para configurar usuarios para Oracle Database 21c y versiones inferiores, se utilizan paquetes PL/SQL. En el siguiente ejemplo se muestra la creación de un usuario y los privilegios asociados otorgados a este usuario al utilizar Oracle GoldenGate con Oracle Database 21c y versiones inferiores:

CREATE USER c##ggadmin IDENTIFIED BY *password* CONTAINER = all;
ALTER USER c##ggadmin SET CONTAINER_DATA = all CONTAINER = current;
GRANT ALTER SESSION TO c##ggadmin CONTAINER = all;
GRANT connect, resource TO c##ggadmin CONTAINER = all;

BEGIN
  DBMS_GOLDENGATE_AUTH.GRANT_ADMIN_PRIVILEGE
    ( grantee                 => 'C##GGADMIN'
    , privilege_type          => 'CAPTURE'
    , grant_select_privileges =>  TRUE
    , container               => 'ALL'
    );
END;
/

Nota: El usuario común (c##ggadmin) solo es necesario para la base de datos descendente.

Configurar conexiones de base de datos

Requisitos del servicio de red de base de datos

Se puede acceder a las bases de datos de origen y descendentes mediante los servicios de red de base de datos en ambas direcciones.

En Oracle GoldenGate, se pueden configurar las conexiones para la base de datos de origen (CDBNORTH_root) y la base de datos descendente (cdbDSC_root). La conexión a la base de datos origen solo es necesaria para almacenar los datos del diccionario durante el registro de Extract. Puede utilizar el parámetro FETCHUSERIDALIAS para conectarse a la base de datos de minería descendente (cdbDSC_root) para las recuperaciones en tiempo de ejecución. Con la redirección de ADG, el registro de Extract se puede redirigir al origen desde un ADG. Para configurar conexiones, asegúrese de que tiene las credenciales de base de datos para estos usuarios, para crear credenciales a partir del despliegue de Oracle GoldenGate.

Puede probar el servicio de red con SQL*Plus, que forma parte del shiphome de Oracle GoldenGate.

Requisitos previos de la base de datos origen

Para configurar conexiones de base de datos, asegúrese de que los siguientes valores se realizan en las instancias de base de datos origen:

Requisitos previos de la base de datos de minería descendente

Para configurar conexiones de base de datos, asegúrese de que los siguientes valores se realizan en las instancias de base de datos de origen y descendente:

Configurar parámetros para base de datos descendente

Utilice esta sección para configurar parámetros para el modo de minería en tiempo real y el modo de minería de archivos, según sea necesario.

Configuración de parámetros para extracción descendente en modo de minería en tiempo real

Para la extracción descendente en modo de minería en tiempo real, el requisito principal es que la base de datos descendente debe tener los archivos redo log en espera configurados correctamente.

La minería en tiempo real descendente está activada con un valor explícito en el archivo de parámetros de extracción. La configuración del LAD es independiente de este modo. Si el parámetro TRANLOGOPTIONS INTEGRATEDPARAMS (REAL_TIME_MINE Y) aún no se ha definido, debe definirlo para activar el Extract descendente para el modo de minería en tiempo real:

TRANLOGOPTIONS INTEGRATEDPARAMS (DOWNSTREAM_REAL_TIME_MINE Y)

Nota: Sólo puede haber una extracción en tiempo real en la base de datos descendente para una base de datos de origen determinada. Otras extracciones no deben ser en tiempo real. Se trata de una restricción del transporte de redo.

El siguiente comando ejecutado en la base de datos de minería descendente muestra la copia de seguridad local que se está configurando mediante el FRA:

ALTER SYSTEM
    SET log_archive_config='DG_CONFIG=(CDBNORTH, cdbDSC)';
ALTER SYSTEM set FAL_SERVER = 'CDBNORTH_root';

Los archivos redo log en espera deben existir en la base de datos descendente. Si hay n archivos redo log en línea en el origen, debe haber n+1 archivos redo log en espera en el destino del mismo tamaño.

Creación de Archivos Redo Log en Espera en la Base de Datos de Minería Descendente

En los siguientes pasos se describe el procedimiento para agregar archivos redo log en espera a la base de datos de minería descendente. A continuación se resumen las reglas para crear los redo logs en espera:

Los pasos específicos y las sentencias SQL que se necesitan para agregar archivos redo log en espera dependen del entorno. Consulte Creación de Bases de Datos Físicas en Espera para obtener instrucciones detalladas sobre cómo agregar archivos redo log en espera a una base de datos.

Nota: Si hay varias bases de datos de origen que envían redo a una única base de datos de minería descendente, solo uno de esos orígenes puede enviar redo a los redo logs en espera de la base de datos de minería. Un proceso de extracción que extrae el redo de esta base de datos origen se puede ejecutar en modo de tiempo real. Todas las demás bases de datos de origen deben enviar solo sus archive logs a la base de datos de minería descendente, y las extracciones que leen estos datos se deben configurar para ejecutarse en modo de solo archive log.

Para Crear Archivos Redo Log en Espera

  1. En SQL*Plus, conéctese a la base de datos origen como usuario administrativo.

  2. Determine el tamaño del archivo log de origen. Anote los resultados.

    SELECT BYTES FROM V$LOG;
  3. Determine el número de grupos de archivos log en línea que están configurados en la base de datos origen. Anote los resultados.

    SELECT COUNT(GROUP#) FROM V$LOG;
  4. Conéctese a la base de datos de minería descendente como usuario administrativo.

  5. Agregue los grupos de archivos log en espera a la base de datos de minería. El tamaño del archivo log en espera debe ser al menos el tamaño del archivo log de origen. El número de grupos de archivos log en espera debe ser al menos uno más que el número de grupos de archivos log en línea de origen. Esto se aplica a cada instancia (thread) en una instalación de RAC. Por lo tanto, si tiene n threads en la base de datos de origen, cada uno con grupos de redo logs m, debe configurar los grupos de redo logs n*(m+1) en la base de datos de minería descendente.

    En el siguiente ejemplo, se muestran tres grupos de logs en espera.

    ALTER DATABASE ADD STANDBY LOGFILE GROUP 3
    ('/oracle/dbs/slog3a.rdo', '/oracle/dbs/slog3b.rdo') SIZE 500M;
    ALTER DATABASE ADD STANDBY LOGFILE GROUP 4
    ('/oracle/dbs/slog4.rdo', '/oracle/dbs/slog4b.rdo') SIZE 500M;
    ALTER DATABASE ADD STANDBY LOGFILE GROUP 5
    ('/oracle/dbs/slog5.rdo', '/oracle/dbs/slog5b.rdo') SIZE 500M;
  6. Confirme que los grupos de archivos log en espera se hayan agregado correctamente.

    SELECT GROUP#, THREAD#, SEQUENCE#, ARCHIVED, STATUS
    FROM V$STANDBY_LOG;

    La salida debe ser similar a la siguiente:

    GROUP#     THREAD#    SEQUENCE#  ARC STATUS
    
    ---------- ---------- ---------- --- ----------
             3          0          0 YES UNASSIGNED
             4          0          0 YES UNASSIGNED
             5          0          0 YES UNASSIGNED
  7. Asegúrese de que los archivos log de la base de datos origen aparecen en la ubicación especificada en el atributo LOCATION del LOG_ARCHIVE_DEST_n local que ha definido. Puede que necesite cambiar el archivo log en la base de datos de origen para ver los archivos en el directorio.

Configuración Local de la Base de Datos de Minería Descendente para Archivar Archivos Redo Log en Espera

Este procedimiento configura la base de datos de minería descendente para archivar los redo logs en espera que reciben datos de redo de los redo logs en línea de la base de datos origen. Tenga en cuenta que los archive logs externos no se deben archivar en el área de recuperación de la base de datos de minería descendente.

Para archivar redo logs en espera localmente:

  1. En la base de datos de minería descendente, defina el segundo destino de archive log en el parámetro de inicialización LOG_ARCHIVE_DEST_n como se muestra en el siguiente ejemplo.

    ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='LOCATION=/home/arc_dest/srl_dbms1
    VALID_FOR=(STANDBY_LOGFILE,PRIMARY_ROLE)'

    Oracle recomienda que los archive logs externos (logs de bases de datos de origen remoto) se mantengan separados de los archivos log de la base de datos de minería local y entre sí. No debe utilizar el área de recuperación de la base de datos de minería descendente para almacenar en área temporal los archive logs ajenos.

  2. Active el parámetro LOG_ARCHIVE_DEST_2 que ha definido en el paso anterior, como se muestra en el siguiente ejemplo.

    ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE

Configuración de parámetros para extracción descendente en modo de minería de archivos

Para configurar un Extract descendente en el modo de minería de archivos o en el modo de minería en tiempo real, debe configurar el transporte de redo. Incluya los siguientes parámetros al configurar el Extract descendente en el modo Archive-Log-Only:

Nota: LOG_ARCHIVE_DEST_2 es independiente del uso de la minería en tiempo real.

Los valores del parámetro de destino de archive log (LAD) son necesarios para el destino de copia de seguridad local y los servicios de transporte de redo en las bases de datos de origen.

Configure los parámetros de LAD para el destino de copia de seguridad local mediante los siguientes comandos:

ALTER SYSTEM SET db_recovery_file_dest = '/u01/app/oracle/fast_recovery_area';
ALTER SYSTEM SET db_recovery_file_dest_size = 100G;
ALTER SYSTEM SET log_archive_dest_1 = 'LOCATION=USE_DB_RECOVERY_FILE_DEST';

Configure las opciones de parámetros de LAD para redo transport services en la base de datos de origen mediante los siguientes comandos:

ALTER SYSTEM SET log_archive_config = 'DG_CONFIG = (CDBNORTH, cdbDSC)';
ALTER SYSTEM
      SET log_archive_dest_2='SERVICE=cdbDSC_root
                              ASYNC
                              NOREGISTER
                              VALID_FOR=(ONLINE_LOGFILES, PRIMARY_ROLE)
                              DB_UNIQUE_NAME=cdbDSC';

Para obtener más información sobre el parámetro LOG_ARCHIVE_DEST y sus atributos, consulte LOG_ARCHIVE_DEST_n en la guía Referencia de base de datos.

Configurar Oracle GoldenGate Extract para el despliegue descendente

En esta sección, obtendrá información sobre los parámetros necesarios para que Oracle GoldenGate configure conexiones con bases de datos de origen y descendentes, y configure Extract para bases de datos descendentes.

Configurar Oracle GoldenGate para base de datos descendente

El archivo de parámetros de Extract descendente debe incluir los siguientes parámetros para configurar un despliegue descendente:

A continuación se muestra un ejemplo del archivo de parámetros Extract que incluye estos parámetros:

EXTRACT EXTDSC
USERIDALIAS cgg_CDBNORTH
TRANLOGOPTIONS MININGUSERALIAS cgg_cdbDSC
TRANLOGOPTIONS INTEGRATEDPARAMS (DOWNSTREAM_REAL_TIME_MINE Y)
FETCHUSERIDALIAS cgg_CDBNORTH DOMAIN OracleGoldenGate

EXTTRAIL Downstream/ea
SOURCECATALOG CDBNORTH_PDB1
DDL INCLUDE MAPPED
TABLE HR.*;

Siga los pasos indicados para configurar el despliegue de Oracle GoldenGate para el Extract descendente:

  1. Agregue credenciales para la base datos de origen:

    ALTER CREDENTIALSTORE ADD USER c##ggadmin@CDBNORTH_root ALIAS cgg_CDBNORTH DOMAIN OracleGoldenGate PASSWORD password

  2. Agregue credenciales para la base de datos descendente:

    ALTER CREDENTIALSTORE ADD USER c##ggadmin@cdbDSC_root ALIAS cgg_cdbDSC DOMAIN OracleGoldenGate PASSWORD *password*
  3. Utilice DBLOGIN para conectarse a la base de datos de origen y a la base de datos descendente desde Oracle GoldenGate:

    DBLOGIN USERIDALIAS cgg_CDBNORTH
    MININGDBLOGIN USERIDALIAS cgg_cdbDSC

    En este ejemplo, cgg_CDBNORTH es el alias de credencial para la base de datos de origen CDBNORTH y cgg_cdbDSC es el alias de credencial para la base de datos de minería.

  4. Agregue y registre un Extract, edite el archivo de parámetros para incluir los parámetros de Extract proporcionados anteriormente, agregue el nombre y la ubicación de la pista de Extract, inicie el Extract:

    ADD EXTRACT extdsc, INTEGRATED TRANLOG, BEGIN NOW
    REGISTER EXTRACT extdsc, DATABASE CONTAINER (CDBNORTH_PDB01)
    
    ADD EXTTRAIL Downstream/ea, EXTRACT extdsc
    START extdsc

Configuración de la extracción descendente en cascada con Active Data Guard

Si no se puede establecer una conexión con la base de datos origen, GoldenGate se puede configurar para utilizar una base de datos en espera de Active Data Guard (ADG). La base de datos en espera está disponible para conexiones de solo lectura para realizar consultas de metadatos y recuperación. En esta sección, aprenderá a configurar una extracción descendente mediante ADG y sin establecer una conexión con la base de datos origen.

Activar extracción descendente para trabajar con ADG

En un entorno de captura descendente en cascada, la base de datos descendente no se conecta directamente a la base de datos origen. Utiliza Active Data Guard (ADG) para recuperar y realizar consultas de metadatos.

La extracción se debe iniciar mediante la opción sourceless para que no se conecte a la base de datos origen y, en su lugar, se conecte a ADG mediante FETCHUSERID o FETCHUSERIDALIAS cuando necesite recuperar cualquier tipo de dato no nativo. Por ejemplo, las operaciones FETCH se procesan en la base de datos ADG, ya que esta instancia está abierta en modo de solo lectura. Otras operaciones que no se pueden procesar en la instancia de ADG, como la creación de la creación del diccionario, se redirigen de ADG a la base de datos de origen.

Al registrar un Extract descendente, Oracle GoldenGate se conecta a ADG como base de datos origen en lugar de la base de datos donde se origina el redo. La redirección de ADG está soportada para los siguientes comandos y parámetros:

ADG Redirection está disponible con Oracle Database 21c y versiones posteriores. También soporta el registro con comodines. En el siguiente ejemplo se muestra el archivo de parámetros Extract para el Extract descendente al utilizar ADG:

EXTRACT EXTDSC
NOUSERID
TRANLOGOPTIONS MININGUSERALIAS cgg_cdbDSC_src DOMAIN OracleGoldenGate
TRANLOGOPTIONS INTEGRATEDPARAMS (DOWNSTREAM_REAL_TIME_MINE Y) FETCHUSERIDALIAS cgg_cdbADG_src DOMAIN OracleGoldenGate

EXTTRAIL cascade/ea
SOURCECATALOG CDBNORTH_PDB01
DDL INCLUDE MAPPED
TABLE HR.*;

A continuación, se muestran los pasos para permitir que Extract descendente funcione con ADG Standby:

  1. Agregue un LOG_ARCHIVE_DESTINATION_N (LAD) adicional en la base de datos en espera de ADG, como se muestra en el siguiente ejemplo:

    ALTER SYSTEM SET LOG_ARCHIVE_DEST_3='service=mining_db_service_name ASYNC NOREGISTER VALID_FOR(STANDBY_LOGFILES,STANDBY_ROLES) DB_UNIQUE_NAME=3rd_db_unique_name' scope=both

    Este paso transporta y genera standby_logfiles para una base de datos en espera de ADG.

  2. Defina LOG_ARCHIVE_CONFIG en la base de datos ADG en espera para enviar los logs a la base de datos de minería, como se muestra en el siguiente ejemplo:

    ALTER SYSTEM SET LOG_ARCHIVE_CONFIG = 'DG_CONFIG' = (CDBNORTH, cdbADG_src, cdbDSC)';

    DB_CONFIG es el nombre único de la base de datos de la primera, segunda y tercera bases de datos.

  3. En la base de datos de minería, configure la ubicación para almacenar el standby_logfiles entrante en la base de datos de minería como se muestra en el siguiente ejemplo:

    ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='location= /home/arc_dest/dstrm VALID_FOR=(STANDBY_LOGFILE,ALL_ROLES)' scope=both

    donde /home/arc_dest/dstrm es la ubicación de archive logs ajenos. No utilice FRA para almacenar archive logs externos.

  4. Ejecute LOG_ARCHIVE_CONFIG en la base de datos de minería para que el proceso Extract pueda leerlos en la base de datos de minería, como se muestra en el siguiente ejemplo:

    ALTER SYSTEM SET LOG_ARCHIVE_CONFIG ='DG_CONFIG' scope=both

    Aquí, DB_CONFIG es el nombre único de la base de datos de la primera, segunda y tercera bases de datos.

  5. Para una extracción descendente, debe asegurarse de que las conexiones a la base de datos están configuradas correctamente. Al registrar Extract, asegúrese de que la conexión DBLOGIN se realiza a la base de datos en espera de ADG, que está abierta para la actividad de solo lectura.

  6. Para agregar el Extract y registrarlo, utilice el siguiente comando:

    DBLOGIN USERID ggadmin@cdbADG_src, PASSWORD ggadmin
    MININGDBLOGIN USERID ggadmin@cgg_cdbDSC, password ggadmin

    cdbADG_src es el ADG no principal.

cgg_cdbDSC es la base de datos de minería.

  1. Ahora, registre un Extract que utilice el parámetro NOUSERID:

    ADD EXTRACT exte, INTEGRATED TRANLOG, BEGIN NOW REGISTER EXTRACT exte DATABASE
  2. Después de registrar el Extract, puede utilizar este Extract para extraer datos e iniciar el Extract normalmente.