

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

# 甲骨文到亚马逊 Redshift 的转换设置
<a name="schema-conversion-oracle-redshift"></a>

当来源是 Oracle 而目标是 Amazon Redshift 时，以下设置适用。您可以使用 AWS 管理控制台 或 [ModifyConversionConfiguration](https://docs.aws.amazon.com/dms/latest/APIReference/API_ModifyConversionConfiguration.html)API 操作配置这些设置。

本主题介绍特定于 Oracle 到 Amazon Redshift 转换路径的设置。除了这些设置外，DMS Schema Conversion 还提供适用于所有源和目标对的设置，例如转换后的 SQL 中操作项注释的严重性级别以及使用生成式 AI 进行转换的选项。有关这些设置，请参阅[常用转换设置](schema-conversion-settings.md#schema-conversion-settings-common)。

每个设置都显示 AWS 管理控制台 标签，后面是括号中的 AP AWS I 和 CLI 参数名称。使用 API 或 AWS CLI 配置设置时，请使用参数名称。这些设置的列出顺序与它们在中的显示顺序相同 AWS 管理控制台。

以下设置可用于 Oracle 到 Amazon Redshift 的转换路径：

**目标的最大表数** (`RedshiftTablesNumber`)  
指定 DMS 架构转换可以应用于您的目标 Amazon Redshift 集群的最大表数。Amazon Redshift 的配额限制了不同集群节点类型的表数量。  
下表描述了此设置的有效值。      
[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/dms/latest/userguide/schema-conversion-oracle-redshift.html)
即使表的数量超过了您的 Amazon Redshift 集群配额，DMS 架构转换也会转换您的所有源表。DMS 架构转换将转换后的代码存储在您的项目中，但不会将其应用于目标数据库。如果您在应用转换后的代码时达到了 Amazon Redshift 集群配额，则 DMS 架构转换会显示一条警告消息。  
有关 Amazon Redshift 表配额的信息，请参阅 [Amazon Redshift 中的配额和限制](https://docs.aws.amazon.com/redshift/latest/mgmt/amazon-redshift-limits.html)。  
**类型：**字符串 (`Auto`\| `9900` \|`100000`)  
**默认值**：`Auto`

**使用 UNION ALL 视图** (`ConvertingSettings`)  
指定 DMS 架构转换是否使用 UNION ALL 视图来模拟 Amazon Redshift 上的表分区。  
Amazon Redshift 不支持表分区。为了模拟表分区并加快查询的运行速度，DMS 架构转换可以将源表的每个分区迁移到 Amazon Redshift 中的单独表中。然后，DMS 架构转换使用 UNION ALL 创建一个视图，其中包含来自所有目标表的数据。  
此设置支持以下值：  
+ `true`— DMS 架构转换为每个分区创建单独的表和 UNION ALL 视图。启用后，“**目标表的最大数量”** 设置将变为可用。
+ `false`— DMS 架构转换不使用 UNION ALL 视图。
**类型：**布尔值 (`true`\|`false`)  
**默认值**：`false`

**目标表的最大数量** (`PartitionNumberLimit`)  
指定 DMS 架构转换可以为单个源表的分区创建的最大目标表数。此设置仅在可用时才可`ConvertingSettings`用`true`。  
根据源表分区的类型，分区数量可能会超过 Amazon Redshift 集群配额。为避免达到此配额，请输入 DMS 架构转换可以为单个源表创建的最大目标表数。  
默认值为 368 张表。这表示一年中 366 天的分区，再加上两个用于 NO RANGE 和 UNKNOWN 分区的表。  
**类型**：整数  
**默认值**：`368`

**使用压缩编码** (`UseCompressionEncodingZstd`)  
指定 DMS 架构转换是否使用默认 Amazon Redshift 算法自动为列分配压缩编码。  
此设置支持以下值：  
+ `true`— DMS 架构转换对表列应用压缩编码。
+ `false`— DMS 架构转换不应用压缩编码。
有关压缩编码的信息，请参阅《Amazon Redshift 数据库开发人员指南》**中的[压缩编码](https://docs.aws.amazon.com/redshift/latest/dg/c_Compression_encodings.html)。  
**类型：**布尔值 (`true`\|`false`)  
**默认值**：`false`

对 KE@@ **Y 列使用压缩编码** (`UseCompressionEncodingZstdForKeyFields`)  
指定 DMS 架构转换是否为定义为排序和分配键的列分配压缩编码。默认情况下，Amazon Redshift 不会对这些列应用压缩。只有在 i `UseCompressionEncodingZstd` s 时才能使用此设置`true`。  
此设置支持以下值：  
+ `true`— DMS 架构转换将压缩编码应用于 KEY 列。
+ `false`— DMS 架构转换不对 KEY 列进行压缩。
**类型：**布尔值 (`true`\|`false`)  
**默认值**：`false`

**模拟主键和唯一键的行为** () `AutomatePrimaryKeyUniqueConstraint`  
指定 DMS 架构转换是否在目标 Amazon Redshift 集群上模拟主键和唯一密钥约束的行为。Amazon Redshift 不强制执行唯一和主键约束，仅将其用于提供信息目的。如果您在源代码中使用这些约束，请选择此选项以在转换后的代码中模拟它们的行为。  
此设置支持以下值：  
+ `true`— DMS 架构转换模拟目标上的主键和唯一键约束行为。
+ `false`— DMS 架构转换不模拟密钥约束行为。
**类型：**布尔值 (`true`\|`false`)  
**默认值**：`false`

**不要对日期时间格式元素使用扩展包函数** () `DatetimeFormatsEqual`  
指定 DMS 架构转换是否在不使用扩展包函数的情况下转换日期时间格式化函数（例如`TO_CHAR``TO_DATE`、和`TO_NUMBER`）。与 Amazon Redshift 中的日期时间格式字符串相比，Oracle 中的日期时间格式模型包含更多元素。如果源代码仅包含 Amazon Redshift 支持的日期时间格式元素，则无需在转换后的代码中使用扩展包函数。  
此设置支持以下值：  
+ `true`— DMS 架构转换无需使用扩展包函数即可将格式化函数转换为原生 Amazon Redshift 函数。转换后的代码运行得更快。
+ `false`— DMS 架构转换使用扩展包函数来模拟转换后的代码中不支持的格式元素。
**类型：**布尔值 (`true`\|`false`)  
**默认值**：`false`

**不要对数字格式元素使用扩展包函数** (`NumberFormatsEqual`)  
指定 DMS 架构转换是否在不使用扩展包函数的情况下转换数字格式化函数。与 Amazon Redshift 中的数字格式字符串相比，Oracle 中的数字格式模型包含更多的元素。如果源代码仅包含 Amazon Redshift 支持的数字格式元素，则无需在转换后的代码中使用扩展包函数。  
此设置支持以下值：  
+ `true`— DMS 架构转换无需使用扩展包函数即可将数字格式化函数转换为原生 Amazon Redshift 函数。转换后的代码运行得更快。
+ `false`— DMS 架构转换使用扩展包函数来模拟转换后的代码中不支持的格式元素。
**类型：**布尔值 (`true`\|`false`)  
**默认值**：`false`

**使用 NVL 函数模拟 Oracle LEAD 和 LAG 函数的行为** () `LeadLagFunctionsEqual`  
默认情况下，DMS 架构转换会为每个`LEAD`和`LAG`函数引发一个操作项。当您的源代码在这些函数中不使用默认偏移值时，DMS 架构转换可以在函数中模拟它们的用法。`NVL`  
此设置支持以下值：  
+ `true`— DMS 架构转换使用模拟这些函数。`NVL`转换后的代码运行得更快。
+ `false`— 每次使用`LEAD`和`LAG`函数，DMS 架构转换都会引发一个操作项。
**类型：**布尔值 (`true`\|`false`)  
**默认值**：`false`