

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

# 使用 Oracle 数据仓库数据库作为 DMS 架构转换源
<a name="data-providers-oracle-dw"></a>

在 DMS 架构转换中，您可以使用 Oracle 数据仓库数据库作为迁移源，将数据库代码对象和应用程序代码转换为 Amazon Redshift。

有关支持的 Oracle 数据库版本的信息，请参阅[DMS 架构转换的源数据提供程序](CHAP_Introduction.Sources.md#CHAP_Introduction.Sources.SchemaConversion)。有关对源 Oracle 数据库使用 DMS 架构转换的更多信息，请参阅 Orac [le 到 PostgreSQL](https://docs.aws.amazon.com/dms/latest/sbs/schema-conversion-oracle-postgresql.html) 的迁移演练。 step-by-step

## 将 Oracle 数据仓库数据库用作源的权限
<a name="data-providers-oracle-dw-privileges"></a>

以下是将 Oracle 数据仓库用作源所需的权限：
+ CONNECT
+ SELECT\$1CATALOG\$1ROLE
+ SELECT ANY DICTIONARY

## Oracle 数据仓库到 Amazon Redshift 的转换设置
<a name="data-providers-oracle-dw-settings"></a>

有关编辑 DMS 架构转换设置的信息，请参阅[为迁移项目指定架构转换设置](schema-conversion-settings.md)。

Oracle 数据仓库到 Amazon Redshift 转换设置包括以下各项：
+ **在转换后的代码中为所选严重性级别及更高级别的操作项添加注释**：此设置限制转换后的代码中操作项的注释数量。DMS 会在转换后的代码中为所选严重性级别及更高级别的操作项添加注释。

  例如，要最大限度地减少转换后的代码中的注释数量，请选择**仅错误**。要在转换后的代码中包含所有操作项的注释，请选择**所有消息**。
+ **目标 Amazon Redshift 集群的最大表数**：通过此设置可以设置 DMS 可以应用于目标 Amazon Redshift 集群的最大表数。Amazon Redshift 具有限制了不同集群节点类型使用表数的配额。此设置支持以下值：
  + **自动**：DMS 会根据节点类型确定要应用于目标 Amazon Redshift 集群的表数。
  + **设置值**：手动设置表数。

  即使表数超过了您的 Amazon Redshift 集群可以存储的限值，DMS 也会转换您的所有源表。DMS 会将转换后的代码存储在您的项目中，不会将其应用于目标数据库。如果应用转换后的代码时达到了 Amazon Redshift 集群的表配额，DMS 会显示一条警告消息。此外，DMS 还会将表应用于目标 Amazon Redshift 集群，直到表的数量达到限值。

  有关 Amazon Redshift 表配额的信息，请参阅 [Amazon Redshift 中的配额和限制](https://docs.aws.amazon.com/redshift/latest/mgmt/amazon-redshift-limits.html)。
+ **使用 UNION ALL 视图**：此设置允许您设置 DMS 可以为单个源表创建的最大目标表数。

  Amazon Redshift 不支持表分区。要模拟表分区并加快查询运行速度，DMS 可以将源表的每个分区迁移到 Amazon Redshift 中的单独表中。然后，DMS 会创建一个视图，其中包含它创建的所有目标表中的数据。

  DMS 会自动确定源表中的分区数量。根据源表分区的类型，此数量可能会超过您可以应用于 Amazon Redshift 集群的表配额。为避免达到此配额，请输入 DMS 可以为单个源表的分区创建的最大目标表数。默认选项为 368 个表，它表示一年中 366 天的分区和以及 NO RANGE 和 UNKNOWN 分区的两个表。
+ **Oracle 代码中使用的日期类型格式元素与 Amazon Redshift 中的日期时间格式字符串相似**：使用此设置可以转换数据类型格式函数（例如 `TO_CHAR`、`TO_DATE` 和 `TO_NUMBER`）以及 Amazon Redshift 不支持的日期时间格式元素。默认情况下，DMS 使用扩展包函数来模拟转换后的代码中这些不支持的格式元素。

  与 Amazon Redshift 中的日期时间格式字符串相比，Oracle 中的日期时间格式模型包含更多元素。如果源代码仅包含 Amazon Redshift 支持的日期时间格式元素，设置此值可以避免在转换后的代码中使用扩展包函数。避免使用扩展函数可以使转换后的代码运行得更快。
+ **Oracle 代码中使用的数字格式元素与 Amazon Redshift 中的数字格式字符串相似**：使用此设置可以转换 Amazon Redshift 不支持的数字数据类型格式函数。默认情况下，DMS 使用扩展包函数来模拟转换后的代码中这些不支持的格式元素。

  与 Amazon Redshift 中的数字格式字符串相比，Oracle 中的数字格式模型包含更多的元素。如果源代码仅包含 Amazon Redshift 支持的数字格式元素，设置此值可以避免在转换后的代码中使用扩展包函数。避免使用扩展函数可以使转换后的代码运行得更快。
+ **使用 NVL 函数模拟 Oracle LEAD 和 LAG 函数的行为**：如果您的源代码不使用 `LEAD` 和 `LAG` 函数中偏移量的默认值，DMS 可以使用 `NVL` 函数来模拟这些函数。默认情况下，DMS 会为每次使用 `LEAD` 和 `LAG` 函数引发一个操作项。使用 `NVL` 模拟这些函数可以使转换后的代码运行得更快。
+ **模拟主键和唯一键的行为**：进行此设置可使 DMS 模拟目标 Amazon Redshift 集群上的主键和唯一键约束的行为。Amazon Redshift 不强制使用主键和唯一键约束，它们仅用于提供信息。如果源代码使用主键或唯一键约束，进行此设置可确保 DMS 模拟其行为。
+ **使用压缩编码**：进行此设置可将压缩编码应用于 Amazon Redshift 表列。DMS 使用默认 Redshift 算法自动分配压缩编码。有关压缩编码的信息，请参阅《Amazon Redshift 数据库开发人员指南》**中的[压缩编码](https://docs.aws.amazon.com/redshift/latest/dg/c_Compression_encodings.html)。

  默认情况下，Amazon Redshift 不对定义为排序键和分配键的列应用压缩。要对这些列应用压缩，请设置**为 KEY 列使用压缩编码**。只有设置**使用压缩编码**时，才能选择此选项。