Preparación de Valores de Conexión, Sistema y Parámetros de Base de Datos

Obtenga información sobre la configuración de la conexión de base de datos, el sistema y los valores de parámetros para Oracle GoldenGate for Oracle.

Activación del modo de replicación y archivo GoldenGate

Paso 1: Activar la replicación GoldenGate

Los servicios de base de datos necesarios para soportar Oracle GoldenGate Extract y Replicat deben estar activados explícitamente para Oracle AI Database.

Para activar la replicación de Oracle GoldenGate, defina el siguiente parámetro de inicialización de base de datos. Todas las instancias de Oracle RAC deben tener este valor definido en TRUE si utilizan Oracle GoldenGate en cualquiera de los nodos.

ALTER SYSTEM SET enable_goldengate_replication = true SCOPTE=both;

Para obtener más información sobre este parámetro, consulte Parámetros de inicialización.

Pasos 2: Activación del modo de archivado

Las bases de datos Oracle deben estar en modo ARCHIVELOG para que Extract pueda procesar los archivos log. Para activar el modo ARCHIVELOG, siga los pasos proporcionados en Cambio del Modo de Archivado de la Base de Datos.

Definición de Consulta de Flashback

Para obtener más información sobre los datos que recupera Oracle GoldenGate, consulte Detalles del soporte para tipos de dato y objetos de Oracle.

Por defecto, Oracle GoldenGate utiliza la consulta de flashback para recuperar los valores de los tablespaces de deshacer (rollback). De esta forma, Oracle GoldenGate puede reconstruir una imagen de fila de lectura consistente a partir de una hora específica o un SCN para que coincida con el registro de redo.

Para obtener los mejores resultados de recuperación, configure la base de datos origen de la siguiente forma:

  1. Defina una cantidad suficiente de retención de redo definiendo los parámetros de inicialización de Oracle UNDO_MANAGEMENT y UNDO_RETENTION como se indica a continuación (en segundos).

    UNDO_MANAGEMENT=AUTO
    
    UNDO_RETENTION=86400
    
    UNDO_RETENTION can be adjusted upward in high-volume environments.
  2. Calcule el espacio necesario en el tablespace de deshacer mediante la siguiente fórmula.

    *undo_space* = UNDO_RETENTION * *UPS* + *overhead*

    Dónde:

    • undo_space es el número de bloques de deshacer.

    • UNDO_RETENTION es el valor del parámetro UNDO_RETENTION (en segundos).

    • UPS es el número de bloques de deshacer para cada segundo.

    • La sobrecarga es la sobrecarga mínima para los metadatos (tablas de transacciones, etc.).

    Utilice la vista del sistema V$UNDOSTAT para estimar UPS y gastos generales.

  3. Para las tablas que contienen LOBs, realice una de las siguientes acciones:

    • Defina la cláusula de almacenamiento LOB en RETENTION. Este es el valor por defecto para las tablas que se crean cuando UNDO_MANAGEMENT se define en AUTO.

    • Si utiliza PCTVERSION en lugar de RETENTION, defina PCTVERSION en un valor inicial de 25. Puede ajustarla según las estadísticas de recuperación que se informan con el comando STATS EXTRACT. Si el valor del campo STAT_OPER_ROWFETCH CURRENTBYROWID o STAT_OPER_ROWFETCH_CURRENTBYKEY de estas estadísticas es alto, aumente PCTVERSION en incrementos de 10 hasta que las estadísticas muestren valores bajos.

Oracle GoldenGate proporciona los siguientes parámetros para gestionar la recuperación.

Parámetro o comando Descripción
Comando STATS EXTRACT con la opción REPORTFETCH Muestra las estadísticas de recuperación de extracción bajo demanda.
Parámetro STATOPTIONS con la opción REPORTFETCH Define el comando STATS EXTRACT para que siempre muestre las estadísticas de recuperación.
Parámetro MAXFETCHSTATEMENTS Controla el número de cursores abiertos para consultas preparadas que Extract mantiene en la base de datos de origen y también para operaciones SQLEXEC.
Parámetro MAXFETCHSTATEMENTS Controla el comportamiento de recuperación por defecto de Extract: si Extract realiza una consulta de flashback o recupera la imagen actual de la tabla.
Parámetro FETCHOPTIONS con la opción USELATESTVERSION o NOUSELATESTVERSION Maneja el fallo de una consulta de flashback de extracción, por ejemplo, si la retención de deshacer ha caducado o la estructura de una tabla ha cambiado. Extract puede recuperar la imagen actual de la tabla o ignorar el fallo.
Parámetro REPFETCHEDCOLOPTIONS Controla la respuesta de Replicat cuando procesa registros de pista que incluyen datos recuperados o condiciones que faltan columnas.

