View a markdown version of this page

Oracle 到 PostgreSQL 轉換設定 - AWS 資料庫遷移服務

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

Oracle 到 PostgreSQL 轉換設定

當來源為 Oracle 且目標為 Amazon RDS for PostgreSQL 或 Amazon Aurora PostgreSQL 時,會套用下列設定。您可以使用 AWS Management Console 或 ModifyConversionConfiguration API 操作來設定這些設定。

本主題涵蓋 Oracle 至 PostgreSQL 轉換路徑的特定設定。除了這些設定之外,DMS 結構描述轉換還提供適用於所有來源和目標對的設定,例如轉換後 SQL 中動作項目註解的嚴重性等級,以及使用生成式 AI 轉換的選項。如需這些設定,請參閱 常見的轉換設定

當您使用 API 或 AWS CLI 時,請在區段名稱 ORACLE_TO_POSTGRESQLORACLE_TO_POSTGRESQL_14或 下指定轉換路徑設定ORACLE_TO_POSTGRESQL_15。所有三個版本控制的區段都接受相同的金鑰。若要尋找專案使用的區段名稱,請先呼叫 DescribeConversionConfiguration,並僅更新回應中存在的區段。

每個設定都會在括號中顯示 API 和 AWS CLI 參數名稱後面的 AWS Management Console 標籤。使用 API 或 CLI AWS 設定設定時,請使用 參數名稱。這些設定會依顯示在 中的相同順序列出 AWS Management Console。

目標引擎版本 (ORACLE_TO_POSTGRESQL_target_engine_version)

選擇目標資料庫的引擎版本。此設定是 DMS 結構描述轉換目標用於轉換的 PostgreSQL 主要版本功能集,並決定套用哪些版本控制的設定區段 DMS 結構描述轉換 (ORACLE_TO_POSTGRESQL_14ORACLE_TO_POSTGRESQL_15)。此值15以 PostgreSQL 15 和更新版本的功能為目標,並以 PostgreSQL 14 的功能14為目標,因此您的目標資料庫可以執行比您選擇的值更高的版本 (例如 PostgreSQL 15 16 目標的值)。 PostgreSQL 與此頁面上的其他設定不同,此設定不會存放在轉換路徑區段中。而是存放在最上層Conversion version區段,如下列範例所示。

{ "Conversion version": { "ORACLE_TO_POSTGRESQL_target_engine_version": "15" } }

類型:字串 (14 | 15)

預設15

具體化視觀表 (MaterializedViewConvert)

指定 DMS 結構描述轉換如何轉換目標上的 Oracle 具體化視觀表。

API/CLI 值 目標的結果
TABLE DMS 結構描述轉換會建立具有相同資料欄的一般資料表。當您手動或使用複寫工具管理重新整理時,請使用此選項。
MATERIALIZED_VIEW DMS 結構描述轉換會建立 PostgreSQL MATERIALIZED VIEW。當目標支援 時,請使用此選項REFRESH MATERIALIZED VIEW

類型:字串 (TABLE | MATERIALIZED_VIEW)

預設TABLE

產生資料列 ID (GenerateRowId)

您的來源 Oracle 資料庫可以使用 ROWID 虛擬資料欄。PostgreSQL 不支援類似的功能。此設定指定 DMS 結構描述轉換是否模擬轉換程式碼中的ROWID虛擬資料欄,以及 DMS 結構描述轉換用於模擬的資料類型。

主控台標籤 API/CLI 值 Behavior (行為)
不產生 false DMS ROWID 結構描述轉換不會模擬虛擬資料欄,並將參考保留為動作項目。當您的來源 Oracle 程式碼不使用 時,請使用此選項ROWID。轉換後的程式碼執行速度更快。
使用 bigint 資料類型模擬 ROWID 虛擬資料欄 true DMS ROWID 結構描述轉換會使用 bigint資料類型模擬轉換程式碼中的虛擬資料欄。
使用字元變化資料類型來模擬 ROWID 虛擬資料欄 GENERATE_AS_CHARACTER_DOMAIN_TYPE DMS ROWID 結構描述轉換會使用 character varying資料類型模擬轉換程式碼中的虛擬資料欄。

類型:字串 (列舉)

預設false

Code

選取來源 Oracle 程式碼特有的轉換設定。

針對 NUMBER 資料類型 () 的資料欄使用最佳化的資料類型映射 UseOptimizedMappingForNumberConversion

