從甲骨文遷移到 Amazon RDS 的 Postgre SQL 或 Amazon Aurora Post SQL gre 與 AWS Schema Conversion Tool - AWS Schema Conversion Tool

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

從甲骨文遷移到 Amazon RDS 的 Postgre SQL 或 Amazon Aurora Post SQL gre 與 AWS Schema Conversion Tool

當您將甲骨文數據庫轉換RDS為 Postgre SQL 或 Amazon Aurora Postgre 時SQL,請注意以下幾點。

將 Oracle 系統物件轉換為 Postgre 時SQL,請 AWS SCT 執行下表所示的轉換。

Oracle 系統物件 描述 转换后对象 SQL
V$ VERSION 顯示 Oracle 資料庫中核心程式庫元件的版本編號 aws_oracle_ext.v$version
V$ INSTANCE 顯示目前執行個體狀態的檢視。 aws_oracle_ext.v$instance

您可以使用 AWS SCT 將甲骨文 SQL * Plus 文件轉換為 psql,這是一個基於終端的前端到 Postgre。SQL如需詳細資訊,請參閱轉換應SQL用程式 AWS SCT

SQL作為目標資料庫的權限

要使用 Postgre SQL 作為目標, AWS SCT 需要相應的CREATE ON DATABASE權限。請確定您已為每個目標 Postgre SQL 資料庫授與此權限。

若要使用轉換後的公用同義字,請將資料庫預設搜尋路徑變更為"$user", public_synonyms, public

您可以使用下列程式碼範例來建立資料庫使用者並授與權限。

CREATE ROLE user_name LOGIN PASSWORD 'your_password'; GRANT CREATE ON DATABASE db_name TO user_name; ALTER DATABASE db_name SET SEARCH_PATH = "$user", public_synonyms, public;

在上述範例中,取代 user_name 使用您的用戶的名稱。然後,更換 db_name 使用目標數據庫的名稱。最後,更換 your_password 使用安全密碼。

要使用 Amazon RDS 的 Postgre SQL 作為目標, AWS SCT 需要rds_superuser特權。

在 Postgre 中SQL,只有結構描述擁有者或 a superuser 可以刪除結構描述。擁有者可以刪除結構描述和此結構描述包含的所有物件,即使結構描述的擁有者不擁有其某些物件也是如此。

當您使用不同的使用者將不同的結構描述轉換並套用至目標資料庫時,您可能會在無法卸除結構描述時 AWS SCT 收到錯誤訊息。若要避免此錯誤訊息,請使用 superuser 角色。

甲骨文到後置SQL轉換設置

若要編輯 Oracle 到 Postgre 的SQL轉換設定,請在中選擇 [設定] AWS SCT,然後選擇 [轉換設定]。從上方的列表中,選擇甲骨文,然後選擇甲骨文-下一頁。SQL AWS SCT 顯示 Oracle 到波斯格雷SQL轉換的所有可用設定。

Oracle 到後置轉SQL換設定 AWS SCT 包含下列選項:

  • 用於限制轉換後代碼中行動項目的註釋數量。

    針對所選嚴重性及更高之行動項目的已轉換程式碼中新增註解,請選擇行動項目的嚴重性。 AWS SCT 在所選嚴重性及更高之行動項目的轉換程式碼中加入註解。

    例如,若要將已轉換程式碼中的註解數量降到最低,請選擇僅限錯誤。若要在已轉換的程式碼中包含所有動作項目的註解,請選擇所有訊息

  • 允許 AWS SCT 將 Oracle 具體化視觀表轉換為 Postgre SQL 上的表格或具體化視觀表。對於具體化視觀表轉換為,請選擇如何轉換來源具體化視觀表。

  • 在原始程式碼 Oracle 程式碼包含TO_CHARTO_DATE、和TO_NUMBER函數時使用 Postgre SQL 不支援的參數。默認情況下, AWS SCT 模擬這些參數在轉換後的代碼的使用。

    當您的原始 Oracle 程式碼只包含 Postgre SQL 支援的參數時,您可以使用原生 Postgre SQL TO_CHAR TO_DATE、和TO_NUMBER函數。在此情況下,轉換後的程式碼運作得更快。若只要包括這些參數,請選取下列值:

    • 函數 TO_ CHAR () 不使用 Oracle 特定的格式化字符串

    • 函數 TO_ DATE () 不使用 Oracle 特定的格式化字符串

    • 函數 TO_ NUMBER () 不使用 Oracle 特定的格式化字符串

  • 若要解決來源 Oracle 資料庫僅在資料類型的主索引鍵或外部索引鍵NUMBER資料行中儲存整數值時, AWS SCT 可以將這些資料行轉換為BIGINT資料類型。這種方法可以提高轉換後程式碼的性能。若要採用此方法,請選取 [將NUMBER主索引鍵/外部索引鍵資料行轉BIGINT換為]。請確定您的來源未在這些資料行中包含浮點值,以避免資料遺失。

  • 跳過源代碼中停用的觸發器和約束。若要這麼做,請選擇忽略已停用的觸發程序和條件約

  • 若要使用 AWS SCT 來轉換稱為動態的字串變數SQL。您的資料庫程式碼可以變更這些字串變數的值。若要確保 AWS SCT 永遠轉換此字串變數的最新值,請選取 [轉換在呼叫的常式中建立的動態程式SQL碼]。

  • 為了解決該 Postgre SQL 版本 10 及更早版本不支持程序。如果您或您的用戶不熟悉 Postgre 中的程序使用SQL, AWS SCT 可以將 Oracle 程序轉換為 Postgre SQL 函數。若要這樣做,請選取將程序轉換為函數

  • 若要查看有關已發生之行動項目的其他資訊。若要這麼做,您可以針對具有下一個嚴重性層級的移轉問題選取 [例外狀況引發區塊],將特定功能新增至擴充功能套件。然後選擇嚴重性層級,以引發使用者定義的例外狀況。

  • 使用可能包含條件約束與自動產生名稱的來源 Oracle 資料庫。如果您的原始程式碼使用這些名稱,請務必選取「使用來源原始名稱轉換系統產生的限制名稱」。如果您的原始程式碼使用這些限制條件,但不使用其名稱,請清除此選項以提高轉換速度。

  • 解決您的資料庫和應用程式是否在不同的時區中執行。默認情況下, AWS SCT 模擬轉換後的代碼中的時區。但是,當您的資料庫和應用程式使用相同的時區時,就不需要此模擬。在此情況下,請選取用戶端上的「時區」與伺服器上的時區相符。

  • 解決您的來源和目標資料庫是否在不同的時區中執行。如果這樣做,模擬SYSDATE內置 Oracle 函數的函數返回與源函數相比不同的值。若要確保來源和目標函數傳回相同的值,請選擇 [設定SYSDATE模擬的預設時區]。

  • 在轉換後的代碼中使用 orafce 擴展中的函數。若要這麼做,對於使用 orafce 實作,請選取要使用的函數。如需有關 orafce 的更多資訊,請參閱上的章。 GitHub