Manejo de Otras Propiedades de Base de Datos

Hay algunas propiedades de base de datos que pueden afectar a Oracle GoldenGate y los parámetros utilizados para resolver o solucionar determinadas condiciones.

En la siguiente tabla, se muestran las propiedades de la base de datos y la preocupación/resolución asociada.

Propiedad de la Base de Datos Preocupación/resolución
Tabla con partición a intervalos Para soportar tablas con partición a intervalos, asegúrese de que el parámetro WILDCARDRESOLVE permanece en el valor por defecto DYNAMIC.
Tabla con columnas virtuales

Las columnas virtuales no se registran y Oracle no permite DML en las columnas virtuales. Sin embargo, puede capturar estos datos y asignarlos a una columna de destino que no sea una columna virtual haciendo lo siguiente:

Incluya la tabla en la sentencia Extract TABLE y utilice la opción FETCHCOLS de TABLE para recuperar el valor de la columna virtual de la base de datos.

En la sentencia Replicat MAP, asigne la columna virtual de origen a la columna de destino no virtual.

Tabla con vista inherentemente actualizable Para replicar en una vista que se puede actualizar de forma inherente, defina una clave en las columnas únicas de la vista que se puede actualizar mediante una cláusula KEYCOLS en la misma sentencia MAP en la que se asignan las tablas de origen y destino asociadas.
Redo logs o archivos en diferentes ubicaciones El parámetro TRANLOGOPTIONS contiene opciones para manejar entornos en los que los redo logs o archivos se almacenan en una ubicación diferente a la del valor por defecto de la base de datos o en una plataforma diferente a la que se está ejecutando Extract.
Operaciones TRUNCATE

Para replicar las operaciones TRUNCATE, seleccione una de las dos opciones:

  • La compatibilidad con TRUNCATE independiente mediante el parámetro GETTRUNCATES replica TRUNCATE TABLE, pero no hay otras opciones TRUNCATE. Se utiliza sólo si no se utiliza el soporte DDL de Oracle GoldenGate.

  • El soporte DDL completo replica TRUNCATE TABLE, ALTER TABLE TRUNCATE PARTITION y otro DDL.

Secuencias

Para replicar DDL para secuencias (CREATE, ALTER, DROP, RENAME), utilice el soporte de DDL de Oracle GoldenGate.

Para replicar solo los valores de secuencia, utilice el parámetro SEQUENCE en el archivo de parámetros Extract. Esto no requiere el entorno de soporte de DDL de Oracle GoldenGate.

Configuración de una base de datos de contenedores multi-inquilino

Oracle GoldenGate con Oracle AI Database permite la implantación de bases de datos conectables (PDB) para el origen y el destino. Extract está registrado para una PDB específica, que se denomina extracción por PDB.

Nota: No se recomienda el acceso de nivel raíz con el usuario c##ggadmin, excepto en el caso de la configuración de Extract descendente. Utilice Extract en el nivel por PDB en lugar de Extract en el nivel raíz.

En el siguiente diagrama se muestra la configuración de diferentes enfoques en una configuración de base de datos de contenedor multi-inquilino:

Descripción de pdb_extract_feedbk.png a continuación

Agregando Extract directamente desde las capturas de PDB a partir de PDB aisladas, gestionando la propiedad y la responsabilidad a nivel de PDB.

Mediante una extracción por PDB, puede conectarse como usuario de PDB local (por ejemplo, ggadmin) y, a continuación, registrar esta extracción con la base de datos. Como ya está conectado como usuario de PDB, no se necesita una cláusula container adicional. Del mismo modo, tampoco se necesita la convención de nomenclatura SOURCECATALOG o de tres partes.

Para configurar un Extract, consulte Adición de un Extract.

Consideraciones para la configuración de la base de datos de contenedores multi-inquilino

Tenga en cuenta las siguientes directrices al configurar bases de datos de contenedor multi-inquilino para la replicación de datos mediante Oracle GoldenGate:

Consulte Agregar conexiones de base de datos para agregar un usuario de base de datos de contenedor multi-inquilino en las credenciales de Oracle GoldenGate. Consulte Grant User Privileges for Oracle Database 21c and Lower o Grant User Privileges for Oracle AI Database 26ai and Higher en función de la instalación de Oracle AI Database que deba configurar.

Secuencia de vaciado para base de datos de contenedores multiinquilino

Solo puede utilizar el comando FLUSH SEQUENCE en Oracle GoldenGate si el script sequence.sql aplica los procedimientos de base de datos al esquema de administrador GoldenGate de la base de datos.

Utilice el comando FLUSH SEQUENCE justo después de iniciar Extract por primera vez durante la sincronización inicial o una nueva sincronización. Con este comando se actualiza una secuencia de Oracle para que los registros del redo inicial estén disponibles en el momento que Extract comience a capturar datos del proceso. Normalmente, redo no se genera hasta que se agota la caché actual. El vaciado ofrece a Replicat un punto de partida inicial con el que sincronizar el valor de secuencia correcto en el sistema de destino. A partir de entonces, Extract puede usar el redo asociado a la reserva de caché habitual de valores de secuencia. 1. FLUSH SEQUENCE utiliza los siguientes procedimientos de Oracle:

 | Database | Procedure | User and Privileges |
 | --- | --- | --- |
 | Source | `updateSequence` | Grants `EXECUTE` to the owner of the Oracle GoldenGate DDL objects, or other selected user if not using DDL support. |
 | Target | `replicateSequence` | Grants `EXECUTE` to the Oracle GoldenGate Replicat user. |

 {: summary="This table lists the Oracle procedures used by FLUSH SEQUENCE. It gives the database, procedure, and user and privileges." }

The `sequence.sql` script installs these procedures. Normally, this script is run as part of the Oracle GoldenGate installation process, but make certain that was done before using `FLUSH SEQUENCE`. If `sequence.sql` was not run, the flush fails and an error message similar to the following is generated:

<pre class="copy"><code>Cannot flush sequence {0}. Refer to the Oracle GoldenGate for Oracle documentation for instructions on how to set up and run the sequence.sql script. Error {1}.</code></pre>
  1. Antes de utilizar FLUSH SEQUENCE, conéctese a la base de datos mediante el comando DBLOGIN.

FLUSH SEQUENCE se debe emitir en el nivel de PDB para crear un usuario de Oracle GoldenGate en cada PDB para la que se necesita la replicación de secuencia. Utilice DBLOGIN para conectarse a esa PDB y ejecute el comando FLUSH SEQUENCE.

Se recomienda utilizar el mismo esquema en cada PDB para que funcione con el archivo de parámetros GGSCHEMA GLOBALS.

En el siguiente ejemplo, la configuración del entorno es para Oracle 21c a la replicación 21c de Oracle, con Extract integrado y Replicat paralelo mediante Oracle GoldenGate 21c (21.3.0).

En la siguiente tabla se muestran los nombres de la CDB de origen y destino, las PDB y sus correspondientes credenciales de usuario para conectarse a la base de datos.

CDB de origen CDB de Destino
NORTH SOUTH
Nombre de PDB: DBEAST Nombre de PDB: DBWEST

Usuario común: c##ggadmin

Usuario de PDB para secuencias: ggate

Usuario de PDB: ggadmin
sqlplus system/manager
ALTER SESSION SESSION SET CONTAINER=CERTMISSN;
CREATE USER ggate IDENTIFIED BY *password* DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP QUOTA UNLIMITED ON USERS CONTAINER=CURRENT;

Ejecutar @sequence.sql

sqlplus system/manager
ALTER SESSION SET CONTAINER=DBEAST;
@sequence.sql

Cuando se le solicite, introduzca lo siguiente:

GGADMIN

Ejecute el comando FLUSH SEQUENCE:

DBLOGIN USERIDALIAS ggeast DOMAIN OracleGoldenGate
FLUSH SEQUENCE DBEAST.HR.*

Configuración de Oracle GoldenGate de destino:

sqlplus system/manager
ALTER SESSION SET CONTAINER =PDBWEST;
@sequence.sql

Cuando se le solicite, introduzca el nombre de usuario de PDB ggadmin.

Esto también se aplica al script @sequence.sql, que también debe ejecutar en cada PDB desde la que se va a capturar.