指定 DMS 結構描述轉換是否根據精確度和規模,將每個 Oracle NUMBER資料欄映射至最適合的數值資料類型。

  • true — DMS 結構描述轉換會根據資料欄的精確度和規模SMALLINT,將每個NUMBER資料欄映射至最特定的 PostgreSQL 數值類型 (例如 INTEGER、 或 BIGINT)。

  • false — DMS 結構描述轉換會將所有NUMBER資料欄映射至 NUMERIC

類型:布林值 (true | false)

預設true

使用原生 PostgreSQL TO_CHAR 函數 (ToCharFunctionOracle)

指定 DMS 結構描述轉換是否模擬轉換程式碼中的 Oracle TO_CHAR函數。

  • false — DMS 結構描述轉換模擬轉換程式碼中的 Oracle TO_CHAR行為。

  • true — DMS 結構描述轉換會將 TO_CHARTO_NCHAR呼叫轉換為原生 PostgreSQL TO_CHAR函數。當您的格式字串與 PostgreSQL 相容時,請選取此選項以避免模擬。

類型:布林值 (true | false)

預設false

使用原生 PostgreSQL TO_DATE 函數 (ToDateFunctionOracle)

指定 DMS 結構描述轉換是否模擬轉換程式碼中的 Oracle TO_DATE函數。

  • false — DMS 結構描述轉換模擬轉換程式碼中的 Oracle TO_DATE行為。

  • true — DMS 結構描述轉換會將TO_DATE呼叫轉換為原生 PostgreSQL TO_DATE函數。

類型:布林值 (true | false)

預設false

使用原生 PostgreSQL TO_NUMBER 函數 (ToNumber)

指定 DMS 結構描述轉換是否模擬轉換程式碼中的 Oracle TO_NUMBER函數。

  • false — DMS 結構描述轉換模擬轉換程式碼中的 Oracle TO_NUMBER行為。

  • true — DMS 結構描述轉換會將TO_NUMBER呼叫轉換為原生 PostgreSQL TO_NUMBER函數。

類型:布林值 (true | false)

預設false

改善轉換後程式碼的效能,其中資料庫和應用程式使用相同的時區 (ToTimeZone)

指定 DMS 結構描述轉換是否模擬轉換程式碼中的時區。

  • true — DMS 結構描述轉換不會模擬時區。當您的資料庫和應用程式使用相同的時區時,請使用此選項。轉換後的程式碼執行速度更快。

  • false — DMS 結構描述轉換模擬轉換程式碼中的時區。

類型:布林值 (true | false)

預設false

使用來源端產生的最後一個值填入轉換後的序列 (AlertSequenceRestart)

指定 DMS 結構描述轉換是否從來源上產生的最後一個值繼續轉換序列。

  • true — DMS 結構描述轉換會將每個轉換後的序列設定為從來源上產生的最後一個值開始,因此序列繼續不會發生衝突。

  • false — DMS 結構描述轉換會從其預設初始值開始轉換序列。

類型:布林值 (true | false)

預設false

將 NUMBER 資料類型的主要和外部索引鍵資料欄轉換為 BIGINT 資料類型 (ConvertNumberToBigint)

指定 DMS 結構描述轉換是否將NUMBER資料類型的主索引鍵和外部索引鍵資料欄轉換為 BIGINT。如果您的來源資料庫將浮點數存放在這些資料欄中,請謹慎使用 以避免資料遺失。

  • true — DMS 結構描述轉換會將主索引鍵和外部索引鍵NUMBER資料欄映射至 BIGINT

  • false — DMS 結構描述轉換會針對這些資料欄使用標準數值映射。

類型:布林值 (true | false)

預設false

僅轉換作用中的觸發和限制條件 (IgnoreDisabledTriggersConstraints)

指定 DMS 結構描述轉換是否在轉換期間略過停用的觸發和限制條件。

  • true — DMS 結構描述轉換只會轉換作用中的觸發條件和限制條件,並略過已停用的觸發條件和限制條件。

  • false — DMS 結構描述轉換會轉換所有觸發條件和限制條件,包括已停用的觸發條件和限制條件。

類型:布林值 (true | false)

預設false

轉換在稱為常式 () 中建立的動態 SQL 程式碼 ConvertOutputAsDynamic

指定 DMS 結構描述轉換是否將常式外參考的字串變數轉換為動態 SQL。

  • true — DMS 結構描述轉換會將常式外參考的字串變數轉換為動態 SQL。

  • false — DMS 結構描述轉換不會將這些字串變數轉換為動態 SQL。

