

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Configurando AWS integrações do Oracle Database@ com o Amazon Redshift
<a name="setting-up-zero-etl"></a>

Para configurar a integração sem ETL entre seu banco de dados Oracle e o Amazon Redshift, conclua as seguintes etapas:

1. Ative o Zero-ETL na sua rede ODB.

1. Configure os pré-requisitos do banco de dados Oracle.

1. Configure o AWS Secrets Manager e o AWS Key Management Service.

1. Configurar permissões do IAM

1. Configure as políticas de recursos do Amazon Redshift.

1. Crie a integração Zero-ETL.

1. Crie o banco de dados de destino no Amazon Redshift.

## Etapa 1: Habilitar Zero-ETL para sua rede ODB
<a name="zero-etl-enable-network"></a>

Você pode ativar a integração Zero-ETL para a rede ODB associada ao seu cluster de VM de origem. Por padrão, essa integração está desativada.

### Console
<a name="ZETLAccess.CON"></a>

**Para habilitar a integração Zero-ETL**

1. Abra o AWS console Oracle Database@ em. [https://console.aws.amazon.com/odb/](https://console.aws.amazon.com/odb/)

1. No painel de navegação, escolha Redes **ODB.**

1. Selecione a rede ODB para a qual você deseja habilitar a integração Zero-ETL.

1. Escolha **Modificar**.

1. Selecione **Zero-ETL**.

1. Escolha **Continuar** e, em seguida, **Modificar**.

### AWS CLI
<a name="ZETLAccess.CLI"></a>

Para habilitar a integração Zero-ETL, use o `update-odb-network` comando com o parâmetro: `--zero-etl-access`

```
aws odb update-odb-network \
  --odb-network-id {{odb-network-id}} \
  --zero-etl-access ENABLED
```

Para habilitar a integração Zero-ETL para a rede ODB associada ao seu cluster de VM de origem, use o comando. `update-odb-network` Esse comando configura a infraestrutura de rede necessária para a integração Zero-ETL.

```
aws odb update-odb-network \
  --odb-network-id {{your-odb-network-id}} \
  --zero-etl-access ENABLED
```

## Etapa 2: Configurar seu banco de dados Oracle
<a name="zero-etl-configure-oracle"></a>

Conclua a configuração do banco de dados Oracle conforme descrito nos [Pré-requisitos:](zero-etl-prerequisites.md)
+ Crie usuários de replicação e conceda as permissões necessárias.
+ Ative os redo logs arquivados.
+ Configure o SSL (somente Oracle Exadata).
+ Configure usuários do ASM, se aplicável (somente Oracle Exadata).

## Etapa 3: Configurar o AWS Secrets Manager e o AWS Key Management Service
<a name="zero-etl-setup-secrets"></a>

Crie uma Chave Gerenciada pelo Cliente (CMK) e armazene suas credenciais de banco de dados.

1. Crie uma CMK no AWS Key Management Service usando o `create-key` comando.

   ```
   aws kms create-key \
     --description "ODB Zero-ETL Integration Key" \
     --key-usage ENCRYPT_DECRYPT \
     --key-spec SYMMETRIC_DEFAULT
   ```

1. Armazene suas credenciais de banco de dados no AWS Secrets Manager.

   ```
   aws secretsmanager create-secret \
     --name "ODBZeroETLCredentials" \
     --description "Credentials for Oracle Database@AWS Zero-ETL integration" \
     --kms-key-id {{your-cmk-key-arn}} \
     --secret-string file://secret-content.json
   ```

1. Anexe uma política de recursos ao segredo para permitir o acesso ao Oracle Database@AWS .

   ```
   aws secretsmanager put-resource-policy \
     --secret-id "ODBZeroETLCredentials" \
     --resource-policy file://secret-resource-policy.json
   ```

   No comando anterior, `secret-resource-policy.json` contém o seguinte JSON.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "Service": "zetl.odb.amazonaws.com"
         },
         "Action": [
           "secretsmanager:GetSecretValue",
           "secretsmanager:DescribeSecret"
         ],
         "Resource": "*"
       }
     ]
   }
   ```

------

1. Anexe uma política de recursos à CMK. A política de recursos da CMK deve incluir permissões para o responsável pelo serviço principal do Oracle Database@ e pelo responsável pelo AWS serviço principal do Amazon Redshift para oferecer suporte à integração criptografada de zero ETL.

   ```
   aws kms put-key-policy \
     --key-id {{your-cmk-key-arn}} \
     --policy-name default \
     --policy file://cmk-resource-policy.json
   ```

   O `cmk-resource-policy.json` arquivo deve incluir as seguintes declarações de política. A primeira instrução permite o acesso ao AWS serviço Oracle Database@ e a segunda permite que o Amazon Redshift crie concessões na chave KMS para operações de dados criptografados.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "Allow ODB service access",
         "Effect": "Allow",
         "Principal": {
           "Service": "zetl.odb.amazonaws.com"
         },
         "Action": [
           "kms:Decrypt",
           "kms:GenerateDataKey",
           "kms:CreateGrant"
         ],
         "Resource": "*"
       },
       {
         "Sid": "Allows the Redshift service principal to add a grant to a KMS key",
         "Effect": "Allow",
         "Principal": {
           "Service": "redshift.amazonaws.com"
         },
         "Action": "kms:CreateGrant",
         "Resource": "*",
         "Condition": {
           "StringEquals": {
             "kms:EncryptionContext:{context-key}": "{context-value}"
           },
           "ForAllValues:StringEquals": {
             "kms:GrantOperations": [
               "Decrypt",
               "GenerateDataKey",
               "CreateGrant"
             ]
           }
         }
       }
     ]
   }
   ```

