设置 Oracle Database@ 与 Amazon Redshift AWS 的集成 - Oracle Database@AWS

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

设置 Oracle Database@ 与 Amazon Redshift AWS 的集成

要在您的 Oracle 数据库和 Amazon Redshift 之间设置零 ETL 集成,请完成以下步骤:

  1. 在您的 ODB 网络上启用零 ETL。

  2. 配置 Oracle 数据库先决条件。

  3. 设置 S AWS ecrets Manager 和 AWS 密钥管理服务。

  4. 配置 IAM 权限。

  5. 设置 Amazon Redshift 资源政策。

  6. 创建零 ETL 集成。

  7. 在 Amazon Redshift 中创建目标数据库。

第 1 步:为您的 ODB 网络启用零 ETL

您可以为与源虚拟机集群关联的 ODB 网络启用零 ETL 集成。默认情况下,此集成处于禁用状态。

启用零 ETL 集成
  1. 打开 Oracle Database@AWS 控制台,网址为。https://console.aws.amazon.com/odb/

  2. 在导航窗格中,选择 ODB 网络

  3. 选择要为其启用零 ETL 集成的 ODB 网络。

  4. 选择 Modify(修改)。

  5. 选择零 ETL

  6. 选择 “继续”,然后选择 “修改”

要启用零 ETL 集成,请使用带参数的update-odb-network命令:--zero-etl-access

aws odb update-odb-network \ --odb-network-id odb-network-id \ --zero-etl-access ENABLED

要为与源虚拟机集群关联的 ODB 网络启用零 ETL 集成,请使用命令。update-odb-network此命令配置零 ETL 集成所需的网络基础架构。

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

步骤 2:配置您的 Oracle 数据库

按照先决条件中所述完成 Oracle 数据库配置:

  • 创建复制用户并授予必要的权限。

  • 启用已存档的重做日志。

  • 配置 SSL(仅限 Oracle Exadata)。

  • 如果适用,请设置 ASM 用户(仅限 Oracle Exadata)。

第 3 步:设置 S AWS ecrets Manager 和 AWS 密钥管理服务

创建客户托管密钥 (CMK) 并存储您的数据库凭据。

  1. 使用create-key命令在 AWS 密钥管理服务中创建 CMK。

    aws kms create-key \ --description "ODB Zero-ETL Integration Key" \ --key-usage ENCRYPT_DECRYPT \ --key-spec SYMMETRIC_DEFAULT
  2. 将您的数据库凭据存储在 S AWS ecrets 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
  3. 为密钥附加资源策略以允许 Oracle Database@ 访问AWS 。

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

    在前面的命令中,secret-resource-policy.json包含以下 JSON。

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "zetl.odb.amazonaws.com" }, "Action": [ "secretsmanager:GetSecretValue", "secretsmanager:DescribeSecret" ], "Resource": "*" } ] }
  4. 将资源策略附加到 CMK。CMK 资源策略必须包括 Oracle Database@AWS 服务主体和 Amazon Redshift 服务主体的权限,才能支持加密的零 ETL 集成。

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

    cmk-resource-policy.json文件应包含以下政策声明。第一条语句允许 Oracle Database@AWS 服务访问,第二条语句允许 Amazon Redshift 为 KMS 密钥创建用于加密数据操作的授权。

    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" ] } } } ] }

步骤 4:配置 IAM 权限

创建并附加允许零 ETL 集成操作的 IAM 策略。

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

以下策略授予必要的权限。

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

第 5 步:配置 Amazon Redshift 资源策略

在您的 Amazon Redshift 集群上设置资源策略以授权入站集成。

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
提示

或者,你可以使用 AWS 控制台中的 “为我修复” 选项。此选项可自动配置所需的 Amazon Redshift 策略,而无需您手动配置。

步骤 6:使用创建零 ETL 集成 AWS Glue

使用命令创建零 ETL 集成。 AWS Glue create-integration在此命令中,您可以指定源虚拟机集群和目标 Amazon Redshift 命名空间。

以下示例创建了与 Exadata 虚拟机群集中pdb1运行的名为 PDB 的集成。您也可以通过在源 ARN cloud-autonomous-vm-clustercloud-vm-cluster替换为来创建自治虚拟机集群。指定 KMS 密钥是可选的。如果您指定密钥,则该密钥可能与您在中创建的密钥不同第 3 步:设置 S AWS ecrets Manager 和 AWS 密钥管理服务

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"

该命令返回集成 ARN 并将状态设置为。creating您可以使用describe-integrations命令监控集成状态。

aws glue describe-integrations \ --integration-identifier integration-id
重要

每个集成仅支持一个 PDB。例如,数据筛选器必须指定单个 PDB。include: pdb1.*.*来源必须位于创建集成的相同 AWS 区域和账户中。

第 7 步:在 Amazon Redshift 中创建目标数据库

集成激活后,在您的 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";

创建目标数据库后,您可以查询复制的数据。

-- List databases to verify creation \l -- Connect to the new database \c target_database_name -- List tables to see replicated data \dt

验证零 ETL 集成

通过在中查询集成状态 AWS Glue 并确保您的 Oracle 更改已复制到 Amazon Redshift 来验证集成是否正常运行。

验证您的零 ETL 集成是否正常运行
  1. 检查集成状态。

    aws glue describe-integrations \ --integration-identifier integration-id

    状态应为ACTIVEREPLICATING

  2. 通过在您的 Oracle 数据库中进行更改并检查更改是否显示在 Amazon Redshift 中,来验证数据复制。

  3. 监控 Amazon 中的复制指标 CloudWatch (如果有)。