類型:布林值 (true | false)

預設false

將程序轉換為函數 (ConvertProceduresToFunction)

指定 DMS 結構描述轉換是否將 Oracle 預存程序轉換為 PostgreSQL 作廢函數。

  • true — DMS 結構描述轉換會將 Oracle 預存程序轉換為 PostgreSQL 作廢函數。

  • false — DMS 結構描述轉換會將 Oracle 預存程序轉換為 PostgreSQL 程序。

類型:布林值 (true | false)

預設false

保留系統產生的限制的名稱 (ConvertSysConstraintNamesUsingOriginal)

指定 DMS 結構描述轉換是否將原始 Oracle 系統產生的限制名稱保留在目標中。如果您的來源 Oracle 程式碼使用系統產生的限制名稱,在您的目標資料庫中建立具有相同名稱的限制條件,請使用此選項。

  • true — DMS 結構描述轉換會將原始 Oracle 系統產生的限制名稱保留在目標中。

  • false — DMS 結構描述轉換會產生新的限制條件名稱。

類型:布林值 (true | false)

預設false

設定來源資料庫的時區 (UseDefaultTimeZoneForSysdateEmulation)

指定模擬 Oracle 函數的SYSDATE函數是否使用 中的時區DefaultTimeZoneForSysdateEmulation,以便轉換後的程式碼傳回與來源資料庫相同的值。

  • true — DMS 結構描述轉換使用 中指定的時區DefaultTimeZoneForSysdateEmulation進行SYSDATE模擬。

  • false — DMS SYSDATE 結構描述轉換使用預設時區進行模擬。

類型:布林值 (true | false)

預設false

DefaultTimeZoneForSysdateEmulation

DMS 結構描述轉換透過 SYSDATE 開啟模擬時使用的時區UseDefaultTimeZoneForSysdateEmulation。指定有效的 IANA 時區名稱,例如 UTCAmerica/New_YorkEurope/Berlin。當 UseDefaultTimeZoneForSysdateEmulation為 時,此值沒有作用false

類型:字串 (IANA 時區名稱)

預設UTC

注意

將程序轉換為函數保留系統產生的限制名稱之間, AWS Management Console 會列出額外的選項:新增引發使用者定義例外狀況的延伸套件函數。 此選項僅在 中設定, AWS Management Console 無法透過 API 或 CLI AWS 使用。相關的嚴重性層級行為是由ShowSeverityLevelInSql常見設定所控制。如需詳細資訊,請參閱常見的轉換設定

Orafce 內建常式

選擇要在轉換程式碼中使用的 Orafce 內建常式。Orafce 是一種 PostgreSQL 擴充功能,可提供與 Oracle 內建函數相容的常式。每個常式都有專用的布林值設定。當您將常式設定為 時true,DMS 結構描述轉換會將相符的 Oracle 內建函數轉換為其 Orafce 常式。當您將其設定為 時false,DMS 結構描述轉換會將函數保留為動作項目,以供手動檢閱。若要使用這些常式,orafce 擴充功能必須在您的目標資料庫中可用。所有這些常式都預設為 falsetrue 只有在您確認函數在用量中的行為與 Orafce 常式相容之後,才將常式設定為 。