------

## Etapa 4: configurar as permissões do IAM
<a name="zero-etl-setup-iam"></a>

Crie e anexe políticas do IAM que permitam operações de integração sem ETL.

```
aws iam create-policy \
  --policy-name "ODBZeroETLIntegrationPolicy" \
  --policy-document file://odb-zetl-iam-policy.json

aws iam attach-user-policy \
  --user-name {{your-iam-username}} \
  --policy-arn {{policy-arn}}
```

A política a seguir concede as permissões necessárias.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "ODBGlueIntegrationAccess",
      "Effect": "Allow",
      "Action": [
        "glue:CreateIntegration",
        "glue:ModifyIntegration",
        "glue:DeleteIntegration",
        "glue:DescribeIntegrations",
        "glue:DescribeInboundIntegrations"
      ],
      "Resource": "*"
    },
    {
      "Sid": "ODBZetlOperations",
      "Effect": "Allow",
      "Action": "odb:CreateOutboundIntegration",
      "Resource": "*"
    },
    {
      "Sid": "ODBRedshiftFullAccess",
      "Effect": "Allow",
      "Action": [
        "redshift:*",
        "redshift-serverless:*",
        "ec2:DescribeAccountAttributes",
        "ec2:DescribeAddresses",
        "ec2:DescribeAvailabilityZones",
        "ec2:DescribeSecurityGroups",
        "ec2:DescribeSubnets",
        "ec2:DescribeVpcs",
        "ec2:DescribeInternetGateways",
        "sns:CreateTopic",
        "sns:Get*",
        "sns:List*",
        "cloudwatch:Describe*",
         "cloudwatch:Get*",
        "cloudwatch:List*",
        "cloudwatch:PutMetricAlarm",
        "cloudwatch:EnableAlarmActions",
        "cloudwatch:DisableAlarmActions",
        "tag:GetResources",
        "tag:UntagResources",
        "tag:GetTagValues",
        "tag:GetTagKeys",
        "tag:TagResources"
      ],
      "Resource": "*"
    },
    {
      "Sid": "ODBRedshiftDataAPI",
      "Effect": "Allow",
      "Action": [
        "redshift-data:ExecuteStatement",
        "redshift-data:CancelStatement",
        "redshift-data:ListStatements",
        "redshift-data:GetStatementResult",
        "redshift-data:DescribeStatement",
        "redshift-data:ListDatabases",
        "redshift-data:ListSchemas",
        "redshift-data:ListTables",
        "redshift-data:DescribeTable"
      ],
      "Resource": "*"
    },
    {
      "Sid": "ODBKMSAccess",
      "Effect": "Allow",
      "Action": [
        "kms:CreateKey",
        "kms:DescribeKey",
        "kms:Encrypt",
        "kms:Decrypt",
        "kms:GenerateDataKey",
        "kms:ListKeys",
        "kms:CreateAlias",
        "kms:ListAliases"
      ],
      "Resource": "*"
    },
    {
      "Sid": "ODBSecretsManagerAccess",
      "Effect": "Allow",
      "Action": [
        "secretsmanager:GetSecretValue",
        "secretsmanager:PutSecretValue",
        "secretsmanager:CreateSecret",
        "secretsmanager:UpdateSecret",
        "secretsmanager:DeleteSecret",
        "secretsmanager:DescribeSecret",
        "secretsmanager:ListSecrets",
        "secretsmanager:GetResourcePolicy",
        "secretsmanager:PutResourcePolicy",
        "secretsmanager:ValidateResourcePolicy"
      ],
      "Resource": "*"
    }
  ]
}
```

------

## Etapa 5: Configurar as políticas de recursos do Amazon Redshift
<a name="zero-etl-setup-redshift"></a>

Configure políticas de recursos em seu cluster do Amazon Redshift para autorizar integrações de entrada.

```
aws redshift put-resource-policy \
  --no-verify-ssl \
  --resource-arn "{{your-redshift-cluster-arn}}" \
  --policy '{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
      {
        "Effect": "Allow",
        "Principal": {
          "Service": "redshift.amazonaws.com"
        },
        "Action": [
          "redshift:AuthorizeInboundIntegration"
        ],
        "Condition": {
          "StringEquals": {
            "aws:SourceArn": "{{your-vm-cluster-arn}}"
          }
        }
      },
      {
        "Effect": "Allow",
        "Principal": {
          "AWS": "{{your-account-id}}"
        },
        "Action": [
          "redshift:CreateInboundIntegration"
        ]
      }
    ]
  }' \
  --region us-west-2
