

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 Oracle 資料倉儲資料庫作為 DMS 結構描述轉換中的來源
<a name="data-providers-oracle-dw"></a>

您可以在 DMS 結構描述轉換中使用 Oracle 資料倉儲資料庫做為遷移來源，將資料庫程式碼物件和應用程式程式碼轉換為 Amazon Redshift。

如需受支援 Oracle 資料庫版本的相關資訊，請參閱 [DMS 結構描述轉換的來源資料提供者](CHAP_Introduction.Sources.md#CHAP_Introduction.Sources.SchemaConversion)。如需使用 DMS 結構描述轉換搭配來源 Oracle 資料庫的詳細資訊，請參閱 [Oracle 到 PostgreSQL 遷移的逐步解說](https://docs.aws.amazon.com/dms/latest/sbs/schema-conversion-oracle-postgresql.html)。

## 使用 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 叢集的資料表數目。
  + **設定值**：手動設定資料表數目。

  DMS 會轉換所有的來源資料表，即使資料表數目超過 Amazon Redshift 叢集所能存放的數量也一樣。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` 及具有 Amazon Redshift 不支援的日期時間格式元素的 `TO_NUMBER`。根據預設，DMS 會使用擴充功能套件函式，在已轉換的程式碼中模擬這些不受支援的格式元素。

  Oracle 中的日期時間格式模型包含的元素,比 Amazon Redshift 中的日期時間格式字串更多。如果原始程式碼只包含 Amazon Redshift 支援的日期時間格式元素，請設定此值以避免在轉換後的程式碼中使用延伸套件函數。避免延伸函數使轉換後的程式碼執行得更快。
+ **您在 Oracle 程式碼中使用的數值格式元素，與 Amazon Redshift 中的數值格式字串類似：**使用此設定可轉換 Amazon Redshift 不支援的數值資料類型格式化函數。根據預設，DMS 會使用擴充功能套件函式，在已轉換的程式碼中模擬這些不受支援的格式元素。

  Oracle 中的數字格式模型包含比 Amazon Redshift 中的數字格式字串更多的元素。如果原始程式碼僅包含 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 欄的壓縮編碼**。您只能在設定**使用壓縮編碼**時選取此選項。