

# Trabajar con réplicas de Oracle para RDS Custom para Oracle
<a name="custom-rr"></a>

Puede crear réplicas de Oracle para instancias de base de datos de RDS Custom para Oracle que ejecuten Oracle Enterprise Edition. Se admiten bases de datos de contenedores (CDB) y no CDB. Standard Edition 2 no es compatible con Oracle Data Guard. 

La creación de una réplica de RDS Custom para Oracle es similar a la creación de una réplica de RDS para Oracle, pero con importantes diferencias. Para obtener información general acerca de la creación y administración de réplicas de Oracle, consulte [Trabajo con réplicas de lectura de instancias de base de datos](USER_ReadRepl.md) y [Trabajo con las réplicas de lectura para Amazon RDS para Oracle](oracle-read-replicas.md).

**Topics**
+ [Descripción general de la replicación de RDS Custom para Oracle](#custom-rr.overview)
+ [Directrices y limitaciones de la replicación de RDS Custom para Oracle](custom-rr.reqs-limitations.md)
+ [Promoción de una réplica de RDS Custom para Oracle a una instancia de base de datos independiente](custom-rr.promoting.md)
+ [Configuración de un túnel de VPN entre RDS Custom para instancias principales y réplicas de Oracle](cfo-standby-vpn-tunnel.md)

## Descripción general de la replicación de RDS Custom para Oracle
<a name="custom-rr.overview"></a>

La arquitectura de la replicación de RDS Custom para Oracle es análoga a la de RDS para Oracle. Una instancia de base de datos principal se replica de forma asíncrona en una o más réplicas de Oracle.

![\[RDS Custom para Oracle admite réplicas de Oracle\]](http://docs.aws.amazon.com/es_es/AmazonRDS/latest/UserGuide/images/read-replica-custom-oracle.png)


### Número máximo de réplicas
<a name="custom-rr.overview.number"></a>

Al igual que con RDS para Oracle, puede crear hasta cinco réplicas de Oracle administradas de la instancia de base de datos primaria de RDS Custom para Oracle. También puede crear sus propias réplicas de Oracle configuradas manualmente (externas). Las réplicas externas no se tienen en cuenta en el límite de instancias de bases de datos. También se encuentran fuera del perímetro de soporte de RDS Custom. Para obtener más información acerca del perímetro de soporte, consulte [Perímetro de soporte de RDS Custom](custom-concept.md#custom-troubleshooting.support-perimeter).

### Convención de nomenclatura de las réplicas
<a name="custom-rr.overview.names"></a>

Los nombres de réplica de Oracle se basan en el nombre único de la base de datos El formato es `DB_UNIQUE_NAME_X`, y las letras se adjuntan de forma secuencial. Por ejemplo, si el nombre único de la base de datos es `ORCL`, las dos primeras réplicas se denominan`ORCL_A` y `ORCL_B`. Las seis primeras letras, de la A a la F, están reservadas para RDS Custom. RDS Custom copia los parámetros de la base de datos de la instancia de base de datos principal a las réplicas. Para obtener más información, consulte [DB\$1UNIQUE\$1NAME](https://docs.oracle.com/database/121/REFRN/GUID-3547C937-5DDA-49FF-A9F9-14FF306545D8.htm#REFRN10242) en la documentación de Oracle.

### Retención de copias de seguridad de las réplicas
<a name="custom-rr.overview.backups"></a>

De manera predeterminada, las réplicas de Oracle de RDS Custom utilizan el mismo periodo de retención de copias de seguridad que su instancia de base de datos principal. Puede modificar el periodo de retención de copia de seguridad a 1-35 días. RDS Custom admite la realización de copias de seguridad, restauraciones y recuperaciones en un momento dado (PITR). Para obtener más información sobre la copia de seguridad y la restauración de instancias de base de datos de RDS Custom, consulte [Copia de seguridad y restauración de una instancia de base de datos de Amazon RDS Custom for Oracle](custom-backup.md).

**nota**  
Durante la creación de una réplica de Oracle, RDS Custom pausa temporalmente la limpieza de los archivos de registo REDO. De esta manera, RDS Custom garantiza que puede aplicar estos registros a la nueva réplica de Oracle una vez que esté disponible.

### Promoción de las réplicas
<a name="custom-rr.overview.promotion"></a>

Puede promocionar réplicas de Oracle administradas en RDS Custom para Oracle mediante la consola, el comando `promote-read-replica` de la AWS CLI o la API `PromoteReadReplica`. Si elimina la instancia de base de datos primaria y todas las réplicas están en buen estado, RDS Custom para Oracle promociona sus réplicas administradas a instancias independientes automáticamente. Si una réplica ha pausado la automatización o está fuera del perímetro de soporte, debe corregir la réplica para que RDS Custom pueda promocionarla automáticamente. Solo puede promocionar réplicas externas de Oracle manualmente.

# Directrices y limitaciones de la replicación de RDS Custom para Oracle
<a name="custom-rr.reqs-limitations"></a>

Cuando se crean réplicas de RDS Custom para Oracle, no se admiten todas las opciones de réplica de RDS Oracle.

**Topics**
+ [Directrices generales de la replicación de RDS Custom para Oracle](#custom-rr.guidelines)
+ [Limitaciones generales de la replicación de RDS Custom para Oracle](#custom-rr.limitations)
+ [Requisitos y limitaciones de red de la replicación de RDS Custom para Oracle](#custom-rr.network)
+ [Limitaciones de las réplicas externas para RDS Custom para Oracle](#custom-rr.external-replica-reqs)

## Directrices generales de la replicación de RDS Custom para Oracle
<a name="custom-rr.guidelines"></a>

Cuando trabaje con RDS Custom para Oracle, siga estas directrices:
+ Puede utilizar la replicación de RDS Custom para Oracle solo en Oracle Enterprise Edition. Standard Edition 2 no es compatible.
+ Le recomendamos encarecidamente que implemente un túnel de VPN para cifrar la comunicación entre las instancias principal y en espera. Para obtener más información, consulte [Configuración de un túnel de VPN entre RDS Custom para instancias principales y réplicas de Oracle](cfo-standby-vpn-tunnel.md).
+ No modifique el usuario `RDS_DATAGUARD`. Este usuario está reservado para la automatización de RDS Custom para Oracle. La modificación de este usuario puede generar resultados no deseados, como la incapacidad de crear réplicas de Oracle para la instancia de base de datos de RDS Custom para Oracle.
+ No cambie la contraseña del usuario de replicación. Es necesaria para administrar la configuración de Oracle Data Guard en el host de RDS Custom. Si cambia la contraseña, RDS Custom para Oracle podría situar la réplica de Oracle fuera del perímetro de soporte. Para obtener más información, consulte [Perímetro de soporte de RDS Custom](custom-concept.md#custom-troubleshooting.support-perimeter).

  La contraseña se almacena en AWS Secrets Manager y se etiqueta con el ID de recurso de base de datos. Cada réplica de Oracle tiene su propio secreto en Secrets Manager. El secreto utiliza uno de los siguientes formatos de nomenclatura.

  ```
  do-not-delete-rds-custom-db-DB_resource_id-uuid-dg
  rds-custom!oracle-do-not-delete-DB_resource_id-uuid-dg
  ```
+ No cambie el `DB_UNIQUE_NAME` de la instancia de base de datos principal. Cambiar el nombre provoca que se bloquee cualquier operación de restauración.
+ No especifique la cláusula `STANDBYS=NONE` en un comando `CREATE PLUGGABLE DATABASE` de una CDB de RDS Custom. De esta forma, si se produce una conmutación por error, su CDB en espera contiene todas las PDB.

## Limitaciones generales de la replicación de RDS Custom para Oracle
<a name="custom-rr.limitations"></a>

Las réplicas de RDS Custom para Oracle tienen las siguientes limitaciones:
+ No puede crear réplicas de RDS Custom para Oracle en el modo de solo lectura. Sin embargo, puede cambiar manualmente el modo de las réplicas montadas a solo lectura y viceversa. Para obtener más información, consulte la documentación del comando de la AWS CLI [create-db-instance-read-replica](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance-read-replica.html).
+ No puede crear réplicas de RDS Custom para Oracle entre regiones.
+ No puede cambiar el valor del parámetro `CommunicationTimeout` de Oracle Data Guard. Este parámetro se establece en 15 segundos para las instancias de base de datos de RDS Custom para Oracle.

## Requisitos y limitaciones de red de la replicación de RDS Custom para Oracle
<a name="custom-rr.network"></a>

Asegúrese de que la configuración de red sea compatible con réplicas de RDS Custom para Oracle. Considere lo siguiente:
+ Asegúrese de habilitar el puerto 1140 para la comunicación entrante y saliente dentro de nube privada virtual (VPC) para la instancia de base de datos principal y todas sus réplicas. Esto es necesario para la comunicación de Oracle Data Guard entre las réplicas de lectura.
+ RDS Custom para Oracle valida la red mientras crea una réplica de Oracle. Si la instancia de base de datos principal y la nueva réplica no pueden conectarse a través de la red, RDS Custom para Oracle no crea la réplica y la coloca en el estado `INCOMPATIBLE_NETWORK`.
+ Para réplicas de Oracle externas, como las que crea en Amazon EC2 o en las instalaciones, utilice otro puerto y agente de escucha para la replicación de Oracle Data Guard. Intentar utilizar el puerto 1140 podría provocar conflictos con la automatización de RDS Custom.
+ El archivo `/rdsdbdata/config/tnsnames.ora` contiene nombres de servicios de red asignados a direcciones de protocolo de agentes de escucha. Tenga en cuenta los siguientes requisitos y recomendaciones:
  + Las entradas de `tnsnames.ora` con el prefijo `rds_custom_` están reservadas para RDS Custom cuando se manejan operaciones de réplica de Oracle.

    Al crear entradas manuales en `tnsnames.ora`, no use este prefijo.
  + En algunos casos, es posible que desee cambiar o realizar una conmutación por error manualmente, o utilizar tecnologías de conmutación por error, como Fast-Start Failover (FSFO). Si es así, asegúrese de sincronizar manualmente las entradas `tnsnames.ora` de la instancia de base de datos principal a todas las instancias de reserva. Esta recomendación se aplica tanto a las réplicas de Oracle administradas por RDS Custom como a réplicas de Oracle externas.

    La automatización de RDS Custom actualiza las entradas de `tnsnames.ora` solo en la instancia de base de datos principal. Asegúrese de sincronizar también cuando añada o elimine una réplica de Oracle.

    Si no sincroniza los archivos `tnsnames.ora` y cambia o conmuta por error manualmente, es posible que Oracle Data Guard en la instancia de base de datos principal no pueda comunicarse con las réplicas de Oracle.

## Limitaciones de las réplicas externas para RDS Custom para Oracle
<a name="custom-rr.external-replica-reqs"></a>

 Las réplicas externas de RDS Custom para Oracle, que incluyen réplicas locales, tienen las siguientes limitaciones:
+ RDS Custom para Oracle no detecta cambios de rol de instancia tras la conmutación por error manual, como FSFO, para réplicas de Oracle externas.

  RDS Custom para Oracle sí detecta cambios para las réplicas administradas. El cambio de rol se anota en el registro de eventos. También puede ver el nuevo estado mediante el comando de la AWS CLI [describe-db-instances](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html).
+ RDS Custom para Oracle no detecta un retardo en la replicación elevado para las réplicas de Oracle externas.

  RDS Custom para Oracle sí detecta un retardo para las réplicas administradas. El alto retraso de replicación produce el evento `Replication has stopped`. También puede ver el estado de replicación mediante el comando AWS CLI [describe-db-instances](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html), pero podría haber un retraso para que se actualice.
+ RDS Custom para Oracle no promueve réplicas externas de Oracle automáticamente si elimina la instancia de base de datos principal. 

  La característica de promoción automática solo está disponible para réplicas de Oracle administradas. Para obtener información sobre cómo promocionar réplicas de Oracle manualmente, consulte el documento técnico [Enabling high availability with Data Guard on Amazon RDS Custom for Oracle](https://d1.awsstatic.com/whitepapers/enabling-high-availability-with-data-guard-on-amazon-rds-custom-for-oracle.pdf) (Habilitación de alta disponibilidad con Data Guard en Amazon RDS Custom para Oracle).

# Promoción de una réplica de RDS Custom para Oracle a una instancia de base de datos independiente
<a name="custom-rr.promoting"></a>

Al igual que con RDS para Oracle, puede promover una réplica de RDS Custom para Oracle a una instancia de base de datos independiente. Cuando se promociona una réplica de Oracle, RDS Custom para Oracle reinicia la instancia de base de datos antes de que esté disponible. Para obtener más información acerca de la promoción de réplicas de Oracle, consulte [Promoción de una réplica de lectura para convertirla en una instancia de base de datos independiente](USER_ReadRepl.Promote.md).

Cuando promocione una réplica, tenga en cuenta las siguientes directrices:
+ No inicie una conmutación por error mientras RDS Custom para Oracle promociona su réplica. De lo contrario, el flujo de trabajo de la promoción podría estancarse
+ No cambie la instancia de base de datos principal mientras RDS Custom para Oracle promociona su réplica de Oracle. De lo contrario, el flujo de trabajo de la promoción podría estancarse
+ No cierre la instancia de base de datos principal mientras RDS Custom para Oracle promociona su réplica de Oracle. De lo contrario, el flujo de trabajo de la promoción podría estancarse
+ No intente reiniciar la replicación con la instancia de base de datos recién promocionada como destino. Después de que RDS Custom para Oracle promocione su réplica de Oracle, esta se convierte en una instancia de base de datos independiente y deja de tener el rol de réplica.

Tenga en cuenta las siguientes limitaciones para las promociones de réplicas de RDS Custom for Oracle:
+ No puede promocionar una réplica mientras RDS Custom para Oracle esté realizando una copia de seguridad.
+ No puede cambiar el período de retención de copia de seguridad a `0` cuando promociona su réplica de Oracle.
+ No puede promocionar la réplica si esta no está en buen estado.

  Si emite `delete-db-instance` en la instancia de base de datos principal, RDS Custom para Oracle valida que cada réplica de Oracle administrada esté en buen estado y disponible para su promoción. Es posible que una réplica no sea apta para la promoción porque la automatización está en pausa o está fuera del perímetro de soporte. En tales casos, RDS Custom para Oracle publica un evento en el que se explica el problema para que pueda reparar la réplica de Oracle manualmente.

Los siguientes pasos muestran el proceso general para promocionar una réplica de Oracle a instancia de base de datos:

1. Detenga la escritura de transacciones en la instancia de base de datos principal. 

1. Espere a que RDS Custom para Oracle aplique todas las actualizaciones a la réplica de Oracle.

1. Para promover la réplica de Oracle, utilice la opción **Promote** (Promover) de la consola de Amazon RDS, el comando [https://docs.aws.amazon.com/cli/latest/reference/rds/promote-read-replica.html](https://docs.aws.amazon.com/cli/latest/reference/rds/promote-read-replica.html) de la AWS CLI o la operación [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_PromoteReadReplica.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_PromoteReadReplica.html) de la API de Amazon RDS.

La promoción de una réplica de Oracle tarda unos minutos en completarse. Durante el proceso, RDS Custom para Oracle detiene la replicación y reinicia la réplica. Cuando se completa el reinicio, la réplica de Oracle está disponible como una instancia de base de datos independiente. Para obtener más información sobre la promoción de réplicas de resolución de problemas, consulte [Solución de problemas de la promoción de réplicas para RDS Custom para Oracle](custom-troubleshooting.md#custom-troubleshooting-promote).

## Consola
<a name="USER_ReadRepl.Promote.Console"></a>

**Para promover una réplica de RDS Custom para Oracle a una instancia de base de datos independiente**

1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon RDS en [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. En la consola de Amazon RDS, seleccione **Databases (Bases de datos)**.

   Aparece el panel **Databases (Bases de datos)**. Cada réplica de Oracle muestra **Replica** (Réplica) en la columna **Role** (Rol).

1. Elija la réplica de RDS Custom para Oracle que desea promocionar.

1. En ** Actions (Acciones)**, seleccione **Promote (Promover)**.

1. En la página **Promote Oracle Replica** (Promocionar réplica de Oracle), escriba el periodo de retención de copia de seguridad y el periodo de copia de seguridad para la instancia de base de datos recientemente promocionada. No puede establecer este valor en **0**.

1. Cuando la configuración sea la deseada, elija **Promote Oracle replica** (Promocionar réplica de Oracle).

## AWS CLI
<a name="USER_ReadRepl.Promote.CLI"></a>

Para promover una réplica de RDS Custom para Oracle a una instancia de base de datos independiente, use el comando [https://docs.aws.amazon.com/cli/latest/reference/rds/promote-read-replica.html](https://docs.aws.amazon.com/cli/latest/reference/rds/promote-read-replica.html) de la AWS CLI.

**Example**  
Para Linux, macOS o Unix:  

```
aws rds promote-read-replica \
--db-instance-identifier my-custom-read-replica \
--backup-retention-period 2 \
--preferred-backup-window 23:00-24:00
```
Para Windows:  

```
aws rds promote-read-replica ^
--db-instance-identifier my-custom-read-replica ^
--backup-retention-period 2 ^
--preferred-backup-window 23:00-24:00
```

## API de RDS
<a name="USER_ReadRepl.Promote.API"></a>

Para promover una réplica de RDS Custom para Oracle a una instancia de base de datos independiente, llame a la operación [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_PromoteReadReplica.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_PromoteReadReplica.html) de la API de Amazon RDS con el parámetro `DBInstanceIdentifier` requerido.

# Configuración de un túnel de VPN entre RDS Custom para instancias principales y réplicas de Oracle
<a name="cfo-standby-vpn-tunnel"></a>

Un túnel de VPN es una conexión cifrada entre dos o más dispositivos a través de una red. Para garantizar el máximo nivel de seguridad para sus instancias de Oracle Data Guard en RDS Custom for Oracle, le recomendamos encarecidamente que implemente un túnel de VPN para cifrar la comunicación entre las instancias principales y en espera. El túnel protege los datos confidenciales cuando viajan de una instancia a otra por la red. Si bien esta configuración es opcional, aconsejamos su uso como práctica recomendada para garantizar la seguridad de los datos y el cumplimiento de las normas. 

Asegúrese de cumplir los siguientes requisitos previos:
+ Tiene acceso raíz a los hosts principal y en espera.
+ Tiene los conocimientos técnicos necesarios para ejecutar el comando `ipsec`.

**Para configurar un túnel de VPN entre un servidor principal y una réplica en RDS Custom para Oracle**

1. Agregue los grupos de seguridad de la instancia principal y de la instancia en espera a la lista de permitidos mediante las siguientes reglas:

   ```
   ACTION FLOW SOURCE PROTO PORT
   
   ALLOW ingress this-SG 50 (ESP) all (N/A)
   ALLOW egress this-SG 50 (ESP) all (N/A)
   
   ALLOW ingress this-SG 17 (UDP) 500 (IKE)
   ALLOW egress this-SG 17 (UDP) 500 (IKE)
   ```

1. Cambie al usuario raíz.

   ```
   $ sudo su – root
   ```

1. Ejecute los siguientes comandos tanto en la instancia principal como en la instancia en espera para inicializar la base de datos de los Servicios de Seguridad de Red (NSS) bajo el usuario `root`.

   ```
   ipsec initnss --nssdir /etc/ipsec.d
   ```

1. Genere las claves RSA de la siguiente manera:

   1. En la instancia principal, genere las claves mediante uno de los siguientes comandos `ipsec`, según la versión del sistema operativo.

      ```
      ipsec newhostkey --nssdir /etc/ipsec.d       ## for Oracle Linux Version 8
      ipsec newhostkey --output /etc/ipsec.secrets ## for Oracle Linux version 7.9
      ```

   1. Obtenga la clave pública, necesaria para crear la configuración. En el siguiente ejemplo, la instancia principal es `left` porque, en términos generales de `ipsec`, `left` se refiere al dispositivo que está configurando actualmente y `right` se refiere al dispositivo que se encuentra en el otro extremo del túnel.

      ```
      ipsec showhostkey --left --ckaid ckaid-returned-in-last-statement
      ```

   1. En la instancia en espera, genere claves para la instancia en espera. 

      ```
      ipsec newhostkey --nssdir /etc/ipsec.d       ## for Oracle Linux Version 8
      ipsec newhostkey --output /etc/ipsec.secrets ## for Oracle Linux version 7.9
      ```

   1. Obtenga la clave pública de la instancia en espera, necesaria para crear la configuración. En el ejemplo siguiente, la instancia en espera es`right`, ya que hace referencia al dispositivo situado en el otro extremo del túnel.

      ```
      ipsec showhostkey --right --ckaid ckaid-returned-in-last-statement
      ```

1. En función de las claves RSA que haya obtenido, genere la configuración. La configuración es idéntica tanto para la instancia principal como para la instancia en espera. Puede encontrar la dirección IPv4 de la instancia principal y la dirección IPv4 de la instancia en espera en la consola de AWS.

   Tanto en la instancia principal como en la instancia en espera, guarde la siguiente configuración en el archivo `/etc/ipsec.d/custom-fb-tunnel.conf`.

   ```
   conn custom-db-tunnel
    type=transport
    auto=add
    authby=rsasig
    left=IPV4-for-primary 
    leftrsasigkey=RSA-key-generated-on-primary
    right=IPV4-for-standby
    rightrsasigkey=RSA-key-generated-on-standby
   ```

1. Tanto en la instancia principal como en la instancia en espera, inicie el daemon `ipsec` en ambos hosts.

   ```
   ipsec setup start
   ```

1. Inicie el túnel en la instancia principal o en la instancia en espera. El resultado debería parecerse al siguiente:

   ```
   [root@ip-172-31-6-81 ~]# ipsec auto --up custom-db-tunnel
   181 "custom-db-tunnel" #1: initiating IKEv2 connection
   181 "custom-db-tunnel" #1: sent IKE_SA_INIT request to 172.31.32.196:500
   182 "custom-db-tunnel" #1: sent IKE_AUTH request {cipher=AES_GCM_16_256 integ=n/a prf=HMAC_SHA2_512 group=DH19}
   003 "custom-db-tunnel" #1: initiator established IKE SA; authenticated peer '3584-bit PKCS#1 1.5 RSA with SHA1' signature using preloaded certificate '172.31.32.196'
   004 "custom-db-tunnel" #2: initiator established Child SA using #1; IPsec transport [172.31.6.81-172.31.6.81:0-65535 0] -> [172.31.32.196-172.31.32.196:0-65535 0] {ESP/ESN=>0xda9c4815 <0xb742ca42 xfrm=AES_GCM_16_256-NONE DPD=passive}
   [root@ip-172-31-6-81 ~]#
   ```