

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

# 了解 Oracle 到 PostgreSQL 的轉換設定
<a name="schema-conversion-oracle-postgresql"></a>

DMS 結構描述轉換中的 Oracle 到 PostgreSQL 轉換設定包括下列項目：
+ 若要使用生成式 AI 轉換適用的資料庫物件，請啟用**生成式 AI** 設定。使用生成式 AI 成功轉換的物件將明確識別為**動作項目 5444**，其中說明：「此轉換使用根據資料中的模式產生預測的機器學習模型。如需詳細資訊，請參閱[使用生成式 AI 轉換資料庫物件](schema-conversion-convert.databaseobjects.md)。
  + 您可以轉換目標資料庫不同支援版本的結構描述，而不只是最新版本。若要指定版本，請使用**目標引擎版本**設定。可用的轉換選項會根據您選擇的引擎版本而有所不同。目前支援 PostgreSQL 第 14 版和第 15 版 （具有相同的設定）。請注意，在結構描述轉換期間使用不同於此設定中指定版本的目標引擎版本，可能會在執行套用至目標操作時導致相容性問題和錯誤。
+ AWS DMS 可以將 Oracle 具體化視觀表轉換為 PostgreSQL 上的資料表或具體化視觀表。對於**具體化視觀表**，請選擇來源具體化視觀表的轉換方式。
+ 您的來源 Oracle 資料庫可以使用 `ROWID` 虛擬資料欄。PostgreSQL 不支援類似的功能。DMS 結構描述轉換可以在轉換後程式碼中使用 `bigint` 或 `character varying` 資料類型來模擬 `ROWID` 虛擬資料欄。若要這麼做，請為**資料列 ID** 選擇**使用 bigint 資料類型來模擬 ROWID 虛擬資料欄**，或是**使用 character varying 資料類型來模擬 ROWID 虛擬資料欄**。
  + 若要將 NUMBER 資料類型轉換為最適合的數值資料類型，視精確度和規模而定，您可以選取針對 NUMBER 資料類型的資料欄使用最佳化資料類型映射。
+ 如果您的來源 Oracle 程式碼不使用 `ROWID` 虛擬資料欄，請選擇**不產生**。在此情況下，轉換後的程式碼運作得更快。
+ 您的原始 Oracle 程式碼可以包含 `TO_CHAR`、`TO_DATE`、和 `TO_NUMBER` 函數，其中包含 PostgreSQL 不支援的參數。根據預設，DMS 結構描述轉換會在轉換後的程式碼中模擬這些參數的使用方式。

  當您的來源程式碼缺少 PostgreSQL 不支援的參數時，您可以使用原生的 PostgreSQL `TO_CHAR`、`TO_DATE` 和 `TO_NUMBER` 函數。在此情況下，轉換後的程式碼運作得更快。若要這樣做，請選取下列值：
  + **使用原生 PostgreSQL TO\$1CHAR 函數**
  + **使用原生 PostgreSQL TO\$1DATE 函數**
  + **使用原生 PostgreSQL TO\$1NUMBER 函數**
+ 您的資料庫和應用程式可以在不同的時區執行。根據預設，DMS 結構描述轉換會模擬已轉換程式碼中的時區。但是，當您的資料庫和應用程式使用相同的時區時，就不需要此模擬。在此情況下，請選取**改善資料庫和應用程式使用相同時區的已轉換程式碼效能**。
+ 若要繼續在轉換後的程式碼中使用序列，請選取**使用來源端產生的最後一個值填入轉換後的序列**。
+ 在某些情況下，您的來源 Oracle 資料庫可能只會在 `NUMBER` 資料類型的主索引鍵或外部索引鍵資料欄中儲存整數值。在這些情況下， AWS DMS 可以將這些資料欄轉換為 `BIGINT`資料類型。這種方法可以提高轉換後程式碼的性能。若要這麼做，請選取**將 NUMBER 資料類型的主索引鍵和外部索引鍵資料欄轉換為 BIGINT 資料類型**。請確定您的來源未在這些資料行中包含浮點值，以避免資料遺失。
+ 若要略過原始程式碼中停用的觸發程序和條件約束，請選擇**僅僅轉換作用中觸發程序和條件約束**。
+ 您可以使用 DMS 結構描述轉換來轉換稱為動態 SQL 的字串變數。您的資料庫程式碼可以變更這些字串變數的值。若要確保 AWS DMS 一律轉換此字串變數的最新值，請選取**轉換在稱為常式中建立的動態 SQL 程式碼**。
+ PostgreSQL 10 和更舊版本不支援程序。如果您不熟悉在 PostgreSQL 中使用程序， AWS DMS 可以將 Oracle 程序轉換為 PostgreSQL 函數。若要這樣做，請選取**將程序轉換為函數**。
+ 欲查看已發生動作項目的其他資訊，您可以將特定功能新增至延伸套件。若要這麼做，請選取**新增引發使用者定義例外狀況的延伸套件函數**。然後選擇嚴重性層級，以引發使用者定義的例外狀況。請務必先轉換來源資料庫物件，之後再套用延伸套件結構描述。如需詳細了解延伸套件，請參閱：[使用延伸套件](extension-pack.md)。
+ 您的來源 Oracle 資料庫可以包含自動產生名稱的限制條件。如果您的原始程式碼使用這些名稱，請務必選取**保留系統產生的限制條件名稱**。如果您的原始程式碼使用這些限制條件，但不使用其名稱，請清除此選項以提高轉換速度。
+ 如果來源和目標資料庫在不同的時區執行，模擬 `SYSDATE` 內建 Oracle 函數的函數會傳回與來源函數不同的值。若要確保來源和目標函數傳回相同的值，請選擇**設定來源資料庫的時區**。
+ 您可以在轉換後的程式碼中使用 orafce 延伸模組中的函數。若要這麼做，請針對 **Orafce 內建常式**選取要使用的函數。如需有關 Orafce 的詳細資訊，請參閱 GitHub 上的 [Orafce](https://github.com/orafce/orafce)。