

# Trabalhar com réplicas do Oracle para o RDS Custom para Oracle
<a name="custom-rr"></a>

É possível criar réplicas do Oracle para instâncias de banco de dados do RDS Custom para Oracle que executam o Oracle Enterprise Edition. Há suporte para bancos de dados de contêiner (CDBs) e não CDBs. A Standard Edition 2 não é compatível com o Oracle Data Guard. 

A criação de réplicas do RDS Custom para Oracle é semelhante à criação de réplicas do RDS para Oracle, mas apresenta diferenças importantes. Para obter informações gerais sobre como criar e gerenciar réplicas do Oracle, consulte [Trabalhar com réplicas de leitura de instância de banco de dados](USER_ReadRepl.md) e [Trabalhar com réplicas de leitura do Amazon RDS para Oracle](oracle-read-replicas.md).

**Topics**
+ [Visão geral da replicação do RDS Custom para Oracle](#custom-rr.overview)
+ [Diretrizes e limitações da replicação do RDS Custom para Oracle](custom-rr.reqs-limitations.md)
+ [Promover uma réplica do RDS Custom para Oracle a uma instância de banco de dados autônoma](custom-rr.promoting.md)
+ [Configuração de um túnel VPN entre as instâncias primária e de réplica do RDS Custom para Oracle](cfo-standby-vpn-tunnel.md)

## Visão geral da replicação do RDS Custom para Oracle
<a name="custom-rr.overview"></a>

A arquitetura da replicação do RDS Custom para Oracle é análoga à replicação do RDS para Oracle. Uma instância de banco de dados primária replica de forma assíncrona para uma ou mais réplicas da Oracle.

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


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

Como acontece com o RDS Custom para Oracle, você pode criar até cinco réplicas de banco de dados gerenciadas da sua instância de banco de dados primária do RDS Custom para Oracle. Você também pode criar suas próprias réplicas do Oracle configuradas manualmente (externas). As réplicas externas não contam em relação ao limite de instâncias de banco de dados. Elas também estão fora do perímetro de suporte do RDS Custom. Para ter mais informações sobre o perímetro de suporte, consulte [Perímetro de suporte do RDS Custom](custom-concept.md#custom-troubleshooting.support-perimeter).

### Convenção de nomenclatura de réplicas
<a name="custom-rr.overview.names"></a>

Os nomes das réplicas da Oracle são baseados no nome exclusivo do banco de dados. O formato é `DB_UNIQUE_NAME_X`, com letras anexadas em sequência. Por exemplo, se o nome exclusivo do seu banco de dados for `ORCL`, as duas primeiras réplicas são chamadas `ORCL_A` e `ORCL_B`. As primeiras seis letras, A-F, são reservadas para o RDS Custom. O RDS Custom copia parâmetros de banco de dados da instância de banco de dados primária para as réplicas. Para ter mais informações, consulte [DB\$1UNIQUE\$1NAME](https://docs.oracle.com/database/121/REFRN/GUID-3547C937-5DDA-49FF-A9F9-14FF306545D8.htm#REFRN10242) na documentação do Oracle.

### Retenção de backup de réplicas
<a name="custom-rr.overview.backups"></a>

Por padrão, réplicas do RDS Custom Oracle usam o mesmo período de retenção de backup que a sua instância de banco de dados primária. Você pode modificar o período de retenção de backup para 1-35 dias. O RDS Custom oferece suporte para backup, restauração e recuperação a um ponto anterior no tempo (PITR). Para ter mais informações sobre como fazer backup e restaurar instâncias de banco de dados do RDS Custom, consulte [Fazer o backup e a restauração de uma instância de banco de dados do Amazon RDS Custom for Oracle](custom-backup.md).

**nota**  
Ao criar uma réplica do Oracle, o RDS Custom pausa temporariamente a limpeza de logs de redo. Dessa forma, o RDS Custom garante que possa aplicar esses logs à nova réplica do Oracle depois que ela for disponibilizada.

### Promoção de réplicas
<a name="custom-rr.overview.promotion"></a>

Você pode promover réplicas gerenciadas do Oracle no RDS Custom para Oracle usando o console, o comando `promote-read-replica` do AWS CLI ou a API do `PromoteReadReplica`. Se você excluir sua instância de banco de dados primária e todas as réplicas estiverem íntegras, o RDS Custom para Oracle promoverá automaticamente suas réplicas gerenciadas a instâncias autônomas. Se uma réplica pausou a automação ou estiver fora do perímetro de suporte, você deverá corrigir a réplica antes que o RDS Custom possa promovê-la automaticamente. Você só pode promover réplicas externas do Oracle manualmente.

# Diretrizes e limitações da replicação do RDS Custom para Oracle
<a name="custom-rr.reqs-limitations"></a>

Quando você cria réplicas de leitura do RDS Custom para Oracle, nem todas as opções de réplica do RDS Oracle são compatíveis.

**Topics**
+ [Diretrizes gerais da replicação do RDS Custom para Oracle](#custom-rr.guidelines)
+ [Limitações gerais da replicação do RDS Custom para Oracle](#custom-rr.limitations)
+ [Requisitos e limitações da rede para a replicação do RDS Custom para Oracle](#custom-rr.network)
+ [Limitações da réplica externa para o RDS Custom para Oracle](#custom-rr.external-replica-reqs)

## Diretrizes gerais da replicação do RDS Custom para Oracle
<a name="custom-rr.guidelines"></a>

Ao trabalhar com o RDS Custom para Oracle, siga estas diretrizes:
+ É possível usar a replicação do RDS Custom para Oracle somente no Oracle Enterprise Edition. A Standard Edition 2 não é compatível.
+ Recomendamos fortemente que você implemente um túnel VPN para criptografar a comunicação entre suas instâncias primária e de espera. Para obter mais informações, consulte [Configuração de um túnel VPN entre as instâncias primária e de réplica do RDS Custom para Oracle](cfo-standby-vpn-tunnel.md).
+ Não modifique o usuário `RDS_DATAGUARD`. Esse usuário está reservado para a automação do RDS Custom para Oracle. Modificar esse usuário pode gerar resultados indesejados, como a incapacidade de criar réplicas do Oracle para sua instância de banco de dados do RDS Custom para Oracle.
+ Não altere a senha do usuário da replicação. Ela é necessária para administrar a configuração do Oracle Data Guard no host do RDS Custom. Se você alterar a senha, o RDS Custom para Oracle pode colocar sua réplica do Oracle fora do perímetro de suporte. Para ter mais informações, consulte [Perímetro de suporte do RDS Custom](custom-concept.md#custom-troubleshooting.support-perimeter).

  A senha é armazenada no AWS Secrets Manager, marcada com o ID do recurso de banco de dados. Cada réplica do Oracle possui seu próprio segredo no Secrets Manager. O segredo usa um dos formatos de nomenclatura a seguir.

  ```
  do-not-delete-rds-custom-db-DB_resource_id-uuid-dg
  rds-custom!oracle-do-not-delete-DB_resource_id-uuid-dg
  ```
+ Não altere o `DB_UNIQUE_NAME` da instância de banco de dados primária. Alterar o nome faz com que qualquer operação de restauração fique travada.
+ Não especifique a cláusula `STANDBYS=NONE` em um comando `CREATE PLUGGABLE DATABASE` em um CDB do RDS Custom. Dessa forma, se ocorrer um failover, seu CDB de espera é composto por todos os PDBs.

## Limitações gerais da replicação do RDS Custom para Oracle
<a name="custom-rr.limitations"></a>

As réplicas do RDS Custom para Oracle têm as seguintes limitações:
+ Você não pode criar réplicas do RDS Custom para Oracle no modo somente leitura. No entanto, você pode alterar manualmente o modo montado de réplicas para somente leitura e de somente leitura para montado. Para ter mais informações, consulte a documentação do comando [create-db-instance-read-replica](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance-read-replica.html) do AWS CLI.
+ Não é possível criar réplicas do RDS Custom para Oracle entre regiões.
+ Você não pode alterar o valor do parâmetro `CommunicationTimeout` do Oracle Data Guard. Esse parâmetro é definido como 15 segundos para instâncias de banco de dados do RDS Custom para Oracle.

## Requisitos e limitações da rede para a replicação do RDS Custom para Oracle
<a name="custom-rr.network"></a>

Verifique se a sua configuração de rede oferece suporte para réplicas do RDS Custom para Oracle. Considere o seguinte:
+ Habilite a porta 1140 para comunicação de entrada e saída dentro da sua nuvem privada virtual (VPC) para a instância de banco de dados primária e todas as réplicas. Isso é necessário para a comunicação do Oracle Data Guard entre as réplicas de leitura.
+ O RDS Custom para Oracle valida a rede ao criar uma réplica do Oracle. Se a instância de banco de dados primária e a nova réplica não conseguirem se conectar pela rede, o RDS Custom para Oracle não criará a réplica e a colocará no estado `INCOMPATIBLE_NETWORK`.
+ Para réplicas externas do Oracle, como aquelas criadas no Amazon EC2 ou on-premises, use outra porta e ouvinte para replicação do Oracle Data Guard. Tentar usar a porta 1140 pode causar conflitos com a automação do RDS Custom.
+ O arquivo `/rdsdbdata/config/tnsnames.ora` contém nomes de serviços de rede mapeados para endereços de protocolo de ouvinte. Observe os seguintes requisitos e recomendações:
  + Entradas em `tnsnames.ora` com o prefixo `rds_custom_` são reservadas para RDS Custom ao lidar com operações de réplica do Oracle.

    Ao criar entradas manuais em `tnsnames.ora`, não use esse prefixo.
  + Em alguns casos, talvez você queira alternar ou fazer failover manualmente ou usar tecnologias de failover, como o Fast-Start Failover (FSFO). Nesse caso, sincronize manualmente as entradas `tnsnames.ora` da instância de banco de dados primária com todas as instâncias em espera. Essa recomendação aplica-se a réplicas do Oracle gerenciadas pelo RDS Custom e a réplicas externas do Oracle.

    A automação do RDS Custom atualiza as entradas `tnsnames.ora` somente na instância de banco de dados primária. Também sincronize ao adicionar ou remover uma réplica do Oracle.

    Se você não sincronizar os arquivos `tnsnames.ora` e alternar ou failover manualmente, o Oracle Data Guard na instância de banco de dados primária talvez não consiga se comunicar com as réplicas do Oracle.

## Limitações da réplica externa para o RDS Custom para Oracle
<a name="custom-rr.external-replica-reqs"></a>

 As réplicas externas do RDS Custom para Oracle, que incluem réplicas on-premises, têm as seguintes limitações:
+ O RDS Custom para Oracle detecta alterações no perfil da instância após o failover manual, como o FSFO, para réplicas externas do Oracle.

  O RDS Custom para Oracle detecta alterações em réplicas gerenciadas. A alteração da função é anotada no log de eventos. Também é possível ver o novo estado usando o comando [describe-db-instances](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html) da AWS CLI.
+ O RDS Custom para Oracle, não detecta um alto atraso de replicação para réplicas externas do Oracle.

  O RDS Custom para Oracle detecta atrasos para réplicas gerenciadas. O alto atraso de replicação gera o evento `Replication has stopped`. Você também pode ver o status da replicação usando o comando [describe-db-instances](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-instances.html) da AWS CLI, mas pode haver um atraso para que ele seja atualizado.
+ O RDS Custom para Oracle não promoverá réplicas externas do Oracle automaticamente se você excluir sua instância de banco de dados primária. 

  O recurso de promoção automática está disponível somente para réplicas gerenciadas do Oracle. Para obter informações sobre como promover réplicas do Oracle manualmente, consulte o whitepaper [“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) (Habilitar a alta disponibilidade com o Data Guard no Amazon RDS Custom para Oracle).

# Promover uma réplica do RDS Custom para Oracle a uma instância de banco de dados autônoma
<a name="custom-rr.promoting"></a>

Assim como com o RDS para Oracle, você pode promover uma réplica do RDS Custom para Oracle a uma instância de banco de dados autônoma. Ao promover uma réplica do Oracle, a instância de banco de dados é reiniciada antes que ela seja disponibilizada. Para ter mais informações sobre como promover réplicas do Oracle, consulte [Promoção de uma réplica de leitura a uma instância de banco de dados autônoma](USER_ReadRepl.Promote.md).

Ao promover uma réplica, observe as seguintes diretrizes:
+ Não inicie um failover enquanto o RDS Custom para Oracle estiver promovendo sua réplica. Caso contrário, o fluxo de trabalho da promoção poderá travar.
+ Não alterne sua instância de banco de dados primária enquanto o RDS Custom para Oracle estiver promovendo sua réplica do Oracle. Caso contrário, o fluxo de trabalho da promoção poderá travar.
+ Não interrompa sua instância de banco de dados primária enquanto o RDS Custom para Oracle estiver promovendo sua réplica do Oracle. Caso contrário, o fluxo de trabalho da promoção poderá travar.
+ Não tente reiniciar a replicação com sua instância de banco de dados recém-promovida como destino. Depois que o RDS Custom para Oracle promover sua réplica do Oracle, ela se tornará uma instância de banco de dados autônoma e não terá mais a função de réplica.

Observe as seguintes limitações da promoção de réplicas do RDS Custom para Oracle:
+ Você não pode promover uma réplica enquanto o RDS Custom para Oracle estiver fazendo backup dela.
+ Ao promover sua réplica do Oracle, você não pode alterar o período de retenção de backup para `0`.
+ Você não pode promover sua réplica quando ela não está em um estado íntegro.

  Se você chamar `delete-db-instance` na instância de banco de dados primária, o RDS Custom para Oracle valida que cada réplica gerenciada do Oracle está íntegra e disponível para promoção. Uma réplica pode não estar qualificada para promoção porque a automação está pausada ou está fora do perímetro de suporte. Nesses casos, o RDS Custom para Oracle publica um evento explicando o problema para que você possa reparar sua réplica do Oracle manualmente.

As etapas a seguir mostram o processo geral para promover uma réplica do Oracle a uma instância de banco de dados:

1. Pare a gravação de transações na instância de banco de dados primária. 

1. Aguarde até que o RDS Custom para Oracle aplique todas as atualizações à sua réplica do Oracle.

1. Promova a réplica do Oracle escolhendo a opção **Promote** (Promover) no console do Amazon RDS, o 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) da AWS CLI ou a operação da API [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_PromoteReadReplica.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_PromoteReadReplica.html) do Amazon RDS.

A promoção de uma réplica do Oracle leva alguns minutos para ser concluída. Durante o processo, o RDS Custom para Oracle interrompe a replicação e reinicializa sua réplica. Quando a reinicialização for concluída, a réplica do Oracle estará disponível como uma nova instância de banco de dados. Consulte mais informações sobre como solucionar problemas de promoção de réplicas em [Solucionar problemas de promoção de réplicas no RDS Custom para Oracle](custom-troubleshooting.md#custom-troubleshooting-promote).

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

**Para promover uma réplica do RDS Custom para Oracle a uma instância de banco de dados autônoma**

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon RDS em [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. No console do Amazon RDS, escolha **Databases** (Bancos de dados).

   O painel **Databases** (Bancos de dados) é exibido. Todas as réplicas do Oracle exibem **Replica** (Réplica) na coluna **Role** (Função).

1. Escolha a réplica do RDS Custom para Oracle que você deseja promover.

1. Em **Actions** (Ações), selecione **Promote** (Promover).

1. Na página **Promote Oracle replica** (Promover réplica do Oracle), insira o período de retenção de backup e a janela de backup para a instância de banco de dados recém-promovida. Você não pode definir esse valor como **0**.

1. Quando estiver satisfeito com as configurações, escolha **Promote Oracle replica** (Promover réplica do Oracle).

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

Para promover sua réplica do RDS Custom para Oracle a uma instância de banco de dados autônoma, use o 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) da AWS CLI.

**Example**  
Para Linux, macOS ou 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 do RDS
<a name="USER_ReadRepl.Promote.API"></a>

Para promover sua réplica do RDS Custom para Oracle a uma instância de banco de dados autônoma, chame a operação da API [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_PromoteReadReplica.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_PromoteReadReplica.html) do Amazon RDS com o parâmetro obrigatório `DBInstanceIdentifier`.

# Configuração de um túnel VPN entre as instâncias primária e de réplica do RDS Custom para Oracle
<a name="cfo-standby-vpn-tunnel"></a>

Um túnel VPN é uma conexão criptografada entre dois ou mais dispositivos em uma rede. Para garantir o mais alto nível de segurança para suas instâncias do Oracle Data Guard no RDS Custom para Oracle, é altamente recomendável que você implemente um túnel VPN para criptografar a comunicação entre suas instâncias primária e em espera. O túnel serve como uma proteção para dados confidenciais enquanto eles percorrem a rede entre as instâncias. Embora essa configuração seja opcional, recomendamos como uma prática recomendada para alcançar a segurança dos dados e a conformidade regulatória. 

Satisfaça os seguintes pré-requisitos:
+ Você tem acesso raiz aos hosts primário e em espera.
+ Você tem o conhecimento técnico para executar o comando `ipsec`.

**Como configurar um túnel VPN entre uma instância primária e uma réplica no RDS Custom para Oracle**

1. Adicione os grupos de segurança da instância primária e da instância em espera à lista de permissões usando as seguintes regras:

   ```
   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. Mude para o usuário raiz.

   ```
   $ sudo su – root
   ```

1. Execute os comandos a seguir na instância primária e na instância em espera para inicializar o banco de dados do Network Security Services (NSS) sob o usuário `root`.

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

1. Gere chaves RSA da seguinte forma:

   1. Na instância primária, gere as chaves usando um dos comandos `ipsec` a seguir, dependendo da versão do seu sistema operacional.

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

   1. Obtenha a chave pública, de que você precisa para criar a configuração. No exemplo a seguir, a instância primária é `left` porque na linguagem `ipsec`, `left` refere-se ao dispositivo que você está configurando no momento e `right` refere-se ao dispositivo na outra extremidade do túnel.

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

   1. Na instância em espera, gere chaves para a instância em 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. Obtenha a chave pública para a instância em espera, de que você precisa para criar a configuração. No exemplo a seguir, a instância em espera é `right` porque se refere ao dispositivo na outra extremidade do túnel.

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

1. Com base nas chaves RSA que você obteve, gere a configuração. A configuração é idêntica tanto para a instância primária quanto para a instância em espera. Você pode encontrar o endereço IPv4 da instância primária e o endereço IPv4 da instância em espera no console da AWS.

   Tanto na instância primária quanto na instância em espera, salve a configuração a seguir no arquivo `/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 na instância primária quanto na instância em espera, inicie o daemon `ipsec` nos dois hosts.

   ```
   ipsec setup start
   ```

1. Inicie o túnel na instância primária ou na instância em espera. A saída deve ser semelhante à seguinte.

   ```
   [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 ~]#
   ```