轉換甲骨文序列

AWS SCT 從甲骨文到波斯特格雷SQL序列轉換。如果您使用序列來維護完整性條件約束,請確定移轉序列的新值不會與現有值重疊。

使用來源資料庫中的最後一個值填入已轉換序列的步驟
  1. 以 Oracle 作為來源開啟您的 AWS SCT 專案。

  2. 選擇 [設定],然後選擇 [轉換設定]

  3. 從上方的列表中,選擇甲骨文,然後選擇甲骨文-下一頁。SQL AWS SCT 顯示 Oracle 到波斯格雷SQL轉換的所有可用設定。

  4. 選擇將在來源端產生的最後一個值植入已轉換序號

  5. 選擇「定」以儲存設定並關閉「轉換設定」對話方塊。

轉換甲骨文 ROWID

在 Oracle 資料庫中,ROWID虛擬資料欄包含資料表資料列的位址。該ROWID偽列是 Oracle 唯一的,因此 AWS SCT 將ROWID偽列轉換為 Postgre 上的數據列。SQL通過使用此轉換,您可以保留ROWID信息。

轉換ROWID偽列時, AWS SCT 可以創建具有數據類型的數bigint據列。如果沒有主鍵存在,將ROWID列 AWS SCT 設置為主鍵。如果主鍵存在, AWS SCT 設置具有唯一約束的ROWID列。

如果您的來源資料庫程式碼包含的作業 (無法使用數值資料類型執行),則 AWS SCT 可以使用資料類型建立character varying資料行。ROWID

若要為專案建立 Oracle 資料欄,請執ROWID行下列步驟:
  1. 以 Oracle 作為來源開啟您的 AWS SCT 專案。

  2. 選擇 [設定],然後選擇 [轉換設定]

  3. 從上方的列表中,選擇甲骨文,然後選擇甲骨文-下一頁。SQL AWS SCT 顯示 Oracle 到波斯格雷SQL轉換的所有可用設定。

  4. 針對「產生列 ID」,執行下列其中一項作業:

    • 選擇產生為身分識別以建立數值資料欄。

    • 選擇產生為字元網域類型以建立字元資料欄。

  5. 選擇「定」以儲存設定並關閉「轉換設定」對話方塊。

轉換甲骨文動態 SQL

Oracle 提供了兩種實現動態的方法SQL:在 DBMS _ SQL 包中使用EXECUTEIMMEDIATE語句或調用過程。如果您的來源 Oracle 資料庫包含動態物件SQL,請使用 AWS SCT 將 Oracle 動態SQL陳述式轉換為 Postgre SQL。

若要將甲骨文動態轉換為SQL波斯特雷 SQL
  1. 以 Oracle 作為來源開啟您的 AWS SCT 專案。

  2. 選擇在 Oracle 來源樹狀結構檢視SQL中使用動態的資料庫物件。

  3. 開啟物件的內容 (按一下滑鼠右鍵) 選單,選擇 [轉換結構描述],並同意取代物件 (如果物件存在)。下列螢幕擷取畫面顯示 Oracle 程序下方的動態轉換程序SQL。

    動態SQL轉換

轉換 Oracle 分割區

AWS SCT 目前支援下列磁碟分割方法:

  • 範圍

  • 清單

  • 多列範圍

  • 雜湊

  • 複合(列表列表,範圍列表,列表範圍,列表散列,範圍散列,哈希散列)