```

**dica**  
Como alternativa, você pode usar a opção **Corrigir para mim** no AWS console. Essa opção configura automaticamente as políticas necessárias do Amazon Redshift sem que você precise fazer isso manualmente.

## Etapa 6: Crie a integração Zero-ETL usando AWS Glue
<a name="zero-etl-create-integration"></a>

Crie a integração Zero-ETL usando o comando. AWS Glue `create-integration` Nesse comando, você especifica o cluster de VM de origem e o namespace Amazon Redshift de destino.

O exemplo a seguir cria uma integração com um PDB chamado em `pdb1` execução em um cluster de VM do Exadata. Você também pode criar um cluster de VM autônomo `cloud-vm-cluster` substituindo-o por `cloud-autonomous-vm-cluster` no ARN de origem. Especificar uma chave KMS é opcional. Se você especificar uma chave, ela poderá ser diferente daquela que você criou em[Etapa 3: Configurar o AWS Secrets Manager e o AWS Key Management Service](#zero-etl-setup-secrets).

```
aws glue create-integration \
  --integration-name "MyODBZeroETLIntegration" \
  --source-arn "arn:aws:odb:{{region}}:{{account}}:cloud-vm-cluster/{{cluster-id}}" \
  --target-arn "arn:aws:redshift:{{region:account}}:namespace/{{namespace-id}}" \
  --data-filter "include: {{pdb1}}.*.*" \
  --integration-config '{
      "RefreshInterval": "10",
      "IntegrationMode": "DEFAULT",
      "SourcePropertiesMap": {
        "secret-arn": "arn:aws:secretsmanager:{{region}}:{{account}}:secret:{{secret-name}}"
      }
    }' \
  --description "Zero-ETL integration for Oracle to Amazon Redshift" \
  --kms-key-id "arn:aws:kms:{{region:account}}:key/{{key-id}}"
```

O comando retorna um ARN de integração e define o status como. `creating` Você pode monitorar o status da integração usando o `describe-integrations` comando.

```
aws glue describe-integrations \
  --integration-identifier {{integration-id}}
```

**Importante**  
Somente um PDB por integração é suportado. O filtro de dados deve especificar um único PDB, por exemplo,`include: pdb1.*.*`. A origem deve estar na mesma AWS região e conta em que a integração está sendo criada.

## Etapa 7: Criar um banco de dados de destino no Amazon Redshift
<a name="zero-etl-create-target-database"></a>

Depois que a integração estiver ativa, crie um banco de dados de destino em seu cluster do Amazon Redshift.

```
-- Connect to your Amazon Redshift cluster
psql -h {{your-redshift-endpoint}} -U {{username}} -d {{database}}

-- Create database from integration
CREATE DATABASE {{target_database_name}} 
FROM INTEGRATION '{{integration-id}}' 
DATABASE "{{source_pdb_name}}";
```

Depois de criar o banco de dados de destino, você pode consultar os dados replicados.

```
-- List databases to verify creation
\l

-- Connect to the new database
\c {{target_database_name}}

-- List tables to see replicated data
\dt
```

## Verifique a integração Zero-ETL
<a name="zero-etl-verify-setup"></a>

Verifique se a integração funciona consultando o status da integração AWS Glue e certificando-se de que suas alterações no Oracle estejam sendo replicadas para o Amazon Redshift.

**Para verificar se sua integração com Zero-ETL está funcionando corretamente**

1. Verifique o status da integração.

   ```
   aws glue describe-integrations \
     --integration-identifier {{integration-id}}
   ```

   O status deve ser `ACTIVE` ou`REPLICATING`.

1. Verifique a replicação de dados fazendo alterações em seu banco de dados Oracle e verificando se elas aparecem no Amazon Redshift.

1. Monitore as métricas de replicação na Amazon CloudWatch (se disponível).