設定名稱 Oracle 內建函數
AddMonthsBuiltinFunctionOracle ADD_MONTHS
BitandBuiltinFunctionOracle BITAND
CoshBuiltinFunctionOracle COSH
DbmsAssertBuiltinFunctionOracle DBMS_ASSERT 套件
DbmsOutputBuiltinFunctionOracle DBMS_OUTPUT 套件
DbmsRandomBuiltinFunctionOracle DBMS_RANDOM 套件
DbtimezoneBuiltinFunctionOracle DBTIMEZONE
DecodeBuiltinFunctionOracle DECODE
DumpBuiltinFunctionOracle DUMP
InstrBuiltinFunctionOracle INSTR
InstrbBuiltinFunctionOracle INSTRB
LastDayBuiltinFunctionOracle LAST_DAY
LengthBuiltinFunctionOracle LENGTH
LengthbBuiltinFunctionOracle LENGTHB
ListaggBuiltinFunctionOracle LISTAGG
LnnvlBuiltinFunctionOracle LNNVL
LpadBuiltinFunctionOracle LPAD
LtrimBuiltinFunctionOracle LTRIM
MedianBuiltinFunctionOracle MEDIAN
MonthsBetweenBuiltinFunctionOracle MONTHS_BETWEEN
NanvlBuiltinFunctionOracle NANVL
NextDayBuiltinFunctionOracle NEXT_DAY
NlssortBuiltinFunctionOracle NLSSORT
Nvl2BuiltinFunctionOracle NVL2
NvlBuiltinFunctionOracle NVL
RoundDateFmtBuiltinFunctionOracle ROUND (日期)
RoundNumberBuiltinFunctionOracle ROUND (數字)
RpadBuiltinFunctionOracle RPAD
RtrimBuiltinFunctionOracle RTRIM
SessiontimezoneBuiltinFunctionOracle SESSIONTIMEZONE
SinhBuiltinFunctionOracle SINH
SubstrBuiltinFunctionOracle SUBSTR
SubstrbBuiltinFunctionOracle SUBSTRB
SysdateBuiltinFunctionOracle SYSDATE
TanhBuiltinFunctionOracle TANH
ToCharDatetimeBuiltinFunctionOracle TO_CHAR (日期時間)
ToCharNumberBuiltinFunctionOracle TO_CHAR (數字)
ToDateBuiltinFunctionOracle TO_DATE
ToMultiByteBuiltinFunctionOracle TO_MULTI_BYTE
ToNumberBuiltinFunctionOracle TO_NUMBER
ToSingleByteBuiltinFunctionOracle TO_SINGLE_BYTE
TruncDateBuiltinFunctionOracle TRUNC (日期)
TruncNumberBuiltinFunctionOracle TRUNC (數字)

每個常式都是單獨的布林值金鑰。下列範例會開啟 Oracle ADD_MONTHSNVLSUBSTR函數的 Orafce 常式。新增或移除索引鍵以符合原始程式碼中的函數,並將相同的索引鍵套用至專案所使用的每個區段名稱。

{ "ORACLE_TO_POSTGRESQL_15": { "AddMonthsBuiltinFunctionOracle": true, "NvlBuiltinFunctionOracle": true, "SubstrBuiltinFunctionOracle": true } }
SQL 程式碼設定

設定 DMS 結構描述轉換如何處理 PostgreSQL 不支援的 Oracle 內建物件。

不支援的內建物件轉換為 stub 物件 (ConvUnsupportedBuiltinsToStubs)

指定 DMS 結構描述轉換是否以 stub 物件取代不支援的內建物件。

  • false — DMS 結構描述轉換會將不支援的內建物件保留為評估報告中的動作項目。

  • true — DMS 結構描述轉換會將每個不支援的內建物件取代為具有相同簽章的 stub 物件。轉換後的物件會編譯,因此您可以在處理個別 stubs 之前部署和測試結構描述的其餘部分。

類型:布林值 (true | false)

預設false

在個別結構描述中建立 stub 物件 (CreateStubsInSeparateSchema)

指定 DMS 結構描述轉換是否在個別結構描述中建立 Stub 物件。只有在選取將不支援的內建物件轉換為 stub 物件時,此選項 AWS Management Console 才會出現在 中,而且只有在啟用該選項時才會生效。

  • true — DMS 結構描述轉換會在個別結構描述中建立 stub 物件。這可讓您的應用程式結構描述保持乾淨,並輕鬆識別哪些 Stub 仍需要實作。

  • false — DMS 結構描述轉換會在與轉換物件相同的結構描述中建立 stub 物件。

類型:布林值 (true | false)

預設true

範例:將 Oracle 設定為 PostgreSQL 設定

下列範例會將具體化視觀表保留為 PostgreSQL ROWID 具體化視觀表,使用 bigint資料類型模擬虛擬資料欄,並將程序轉換為 函數。將相同的設定套用至專案使用的每個區段名稱 (請先檢查 DescribeConversionConfiguration 的輸出)。

{ "ORACLE_TO_POSTGRESQL_15": { "MaterializedViewConvert": "MATERIALIZED_VIEW", "GenerateRowId": "true", "ConvertProceduresToFunction": true }, "ORACLE_TO_POSTGRESQL_14": { "MaterializedViewConvert": "MATERIALIZED_VIEW", "GenerateRowId": "true", "ConvertProceduresToFunction": true }, "ORACLE_TO_POSTGRESQL": { "MaterializedViewConvert": "MATERIALIZED_VIEW", "GenerateRowId": "true", "ConvertProceduresToFunction": true } }