

# Uso de Oracle GoldenGate con Amazon RDS para Oracle‎‎‏‏‎
<a name="Appendix.OracleGoldenGate"></a>

Oracle GoldenGate recopila, replica y administra datos transaccionales entre bases de datos. Se trata de un paquete de software de replicación y de captura de datos de cambios (CDC, por sus siglas en inglés) basada en registros que se utiliza con bases de datos para sistemas de procesamiento de transacciones online (OLTP, por sus siglas en inglés). Oracle GoldenGate crea archivos de seguimiento que contienen los datos cambiados más recientes de la base de datos de origen. A continuación, envía estos archivos al servidor, donde un proceso convierte el archivo de seguimiento en SQL estándar para aplicarlo a la base de datos de destino.

Oracle GoldenGate con RDS para Oracle admite las siguientes características:
+ Reproducción de bases de datos activa a activa
+ Recuperación de desastres
+ Protección de los datos
+ Replicación dentro y fuera de la región
+ Migración y actualizaciones sin tiempo de inactividad
+ Replicación de datos entre una instancia de base de datos de RDS para Oracle y una base de datos que no es de Oracle
**nota**  
Para obtener una lista de baSes de datos compatibles, consulte [Oracle Fusion Middleware Supported System Configurations](https://www.oracle.com/middleware/technologies/fusion-certification.html) (Configuraciones de sistemas compatibles con Oracle Fusion Middleware) en la documentación de Oracle.

Puede usar Oracle GoldenGate con RDS para Oracle para actualizar a las principales versiones de base de datos de Oracle. Por ejemplo, puede usar Oracle GoldenGate para actualizar una base de datos Oracle Database 11g en las instalaciones a Oracle Database 19c en una instancia de base de datos de Amazon RDS.

**Topics**
+ [Versiones y opciones de licencia compatibles con Oracle GoldenGate](#Appendix.OracleGoldenGate.licensing)
+ [Requisitos y limitaciones de Oracle GoldenGate](#Appendix.OracleGoldenGate.requirements)
+ [Arquitectura de Oracle GoldenGate](Appendix.OracleGoldenGate.Overview.md)
+ [Configuración de Oracle GoldenGate](Appendix.OracleGoldenGate.setting-up.md)
+ [Uso de las utilidades EXTRACT y REPLICAT de Oracle GoldenGate](Appendix.OracleGoldenGate.ExtractReplicat.md)
+ [Supervisión de Oracle GoldenGate](Appendix.OracleGoldenGate.Monitoring.md)
+ [Solución de problemas de Oracle GoldenGate](Appendix.OracleGoldenGate.Troubleshooting.md)

## Versiones y opciones de licencia compatibles con Oracle GoldenGate
<a name="Appendix.OracleGoldenGate.licensing"></a>

Puede utilizar Standard Edition 2 (SE2) o Enterprise Edition (EE) de RDS para Oracle con Oracle GoldenGate versión 12c y posteriores. Puede utilizar las siguientes características de Oracle GoldenGate:
+ Se admite la captura remota (extracción) de Oracle GoldenGate.
+ Las instancias de base de datos de RDS para Oracle que utilizan la arquitectura de base de datos tradicional que no es de CDB admiten la captura (extracción). La captura de PDB remota de Oracle GoldenGate es compatible con las CDB que ejecuten Oracle Database 21c u Oracle Database 19c versión 19.0.0.0.ru-2024-04.rur-2024-04.r1 o superior.
+ La entrega remota (replicación) de Oracle GoldenGate es compatible con instancias de bases de datos de RDS para Oracle que utilizan arquitecturas de CDB o que no son de CDB. La entrega remota admite las funciones Replicación integrada, Replicación paralela, Replicación coordenada y Replicación clásica.
+ RDS para Oracle es compatible con las arquitecturas clásica y de microservicios de Oracle GoldenGate.
+ Se admite la replicación de valores de Oracle GoldenGate DDL y Sequence cuando se utiliza el modo de captura integrado.

El usuario es responsable de administrar las licencias de GoldenGate (BYOL) para usarlas con Amazon RDS en todas las Regiones de AWS. Para obtener más información, consulte [Opciones de licencias de RDS para Oracle](Oracle.Concepts.Licensing.md).

## Requisitos y limitaciones de Oracle GoldenGate
<a name="Appendix.OracleGoldenGate.requirements"></a>

Cuando trabaje con Oracle GoldenGate y RDS para Oracle, tenga en cuenta los siguientes requisitos y limitaciones: 
+ Es responsable de configurar y administrar Oracle GoldenGate para usarlo con RDS para Oracle. 
+ Es responsable de configurar una versión de Oracle GoldenGate que esté certificada con las bases de datos de origen y destino. Para obtener más información, consulte [Oracle Fusion Middleware Supported System Configurations](https://www.oracle.com/middleware/technologies/fusion-certification.html) (Configuraciones de sistemas compatibles con Oracle Fusion Middleware) en la documentación de Oracle.
+ Puede utilizar Oracle GoldenGate en muchos entornos diferentes de AWS para muchos casos de uso diferentes. Si tiene algún problema relacionado con el soporte de Oracle GoldenGate, póngase en contacto con los servicios de soporte de Oracle.
+ Puede utilizar Oracle GoldenGate en RDS para Oracle para instancias de base de datos de Oracle que utilicen el cifrado de datos transparente (TDE, por sus siglas en inglés) de Oracle. Para mantener la integridad de los datos replicados, configure el cifrado en el centro de Oracle GoldenGate con volúmenes cifrados de Amazon EBS o el cifrado de archivos de trazado. Configure también el cifrado de los datos enviados entre el centro de Oracle GoldenGate y las instancias de base de datos de origen y destino. Las instancias de base de datos de RDS for Oracle admiten el cifrado con [Capa de conexión segura de Oracle](Appendix.Oracle.Options.SSL.md) o [Oracle Native Network Encryption](Appendix.Oracle.Options.NetworkEncryption.md).

# Arquitectura de Oracle GoldenGate
<a name="Appendix.OracleGoldenGate.Overview"></a>

La arquitectura de Oracle GoldenGate para su uso con Amazon RDS consta de los siguientes módulos desacoplados:

Base de datos de origen  
La base de datos de origen puede ser una base de datos de Oracle en las instalaciones, una base de datos de Oracle en una instancia de Amazon EC2 o una base de datos de Oracle en una instancia de base de datos de Amazon RDS.

Hub de Oracle GoldenGate  
Un hub de Oracle GoldenGate mueve la información de las transacciones desde la base de datos de origen a la base de datos de destino. El hub puede ser cualquiera de los siguientes:  
+ Una instancia de Amazon EC2 con la base de datos de Oracle y con Oracle GoldenGate instalado
+ Una instalación de Oracle en las instalaciones
Puede tener más de un hub de Amazon EC2. Le recomendamos que use dos hubs si utiliza Oracle GoldenGate para la replicación entre regiones.

Bases de datos de destino  
La base de datos de destino puede residir en una instancia de base de datos de Amazon RDS, en una instancia Amazon EC2 o en una ubicación en las instalaciones.

Las siguientes secciones describen escenarios comunes de Oracle GoldenGate en Amazon RDS.

**Topics**
+ [Base de datos de origen en las instalaciones y hub de Oracle GoldenGate](#Appendix.OracleGoldenGate.on-prem-source-gg-hub)
+ [Base de datos de origen en las instalaciones y hub de Amazon EC2](#Appendix.OracleGoldenGate.on-prem-source-ec2-hub)
+ [Base de datos de origen de Amazon RDS y hub de Amazon EC2](#Appendix.OracleGoldenGate.rds-source-ec2-hub)
+ [Base de datos de origen de Amazon EC2 y hub de Amazon EC2](#Appendix.OracleGoldenGate.ec2-source-ec2-hub)
+ [Hubs de Amazon EC2 en diferentes regiones de AWS](#Appendix.OracleGoldenGate.cross-region-hubs)

## Base de datos de origen en las instalaciones y hub de Oracle GoldenGate
<a name="Appendix.OracleGoldenGate.on-prem-source-gg-hub"></a>

En este escenario, una base de datos de origen Oracle en las instalaciones y un hub de Oracle GoldenGate en las instalaciones proporcionan datos a una instancia de base de datos de Amazon RDS de destino. 

![\[Configuración de Oracle GoldenGate 0 con Amazon RDS\]](http://docs.aws.amazon.com/es_es/AmazonRDS/latest/UserGuide/images/oracle-gg0.png)


## Base de datos de origen en las instalaciones y hub de Amazon EC2
<a name="Appendix.OracleGoldenGate.on-prem-source-ec2-hub"></a>

En este escenario, una base de datos Oracle local actúa como base de datos de origen. Está conectada a un hub de instancias de Amazon EC2. Este hub proporciona datos a una instancia de base de datos RDS for Oracle de destino.

![\[Configuración de Oracle GoldenGate 1 con Amazon RDS\]](http://docs.aws.amazon.com/es_es/AmazonRDS/latest/UserGuide/images/oracle-gg1.png)


## Base de datos de origen de Amazon RDS y hub de Amazon EC2
<a name="Appendix.OracleGoldenGate.rds-source-ec2-hub"></a>

En este escenario, una instancia de base de datos RDS for Oracle actúa como base de datos de origen. Está conectada a un hub de instancia de Amazon EC2. Este hub proporciona datos a una instancia de base de datos RDS for Oracle de destino.

![\[Configuración de Oracle GoldenGate 2 con Amazon RDS\]](http://docs.aws.amazon.com/es_es/AmazonRDS/latest/UserGuide/images/oracle-gg2.png)


## Base de datos de origen de Amazon EC2 y hub de Amazon EC2
<a name="Appendix.OracleGoldenGate.ec2-source-ec2-hub"></a>

En este escenario, una base de datos Oracle en una instancia de Amazon EC2 actúa como base de datos de origen. Está conectada a un hub de instancia de Amazon EC2. Este hub proporciona datos a una instancia de base de datos RDS for Oracle de destino.

![\[Configuración de Oracle GoldenGate 3 con Amazon RDS\]](http://docs.aws.amazon.com/es_es/AmazonRDS/latest/UserGuide/images/oracle-gg3.png)


## Hubs de Amazon EC2 en diferentes regiones de AWS
<a name="Appendix.OracleGoldenGate.cross-region-hubs"></a>

En este escenario, una base de datos Oracle en una instancia de base de datos de Amazon RDS está conectada a un hub de instancias de Amazon EC2 en la misma región de AWS. El hub está conectado a un hub de instancias de Amazon EC2 en una región de AWS diferente. Este segundo hub proporciona datos a la instancia de base de datos de RDS for Oracle de destino en la misma región de AWS que el segundo hub de instancias de Amazon EC2.

![\[Configuración de Oracle GoldenGate 4 con Amazon RDS\]](http://docs.aws.amazon.com/es_es/AmazonRDS/latest/UserGuide/images/oracle-gg4.png)


**nota**  
Cualquier problema que afecte a la ejecución de Oracle GoldenGate en un entorno en las instalaciones también afecta a la ejecución de Oracle GoldenGate en AWS. Le recomendamos que supervise el hub de Oracle GoldenGate para asegurarse de que `EXTRACT` y `REPLICAT` se reanudan si se produce una conmutación por error. Dado que el hub de Oracle GoldenGate se ejecuta en una instancia de Amazon EC2, Amazon RDS no administra el hub de Oracle GoldenGate y no puede garantizar que se esté ejecutando.

# Configuración de Oracle GoldenGate
<a name="Appendix.OracleGoldenGate.setting-up"></a>

Para configurar Oracle GoldenGate mediante Amazon RDS, tiene que configurar el hub en la instancia de Amazon EC2 y, a continuación, configurar las bases de datos de origen y de destino. Las siguientes secciones muestran un ejemplo de cómo configurar Oracle GoldenGate para usarlo con Amazon RDS para Oracle.

**Topics**
+ [Configuración de un hub de Oracle GoldenGate en Amazon EC2](#Appendix.OracleGoldenGate.Hub)
+ [Configuración de una base de datos de origen para usarla con Oracle GoldenGate en Amazon RDS](#Appendix.OracleGoldenGate.Source)
+ [Configuración de una base de datos de destino para Oracle GoldenGate en Amazon RDS](#Appendix.OracleGoldenGate.Target)

## Configuración de un hub de Oracle GoldenGate en Amazon EC2
<a name="Appendix.OracleGoldenGate.Hub"></a>

Para crear un hub de Oracle GoldenGate en una instancia de Amazon EC2, cree en primer lugar una instancia de Amazon EC2 con una instalación completa de cliente de Oracle DBMS. La instancia de Amazon EC2 también debe tener instalado el software GoldenGate de Oracle. Las versiones del software de Oracle GoldenGate dependen de las versiones de la base de datos de origen y destino. Para obtener más información acerca de la instalación de Oracle GoldenGate, consulte la [documentación de Oracle GolgenGate](https://docs.oracle.com/en/middleware/goldengate/core/index.html).

La instancia de Amazon EC2 que actúa de hub de Oracle GoldenGate almacena y procesa la información de las transacciones de la base de datos de origen a los archivos de trazado. Para admitir este proceso, asegúrese de que cumpla los siguientes requisitos:
+ Haber asignado suficiente espacio de almacenamiento para los archivos de seguimiento.
+ La instancia de Amazon EC2 tiene suficiente potencia de procesamiento para administrar la cantidad de datos.
+ La instancia EC2 tiene suficiente memoria para almacenar la información de transacción antes de que se escriba en el archivo de seguimiento.

**Para configurar un hub de arquitectura clásica de Oracle GoldenGate en una instancia Amazon EC2**

1. Cree los subdirectorios en el directorio de Oracle GoldenGate.

   En el shell de la línea de comandos de Amazon EC2, lance `ggsci`, el intérprete del comando de Oracle GoldenGate. El comando `CREATE SUBDIRS` crea subdirectorios bajo el directorio `/gg` para los archivos de parámetros, informes y puntos de comprobación.

   ```
   prompt$ cd /gg
   prompt$ ./ggsci
   
   GGSCI> CREATE SUBDIRS
   ```

1. Configure el archivo `mgr.prm`.

   El siguiente ejemplo añade líneas al archivo `$GGHOME/dirprm/mgr.prm`.

   ```
   PORT 8199
   PurgeOldExtracts ./dirdat/*, UseCheckpoints, MINKEEPDAYS 5
   ```

1. Inicie el administrador.

   En el siguiente ejemplo se lanza `ggsci` y se ejecuta el comando `start mgr`.

   ```
   GGSCI> start mgr
   ```

El hub de Oracle GoldenGate ya se puede utilizar.

## Configuración de una base de datos de origen para usarla con Oracle GoldenGate en Amazon RDS
<a name="Appendix.OracleGoldenGate.Source"></a>

Complete las siguientes tareas para configurar una base de datos de origen con el fin de utilizarla con Oracle GoldenGate.

**Topics**
+ [Paso 1: activar el registro suplementario en la base de datos de origen](#Appendix.OracleGoldenGate.Source.Logging)
+ [Paso 2: establecer el parámetro de inicialización ENABLE\$1GOLDENGATE\$1REPLICATION en verdadero](#Appendix.OracleGoldenGate.Source.enable-gg-rep)
+ [Paso 3: establecer el período de retención del registro en la base de datos de origen](#Appendix.OracleGoldenGate.Source.Retention)
+ [Paso 4: crear una cuenta de usuario de Oracle GoldenGate en la base de datos de origen](#Appendix.OracleGoldenGate.Source.Account)
+ [Paso 5: conceder privilegios al usuario en la base de datos de origen](#Appendix.OracleGoldenGate.Source.Privileges)
+ [Paso 6: agregar un alias de TNS para la base de datos de origen](#Appendix.OracleGoldenGate.Source.TNS)

### Paso 1: activar el registro suplementario en la base de datos de origen
<a name="Appendix.OracleGoldenGate.Source.Logging"></a>

Para activar el registro suplementario mínimo en el nivel de la base de datos, ejecute el siguiente procedimiento PL/SQL: 

```
EXEC rdsadmin.rdsadmin_util.alter_supplemental_logging(p_action => 'ADD')
```

### Paso 2: establecer el parámetro de inicialización ENABLE\$1GOLDENGATE\$1REPLICATION en verdadero
<a name="Appendix.OracleGoldenGate.Source.enable-gg-rep"></a>

Al establecer el parámetro de inicialización `ENABLE_GOLDENGATE_REPLICATION` en `true`, permite que los servicios de bases de datos admitan la replicación lógica. Si la base de datos de origen está en una instancia de base de datos de Amazon RDS, asegúrese de asignar un grupo de parámetros a dicha instancia de base de datos con el parámetro de inicialización `ENABLE_GOLDENGATE_REPLICATION` establecido en `true`. Para obtener más información acerca del parámetro de inicialización `ENABLE_GOLDENGATE_REPLICATION`, consulte la [documentación de la base de datos de Oracle](https://docs.oracle.com/en/database/oracle/oracle-database/19/refrn/ENABLE_GOLDENGATE_REPLICATION.html).

### Paso 3: establecer el período de retención del registro en la base de datos de origen
<a name="Appendix.OracleGoldenGate.Source.Retention"></a>

Asegúrese de configurar la base de datos de origen para retener los registros redo archivados. Tenga en cuenta estas directrices:
+ Especifique la duración de la retención de registros en horas. El valor mínimo es una hora.
+ Establezca la duración de manera que supere cualquier posible periodo de inactividad de la instancia de base de datos de origen, cualquier posible periodo de comunicación y cualquier posible periodo de problemas de red para dicha instancia de origen. Dicha duración permite a Oracle GoldenGate recuperar registros de la instancia de origen según sea necesario.
+ Asegúrese de que dispone de suficiente almacenamiento en la instancia para los archivos.

Por ejemplo, establezca el período de retención para los registros REDO archivados en 24 horas.

```
EXEC rdsadmin.rdsadmin_util.set_configuration('archivelog retention hours',24)
```

Si no tiene la retención de registros habilitada, o bien si el valor de retención es demasiado pequeño, recibirá un mensaje de error similar al siguiente.

```
2022-03-06 06:17:27  ERROR   OGG-00446  error 2 (No such file or directory) 
opening redo log /rdsdbdata/db/GGTEST3_A/onlinelog/o1_mf_2_9k4bp1n6_.log for sequence 1306 
Not able to establish initial position for begin time 2022-03-06 06:16:55.
```

Dado que la instancia de base de datos conserva los registros redo archivados, asegúrese de tener suficiente espacio para los archivos. Para ver cuánto espacio ha utilizado en las últimas *num\$1hours* horas, utilice la siguiente consulta, sustituyendo *num\$1hours* por el número de horas.

```
SELECT SUM(BLOCKS * BLOCK_SIZE) BYTES FROM V$ARCHIVED_LOG 
   WHERE NEXT_TIME>=SYSDATE-num_hours/24 AND DEST_ID=1;
```

### Paso 4: crear una cuenta de usuario de Oracle GoldenGate en la base de datos de origen
<a name="Appendix.OracleGoldenGate.Source.Account"></a>

Oracle GoldenGate se ejecuta como usuario de base de datos y requiere los privilegios de base de datos apropiados para obtener acceso a los registros redo y redo archivados para la base de datos de origen. Para proporcionarlos, cree una cuenta de usuario en la base de datos de origen. Para obtener más información sobre los permisos para una cuenta de usuario de Oracle GoldenGate, consulte la [documentación de Oracle](https://docs.oracle.com/en/middleware/goldengate/core/19.1/oracle-db/establishing-oracle-goldengate-credentials.html#GUID-79122058-27B0-4FB6-B3DC-B7D1B67EB053).

Las siguientes instrucciones crean una cuenta de usuario llamada `oggadm1`. 

```
CREATE TABLESPACE administrator;
CREATE USER oggadm1  IDENTIFIED BY "password"
   DEFAULT TABLESPACE ADMINISTRATOR TEMPORARY TABLESPACE TEMP;
ALTER USER oggadm1 QUOTA UNLIMITED ON administrator;
```

**nota**  
Especifique una contraseña distinta de la que se muestra aquí como práctica recomendada de seguridad.

### Paso 5: conceder privilegios al usuario en la base de datos de origen
<a name="Appendix.OracleGoldenGate.Source.Privileges"></a>

En esta tarea, concederá los privilegios de cuenta necesarios a los usuarios de la base de datos de la base de datos de origen.

**Para conceder privilegios a la cuenta en la base de datos de origen**

1. Conceda los privilegios necesarios a la cuenta de usuario de Oracle GoldenGate mediante el comando SQL `grant` y el procedimiento `grant_sys_object` de `rdsadmin.rdsadmin_util`. Las siguientes instrucciones conceden privilegios a un usuario llamado `oggadm1`.

   ```
   GRANT CREATE SESSION, ALTER SESSION TO oggadm1;
   GRANT RESOURCE TO oggadm1;
   GRANT SELECT ANY DICTIONARY TO oggadm1;
   GRANT FLASHBACK ANY TABLE TO oggadm1;
   GRANT SELECT ANY TABLE TO oggadm1;
   GRANT SELECT_CATALOG_ROLE TO rds_master_user_name WITH ADMIN OPTION;
   EXEC rdsadmin.rdsadmin_util.grant_sys_object ('DBA_CLUSTERS', 'OGGADM1');
   GRANT EXECUTE ON DBMS_FLASHBACK TO oggadm1;
   GRANT SELECT ON SYS.V_$DATABASE TO oggadm1;
   GRANT ALTER ANY TABLE TO oggadm1;
   ```

1. Otorgue los privilegios necesarios para que una cuenta de usuario sea administrador de Oracle GoldenGate. Ejecute el siguiente programa PL/SQL.

   ```
   EXEC rdsadmin.rdsadmin_dbms_goldengate_auth.grant_admin_privilege (
       grantee                 => 'OGGADM1',
       privilege_type          => 'capture',
       grant_select_privileges => true, 
       do_grants               => TRUE);
   ```

   Para revocar privilegios, utilice el procedimiento `revoke_admin_privilege` en el mismo paquete.

### Paso 6: agregar un alias de TNS para la base de datos de origen
<a name="Appendix.OracleGoldenGate.Source.TNS"></a>

Agregue la siguiente entrada a `$ORACLE_HOME/network/admin/tnsnames.ora` en el directorio raíz de Oracle que utilizará el proceso `EXTRACT`. Para obtener más información sobre el archivo `tnsnames.ora`, consulte la [documentación de Oracle](https://docs.oracle.com/en/database/oracle/oracle-database/19/netrf/local-naming-parameters-in-tns-ora-file.html#GUID-7F967CE5-5498-427C-9390-4A5C6767ADAA).

```
OGGSOURCE=
   (DESCRIPTION= 
        (ENABLE=BROKEN)
        (ADDRESS_LIST= 
            (ADDRESS=(PROTOCOL=TCP)(HOST=goldengate-source.abcdef12345.us-west-2.rds.amazonaws.com)(PORT=8200)))
        (CONNECT_DATA=(SERVICE_NAME=ORCL))
    )
```

## Configuración de una base de datos de destino para Oracle GoldenGate en Amazon RDS
<a name="Appendix.OracleGoldenGate.Target"></a>

En esta tarea, debe configurar una instancia de base de datos de destino para usarla con Oracle GoldenGate.

**Topics**
+ [Paso 2: establecer el parámetro de inicialización ENABLE\$1GOLDENGATE\$1REPLICATION en verdadero](#Appendix.OracleGoldenGate.Target.enable-gg-rep)
+ [Paso 2: crear una cuenta de usuario de Oracle GoldenGate en la base de datos de destino](#Appendix.OracleGoldenGate.Target.User)
+ [Paso 3: otorgar privilegios de cuenta en la base de datos de destino](#Appendix.OracleGoldenGate.Target.Privileges)
+ [Paso 4: agregar un alias de TNS para la base de datos de destino](#Appendix.OracleGoldenGate.Target.TNS)

### Paso 2: establecer el parámetro de inicialización ENABLE\$1GOLDENGATE\$1REPLICATION en verdadero
<a name="Appendix.OracleGoldenGate.Target.enable-gg-rep"></a>

Al establecer el parámetro de inicialización `ENABLE_GOLDENGATE_REPLICATION` en `true`, permite que los servicios de bases de datos admitan la replicación lógica. Si la base de datos de origen está en una instancia de base de datos de Amazon RDS, asegúrese de asignar un grupo de parámetros a dicha instancia de base de datos con el parámetro de inicialización `ENABLE_GOLDENGATE_REPLICATION` establecido en `true`. Para obtener más información acerca del parámetro de inicialización `ENABLE_GOLDENGATE_REPLICATION`, consulte la [documentación de la base de datos de Oracle](https://docs.oracle.com/en/database/oracle/oracle-database/19/refrn/ENABLE_GOLDENGATE_REPLICATION.html).

### Paso 2: crear una cuenta de usuario de Oracle GoldenGate en la base de datos de destino
<a name="Appendix.OracleGoldenGate.Target.User"></a>

Oracle GoldenGate se ejecuta como usuario de base de datos y requiere los privilegios de base de datos apropiados. Para asegurarse de que los tiene, cree una cuenta de usuario en la base de datos de destino.

La siguiente instrucción crea una cuenta de usuario llamada `oggadm1`.

```
CREATE TABLESPSACE administrator;
CREATE USER oggadm1  IDENTIFIED BY "password" 
   DEFAULT TABLESPACE administrator 
   TEMPORARY TABLESPACE temp;
ALTER USER oggadm1 QUOTA UNLIMITED ON administrator;
```

**nota**  
Especifique una contraseña distinta de la que se muestra aquí como práctica recomendada de seguridad.

### Paso 3: otorgar privilegios de cuenta en la base de datos de destino
<a name="Appendix.OracleGoldenGate.Target.Privileges"></a>

En esta tarea, concederá los privilegios de cuenta necesarios a los usuarios de la base de datos en la base de datos de destino.

**Para otorgar privilegios de cuenta en la base de datos de destino**

1. Otorgue los privilegios necesarios a la cuenta de usuario de Oracle GoldenGate en la base de datos de destino. En el siguiente ejemplo, otorgará privilegios a `oggadm1`.

   ```
   GRANT CREATE SESSION        TO oggadm1;
   GRANT ALTER SESSION         TO oggadm1;
   GRANT CREATE CLUSTER        TO oggadm1;
   GRANT CREATE INDEXTYPE      TO oggadm1;
   GRANT CREATE OPERATOR       TO oggadm1;
   GRANT CREATE PROCEDURE      TO oggadm1;
   GRANT CREATE SEQUENCE       TO oggadm1;
   GRANT CREATE TABLE          TO oggadm1;
   GRANT CREATE TRIGGER        TO oggadm1;
   GRANT CREATE TYPE           TO oggadm1;
   GRANT SELECT ANY DICTIONARY TO oggadm1;
   GRANT CREATE ANY TABLE      TO oggadm1;
   GRANT ALTER ANY TABLE       TO oggadm1;
   GRANT LOCK ANY TABLE        TO oggadm1;
   GRANT SELECT ANY TABLE      TO oggadm1;
   GRANT INSERT ANY TABLE      TO oggadm1;
   GRANT UPDATE ANY TABLE      TO oggadm1;
   GRANT DELETE ANY TABLE      TO oggadm1;
   ```

1. Otorgue los privilegios necesarios para que una cuenta de usuario sea administrador de Oracle GoldenGate. Ejecute el siguiente programa PL/SQL.

   ```
   EXEC rdsadmin.rdsadmin_dbms_goldengate_auth.grant_admin_privilege (
       grantee                 => 'OGGADM1',
       privilege_type          => 'apply',
       grant_select_privileges => true, 
       do_grants               => TRUE);
   ```

   Para revocar privilegios, utilice el procedimiento `revoke_admin_privilege` en el mismo paquete.

### Paso 4: agregar un alias de TNS para la base de datos de destino
<a name="Appendix.OracleGoldenGate.Target.TNS"></a>

Agregue la siguiente entrada a `$ORACLE_HOME/network/admin/tnsnames.ora` en el directorio raíz de Oracle que utilizará el proceso `REPLICAT`. Para las bases de datos Oracle Multitenant, asegúrese de que el alias TNS apunte hacia el nombre del servicio de la PDB. Para obtener más información sobre el archivo `tnsnames.ora`, consulte la [documentación de Oracle](https://docs.oracle.com/en/database/oracle/oracle-database/19/netrf/local-naming-parameters-in-tns-ora-file.html#GUID-7F967CE5-5498-427C-9390-4A5C6767ADAA).

```
OGGTARGET=
    (DESCRIPTION= 
        (ENABLE=BROKEN)
        (ADDRESS_LIST= 
            (ADDRESS=(PROTOCOL=TCP)(HOST=goldengate-target.abcdef12345.us-west-2.rds.amazonaws.com)(PORT=8200)))
        (CONNECT_DATA=(SERVICE_NAME=ORCL))
    )
```

# Uso de las utilidades EXTRACT y REPLICAT de Oracle GoldenGate
<a name="Appendix.OracleGoldenGate.ExtractReplicat"></a>

Las utilidades de Oracle GoldenGate `EXTRACT` y `REPLICAT` trabajan juntas para mantener las bases de datos de origen y de destino sincronizadas mediante la replicación incremental de transacciones utilizando archivos de seguimiento. Todos los cambios que se producen en la base de datos de origen son detectados automáticamente por `EXTRACT` y, a continuación, se formatean y transfieren a los archivos de seguimiento en el hub de instancias de EC2 o en Oracle GoldenGate en las instalaciones. Una vez finalizada la carga inicial, se leen los datos de estos archivos y se replican en la base de datos de destino mediante la utilidad `REPLICAT`.

## Ejecución de la utilidad EXTRACT de Oracle GoldenGate
<a name="Appendix.OracleGoldenGate.Extract"></a>

La utilidad `EXTRACT` recupera, convierte y devuelve datos de la base de datos de origen a los archivos de seguimiento. El procedimiento básico es el siguiente:

1. `EXTRACT` pone en cola detalles de la transacción en la memoria o en el almacenamiento del disco temporal.

1. La base de datos de origen confirma la transacción.

1. `EXTRACT` escribe los detalles de la transacción en un archivo de seguimiento.

1. El archivo de seguimiento dirige estos detalles hacia el hub de instancias de EC2 o en las instalaciones de Oracle GoldenGate y, a continuación, hacia la base de datos de destino.

Los siguientes pasos inician la utilidad `EXTRACT`, capturan los datos de `EXAMPLE.TABLE` en la base de datos `OGGSOURCE` de origen y crean los archivos de seguimiento. 

**Para ejecutar la utilidad EXTRACT**

1. Configure el archivo de parámetros `EXTRACT` en el hub de Oracle GoldenGate (instancia en las instalaciones o de Amazon EC2). El siguiente listado muestra un archivo de parámetros `EXTRACT` de ejemplo denominado `$GGHOME/dirprm/eabc.prm`.

   ```
   EXTRACT EABC
    
   USERID oggadm1@OGGSOURCE, PASSWORD "my-password"
   EXTTRAIL /path/to/goldengate/dirdat/ab 
    
   IGNOREREPLICATES
   GETAPPLOPS
   TRANLOGOPTIONS EXCLUDEUSER OGGADM1
   	 
   TABLE EXAMPLE.TABLE;
   ```

1. En el hub de Oracle GoldenGate, inicie sesión en la base de datos de origen y lance la interfaz de la línea de comandos de Oracle GoldenGate `ggsci`. En el siguiente ejemplo, se muestra el formato para iniciar sesión.

   ```
   dblogin oggadm1@OGGSOURCE
   ```

1. Agregue datos transaccionales para activar el registro complementario para la tabla de base de datos.

   ```
   add trandata EXAMPLE.TABLE
   ```

1. Con la línea de comandos `ggsci`, habilite la utilidad `EXTRACT` mediante los siguientes comandos.

   ```
   add extract EABC tranlog, INTEGRATED tranlog, begin now
   add exttrail /path/to/goldengate/dirdat/ab 
      extract EABC, 
      MEGABYTES 100
   ```

1. Registre la utilidad `EXTRACT` con la base de datos de manera que no se eliminen los archivos de registro. Esta tarea le permite recuperar, si fuera necesario, transacciones antiguas sin confirmar. Para registrar la utilidad `EXTRACT` en la base de datos, utilice el siguiente comando.

   ```
   register EXTRACT EABC, DATABASE
   ```

1. Inicie la utilidad `EXTRACT` con el siguiente comando.

   ```
   start EABC
   ```

## Ejecución de la utilidad REPLICAT de Oracle GoldenGate
<a name="Appendix.OracleGoldenGate.Replicat"></a>

La utilidad `REPLICAT` "inserta" información sobre transacciones de los archivos de seguimiento en la base de datos de destino.

Los siguientes pasos habilitan e inician la utilidad `REPLICAT` para que pueda replicar los datos capturados en la tabla `EXAMPLE.TABLE` de la base de datos de destino `OGGTARGET`.

**Para ejecutar la utilidad REPLICATE**

1. Configure el archivo de parámetros `REPLICAT` en el hub de Oracle GoldenGate (instancia local o de EC2). El siguiente listado muestra un archivo de parámetros `REPLICAT` de ejemplo denominado `$GGHOME/dirprm/rabc.prm`.

   ```
   REPLICAT RABC
    
   USERID oggadm1@OGGTARGET, password "my-password"
    
   ASSUMETARGETDEFS
   MAP EXAMPLE.TABLE, TARGET EXAMPLE.TABLE;
   ```
**nota**  
Especifique una contraseña distinta de la que se muestra aquí como práctica recomendada de seguridad.

1. Inicie sesión en la base de datos de destino y lance la interfaz de la línea de comandos de Oracle GoldenGate (`ggsci`). En el siguiente ejemplo, se muestra el formato para iniciar sesión.

   ```
   dblogin userid oggadm1@OGGTARGET
   ```

1. Con la línea de comandos `ggsci`, agregue una tabla de punto de comprobación. El usuario indicado debe ser la cuenta de usuario de Oracle GoldenGate, no el propietario del esquema de la tabla de destino. En el siguiente ejemplo, se crea una tabla de punto de comprobación llamada `gg_checkpoint`.

   ```
   add checkpointtable oggadm1.oggchkpt
   ```

1. Para habilitar la utilidad `REPLICAT`, utilice el siguiente comando.

   ```
   add replicat RABC EXTTRAIL /path/to/goldengate/dirdat/ab CHECKPOINTTABLE oggadm1.oggchkpt 
   ```

1. Inicie la utilidad `REPLICAT` con el siguiente comando.

   ```
   start RABC
   ```

# Supervisión de Oracle GoldenGate
<a name="Appendix.OracleGoldenGate.Monitoring"></a>

Cuando utilice Oracle GoldenGate para la replicación, asegúrese de que el proceso de Oracle GoldenGate esté activo y en ejecución y que las bases de datos de origen y destino estén sincronizadas. Puede utilizar las siguientes herramientas de supervisión:
+ [Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatch.html) es un servicio de supervisión que se utiliza en este patrón para supervisar los registros de errores de GoldenGate.
+ [Amazon SNS](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/US_SetupSNS.html) es un servicio de notificación de mensajes que se utiliza en este patrón para enviar notificaciones por correo electrónico.

Para obtener instrucciones detalladas, consulte [Monitor Oracle GoldenGate logs by using Amazon CloudWatch](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/monitor-oracle-goldengate-logs-by-using-amazon-cloudwatch.html) (Supervisión de los registros de Oracle GoldenGate mediante Amazon CloudWatch).

# Solución de problemas de Oracle GoldenGate
<a name="Appendix.OracleGoldenGate.Troubleshooting"></a>

Esta sección explica los problemas más habituales al usar Oracle GoldenGate con Amazon RDS para Oracle.

**Topics**
+ [Error al abrir un registro redo en línea](#Appendix.OracleGoldenGate.Troubleshooting.Logs)
+ [Oracle GoldenGate parece estar configurado correctamente, pero la replicación no está funcionando](#Appendix.OracleGoldenGate.Troubleshooting.Replication)
+ [La REPLICAT integrada es lenta debido a la consulta en SYS."\$1DBA\$1APPLY\$1CDR\$1INFO"](#Appendix.OracleGoldenGate.IR)

## Error al abrir un registro redo en línea
<a name="Appendix.OracleGoldenGate.Troubleshooting.Logs"></a>

Asegúrese de configurar las bases de datos para que retengan los registros redo archivados. Tenga en cuenta estas directrices:
+ Especifique la duración de la retención de registros en horas. El valor mínimo es una hora.
+ Establezca la duración de manera que supere cualquier posible periodo de inactividad de la instancia de base de datos de origen, cualquier posible periodo de comunicación y cualquier posible periodo de problemas de red para la instancia de base de datos de origen. Dicha duración permite a Oracle GoldenGate recuperar registros de la instancia de base de datos de origen según sea necesario.
+ Asegúrese de que dispone de suficiente almacenamiento en la instancia para los archivos.

Si no tiene la retención de registros habilitada, o bien si el valor de retención es demasiado pequeño, recibirá un mensaje de error similar al siguiente.

```
2022-03-06 06:17:27  ERROR   OGG-00446  error 2 (No such file or directory) 
opening redo log /rdsdbdata/db/GGTEST3_A/onlinelog/o1_mf_2_9k4bp1n6_.log for sequence 1306 
Not able to establish initial position for begin time 2022-03-06 06:16:55.
```

## Oracle GoldenGate parece estar configurado correctamente, pero la replicación no está funcionando
<a name="Appendix.OracleGoldenGate.Troubleshooting.Replication"></a>

Para tablas preexistentes, debe especificar el SCN desde el que trabaja Oracle GoldenGate.

**Para solucionar este problema**

1. Inicie sesión en la base de datos de origen y lance la interfaz de la línea de comandos de Oracle GoldenGate (`ggsci`). En el siguiente ejemplo, se muestra el formato para iniciar sesión.

   ```
   dblogin userid oggadm1@OGGSOURCE
   ```

1. Con la línea de comandos `ggsci`, configure el SCN de inicio para el proceso `EXTRACT`. En el siguiente ejemplo, se establece el SCN en 223274 para `EXTRACT`.

   ```
   ALTER EXTRACT EABC SCN 223274
   start EABC
   ```

1. Inicie sesión en la base de datos de destino. En el siguiente ejemplo, se muestra el formato para iniciar sesión.

   ```
   dblogin userid oggadm1@OGGTARGET
   ```

1. Con la línea de comandos `ggsci`, configure el SCN de inicio para el proceso `REPLICAT`. En el siguiente ejemplo, se establece el SCN en 223274 para `REPLICAT`.

   ```
   start RABC atcsn 223274
   ```

## La REPLICAT integrada es lenta debido a la consulta en SYS."\$1DBA\$1APPLY\$1CDR\$1INFO"
<a name="Appendix.OracleGoldenGate.IR"></a>

Con la detección y resolución de conflictos (CDR) de Oracle GoldenGate se ofrecen rutinas básicas de resolución de conflictos. Por ejemplo, con la CDR se puede resolver un conflicto distintivo de una instrucción `INSERT`.

Cuando la CDR resuelve una colisión, puede insertar registros en la tabla de excepciones `_DBA_APPLY_CDR_INFO` temporalmente. La `REPLICAT` integrada elimina estos registros después. En un escenario raro, la `REPLICAT` integrada puede procesar un gran número de colisiones, pero una `REPLICAT` integrada nueva no la reemplaza. En lugar de eliminarse, las filas que ya están en `_DBA_APPLY_CDR_INFO` quedan huérfanas. Los procesos `REPLICAT` integrados nuevos se ralentizan, pues están consultando filas huérfanas en `_DBA_APPLY_CDR_INFO`.

Para eliminar todas las filas de `_DBA_APPLY_CDR_INFO`, utilice el procedimiento `rdsadmin.rdsadmin_util.truncate_apply$_cdr_info` de Amazon RDS. Este procedimiento se publica como parte de la versión y actualización de parche de octubre de 2020. El procedimiento está disponible en las siguientes versiones de base de datos:
+ [ Versión 21.0.0.0.ru-2022-01.rur-2022-01.r1](https://docs.aws.amazon.com/AmazonRDS/latest/OracleReleaseNotes/oracle-version-21-0.html#oracle-version-RU-RUR.21.0.0.0.ru-2022-01.rur-2022-01.r1) y posteriores
+ [ Versión 19.0.0.0.ru-2020-10.rur-2020-10.r1](https://docs.aws.amazon.com/AmazonRDS/latest/OracleReleaseNotes/oracle-version-19-0.html#oracle-version-RU-RUR.19.0.0.0.ru-2020-10.rur-2020-10.r1) y posteriores

En el ejemplo siguiente se trunca la tabla `_DBA_APPLY_CDR_INFO`.

```
SET SERVEROUTPUT ON SIZE 2000
EXEC rdsadmin.rdsadmin_util.truncate_apply$_cdr_info;
```