

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Configurazione delle AWS integrazioni Oracle Database@ con Amazon Redshift
<a name="setting-up-zero-etl"></a>

Per configurare l'integrazione zero-ETL tra il tuo database Oracle e Amazon Redshift, completa i seguenti passaggi:

1. Abilita Zero-ETL sulla tua rete ODB.

1. Configura i prerequisiti del database Oracle.

1. Configurare AWS Secrets Manager e AWS Key Management Service.

1. Configura le autorizzazioni IAM.

1. Configura le policy relative alle risorse di Amazon Redshift.

1. Crea l'integrazione zero-ETL.

1. Crea il database di destinazione in Amazon Redshift.

## Passaggio 1: abilita Zero-ETL per la tua rete ODB
<a name="zero-etl-enable-network"></a>

È possibile abilitare l'integrazione zero-ETL per la rete ODB associata al cluster VM di origine. Per impostazione predefinita, questa integrazione è disabilitata.

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

**Per abilitare l'integrazione zero-ETL**

1. Aprire la console Oracle AWS Database@ all'indirizzo. [https://console.aws.amazon.com/odb/](https://console.aws.amazon.com/odb/)

1. **Nel riquadro di navigazione, scegli Reti ODB.**

1. Seleziona la rete ODB per la quale desideri abilitare l'integrazione zero-ETL.

1. Scegli **Modifica**.

1. **Seleziona zero-ETL.**

1. **Scegli **Continua e poi** Modifica.**

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

Per abilitare l'integrazione zero-ETL, utilizzate il `update-odb-network` comando con il parametro: `--zero-etl-access`

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

Per abilitare l'integrazione zero-ETL per la rete ODB associata al cluster VM di origine, utilizzare il comando. `update-odb-network` Questo comando configura l'infrastruttura di rete richiesta per l'integrazione zero-ETL.

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

## Fase 2: Configurazione del database Oracle
<a name="zero-etl-configure-oracle"></a>

Completa la configurazione del database Oracle come descritto nei [Prerequisiti](zero-etl-prerequisites.md):
+ Creare utenti di replica e concedere le autorizzazioni necessarie.
+ Abilita i redo log archiviati.
+ Configura SSL (solo Oracle Exadata).
+ Configura gli utenti ASM, se applicabile (solo Oracle Exadata).

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

Crea una chiave gestita dal cliente (CMK) e archivia le credenziali del database.

1. Crea una CMK nel servizio di gestione delle AWS chiavi utilizzando il comando. `create-key`

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

1. Archivia le credenziali del database in 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. Allega una policy relativa alle risorse al segreto per consentire l'accesso a Oracle Database@AWS .

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

   Nel comando precedente, `secret-resource-policy.json` contiene il seguente codice JSON.

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

****  

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

------

1. Allega una politica delle risorse alla CMK. La politica delle risorse CMK deve includere le autorizzazioni sia per il principale del servizio Oracle Database@ che per il principale del AWS servizio Amazon Redshift per supportare l'integrazione zero-ETL crittografata.

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

   Il file deve includere le seguenti dichiarazioni politiche. `cmk-resource-policy.json` La prima istruzione consente l'accesso al AWS servizio Oracle Database@ e la seconda istruzione consente ad Amazon Redshift di creare concessioni sulla chiave KMS per operazioni di dati crittografati.

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

------

## Fase 4: Configurazione delle autorizzazioni IAM
<a name="zero-etl-setup-iam"></a>

Crea e allega policy IAM che consentano operazioni di integrazione zero-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}}
```

La seguente politica concede le autorizzazioni necessarie.

------
#### [ 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": "*"
    }
  ]
}
```

------

## Fase 5: Configurazione delle policy relative alle risorse di Amazon Redshift
<a name="zero-etl-setup-redshift"></a>

Configura politiche relative alle risorse sul tuo cluster Amazon Redshift per autorizzare le integrazioni in entrata.

```
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
```

**Suggerimento**  
In alternativa, puoi utilizzare l'opzione **Fix it for me** nella console. AWS Questa opzione configura automaticamente le politiche Amazon Redshift richieste senza che tu debba farlo manualmente.

## Passaggio 6: crea l'integrazione zero-ETL utilizzando AWS Glue
<a name="zero-etl-create-integration"></a>

Crea l'integrazione zero-ETL utilizzando il comando. AWS Glue `create-integration` In questo comando, specifichi il cluster di macchine virtuali di origine e lo spazio dei nomi Amazon Redshift di destinazione.

L'esempio seguente crea un'integrazione con un PDB denominato in `pdb1` esecuzione in un cluster di macchine virtuali Exadata. È inoltre possibile creare un cluster di macchine virtuali autonome sostituendolo `cloud-vm-cluster` con l'`cloud-autonomous-vm-cluster`ARN di origine. La specificazione di una chiave KMS è facoltativa. Se specifichi una chiave, questa può essere diversa da quella in cui hai creato. [Fase 3: Configurare AWS Secrets Manager e 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}}"
```

Il comando restituisce un ARN di integrazione e imposta lo stato su. `creating` È possibile monitorare lo stato dell'integrazione utilizzando il `describe-integrations` comando.

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

**Importante**  
È supportato un solo PDB per integrazione. Il filtro dati deve specificare un singolo PDB, ad esempio. `include: pdb1.*.*` L'origine deve trovarsi nella stessa AWS regione e nello stesso account in cui viene creata l'integrazione.

## Fase 7: creare un database di destinazione in Amazon Redshift
<a name="zero-etl-create-target-database"></a>

Dopo che l'integrazione è attiva, crea un database di destinazione nel tuo cluster 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}}";
```

Dopo aver creato il database di destinazione, puoi interrogare i dati replicati.

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

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

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

## Verifica l'integrazione Zero-ETL
<a name="zero-etl-verify-setup"></a>

Verifica che l'integrazione funzioni interrogando lo stato dell'integrazione AWS Glue e assicurandoti che le modifiche a Oracle vengano replicate su Amazon Redshift.

**Per verificare che l'integrazione zero-ETL funzioni correttamente**

1. Verifica lo stato dell'integrazione.

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

   Lo stato dovrebbe essere `ACTIVE` o`REPLICATING`.

1. Verifica la replica dei dati apportando modifiche al tuo database Oracle e verificando che vengano visualizzate in Amazon Redshift.

1. Monitora i parametri di replica in Amazon CloudWatch (se disponibili).