Oracle 遷移至 PostgreSQL

Visual Studio Code 的 PostgreSQL 擴充功能提供 Oracle 架構與應用程式轉換的引導式工作流程。 精靈會引導你如何連接 Oracle、選擇結構描述、檢閱探索結果、選擇 PostgreSQL 臨時資料庫,以及設定 Microsoft Foundry。 轉換後,檢視 HTML 報告和轉換物件總管,然後用設定體驗準備部署。 分開規劃列資料遷移。

Important

Oracle 到 PostgreSQL 的遷移工作流程僅支援 Visual Studio Code。

結構描述與應用程式轉換如何結合

該擴充功能將 Oracle 工作負載分兩次轉換。 架構轉換會先執行,並產生 PostgreSQL 資料定義語言(DDL)用於你的資料庫物件。 應用程式轉換會在之後執行,並更新呼叫這些物件的程式碼。

模式轉換

結構描述轉換會讀取 Oracle 資料字典中的選定結構描述,並利用你的 Microsoft Foundry 部署來產生 PostgreSQL DDL。 該工具嘗試在 scratch 資料庫中編譯,並利用可用的靜態檢查來識別問題。 這些檢查並不能證明等效的執行階段行為或可投入生產環境。 連續產生:

  • 物件層級的 PostgreSQL .sql 檔案,依 Oracle 架構與物件類型組織。
  • 一份包含發現、擷取與轉換結果、轉換率及物件層級備註的 HTML 轉換報告。
  • 你可以在 Conversion 物件總管 檢查物件映射與備註,包括需要手動變更的物件。
  • 為獨立的部署作業設定指令和腳本。
  • 描述 Oracle 模式與 PostgreSQL 的程式說明。

應用程式轉換

應用程式轉換針對圍繞資料庫的 Oracle 專用程式碼:SQL 腳本、儲存程序呼叫、載入器控制檔案、shell 腳本及 Java 檔案。 它會將結構轉換的程式碼筆記作為輸入,因此轉換後的應用程式代碼會與結構轉換實際產生的物件名稱、類型和呼叫慣例相符。

你可以在這個擴充功能中轉換與資料庫相關的應用程式程式碼,或交給 GitHub Copilot 應用程式 modernization extension,進行完整的現代化流程。

將兩個 pass 依序排列

先執行結構轉換。 應用程式轉換使用程式碼備註及結構轉換後的物件名稱轉換。 在轉換應用程式碼前,請先檢視結構並解決必要的變更。 如果你之後編輯了 PostgreSQL 定義,請再檢查一次它的應用程式呼叫器。 不支援重跑完成的結構轉換。

先決條件

在開始之前,請確保您擁有:

  • Visual Studio Code已安裝。
  • 安裝了 PostgreSQL 擴充功能 。
  • 可存取 Oracle 原始資料庫,並有讀取結構元資料與字典檢視的權限。 列資料存取並非必要條件。
  • 一個 適用於 PostgreSQL 的 Azure 資料庫 的彈性伺服器,裡面有一個空的或專用的、未使用的臨時資料庫,裡面沒有你需要保留的東西。 連線使用者必須能夠捨棄並重建相符的結構描述,並建立驗證物件。 Schema Conversion 不支援 Azure HorizonDB 作為臨時資料庫。
  • 一個 Microsoft Foundry 資源,已部署gpt-5.2模型,配額超過 每分鐘 1,000,000 個權杖(TPM)。 你需要端點網址,以及 API 金鑰或有權限的 Microsoft Entra ID 帳號。

關於作業系統、版本、權限及連接需求,請參閱 結構轉換教學的前置條件。

確認遷移功能是否啟用

該 pgsql.enableMigrations 設定控制 遷移檢視及所有遷移指令。 此設定預設為啟用狀態。

如果側邊欄沒有遷移檢視,請開啟 Visual Studio Code 設定(Windows/Linux 為 Ctrl,macOS+為Cmd+),確認為 。pgsql.enableMigrationstrue

建立移轉專案

遷移專案精靈會收集你的原始碼、發現範圍、資料庫連線和 AI 設定,然後才建立專案工作區。

步驟 1:專案設定

  1. 在側邊欄中開啟移轉檢視。

  2. 開始新專案的方式如下:

    • 如果工作區還沒有遷移project,請在檢視中選擇 + 建立遷移Project。
    • 選取檢視工具列中的 + 按鈕。
    • 在檔案總管中右鍵點擊一個工作區資料夾,選擇「開啟遷移專案」。

    新 Oracle to 適用於 PostgreSQL 的 Azure 資料庫 遷移專案頁面已開啟,列出你需要的事項:

    • 來源資料庫的連線細節
    • 要轉換的模式名稱
    • Microsoft Foundry 資源的端點網址與金鑰
    • 現有 適用於 PostgreSQL 的 Azure 資料庫 執行個體的連線名稱
  3. 請在 Project 名稱欄位輸入名稱。

  4. 選擇 下一頁:Oracle Connection。

新遷移 project 頁面的截圖,包含 Project 名稱欄位。

步驟 2:連接 Oracle

Connect to Oracle 頁面會收集你的 Oracle 原始資料庫憑證,並讓你能載入結構。

  1. 請填寫 Oracle 連線欄位:

    Field Description
    Oracle 主機名稱 Oracle 資料庫伺服器的主機名稱或 IP 位址。
    Oracle 連接埠 監聽器埠(預設: 1521)。
    Oracle SID 或服務名稱 Oracle SID 或資料庫實例的服務名稱。
    Oracle 用戶名稱 可存取結構描述中繼資料與資料字典檢視的資料庫使用者。
    Oracle 密碼 Oracle 使用者的密碼。
  2. 選擇 載入結構 以連接並取得可用結構清單。

  3. 在 Schemas 下拉選單中,選擇一個或多個結構要遷移。

  4. 選擇 下一步:探索。

步驟 3:檢閱探索結果

Discovery 會在 DDL 擷取前檢查來源權限並盤點所選結構。

  1. 檢查權限檢查並解決任何缺少的來源存取權限。
  2. 檢視 已發現、待擷取、排除及無效物件,以及物件類型詳細資料和排除原因。
  3. 檢視綱要相依性。 相依結構 列出你未選擇的參考結構;列出依賴性並不會包含該架構在轉換範圍中。
  4. 確認來源範圍。 如果你更改了選擇,請在繼續前重新整理 Discovery。
  5. 確認已檢視的範圍,並選擇 下一步:PostgreSQL 連線。

完整的發現畫面與指引,請參閱 教學中的檢視發現結果。

步驟4:選擇 適用於 PostgreSQL 的 Azure 資料庫 暫存資料庫

選擇 適用於 PostgreSQL 的 Azure 資料庫 暫存資料庫頁面會選擇用於驗證轉換後 DDL 的資料庫。

Warning

轉換會丟棄與所選 Oracle 架構對應的結構,使用 DROP SCHEMA ... CASCADE 後再重新建立。 此動作會刪除該結構中現有的物件與資料,並可移除其他結構中的相依物件。 使用空的暫存資料庫,或是專用且未使用的暫存資料庫,且不包含需要保留的物件或資料。

  1. 在 PostgreSQL 連線 下拉選單中,選擇一個現有的連線設定檔。 如果你需要的連線沒有列出,請選擇 「重新整理設定檔 」來重新載入可用的設定檔,或先在 「連線」和「身份」 檢視中建立一個新的連線。
  2. 在 PostgreSQL 資料庫 下拉選單中,選擇目標資料庫。 如果清單是空的, 請選擇載入資料庫 。
  3. 選擇 「驗證擴充功能」 以檢查推薦的擴充功能。 如果缺少擴充功能,將你轉換所需的擴充功能加入伺服器的允許清單,然後安裝它們。 黃色警告不會阻止繼續,但依賴物件可能需要手動更改。
  4. 選取確認核取方塊,表示在轉換過程中會刪除並重建相符的暫存綱要。
  5. 選擇下一頁:Microsoft Foundry 模型配置。

步驟 5:配置 Microsoft Foundry 模型

「選擇 Microsoft Foundry 模型」頁面配置了 Microsoft Foundry 部署,負責架構與程式碼轉換。

  1. 完成語言模型欄位:

    Field Description
    模型名稱 gpt-5.2。
    Microsoft Foundry 端點 Microsoft Foundry 資源端點 URL(例如,https://<resource>.openai.azure.com/)。
    驗證方法 選擇 API Key 或 Microsoft Entra ID。
    Microsoft Foundry API 金鑰 Microsoft Foundry 資源的 API 金鑰(當 Authentication Method 為 API Key 時會顯示)。
    Azure Account 擁有資源存取權的 Microsoft 帳戶(當驗證方式為 Microsoft Entra ID 時會顯示)。
    承租人 帳號的 Microsoft Entra 租戶(當認證方式為 Microsoft Entra ID 時會顯示)。
    部署名稱 在你的 Microsoft Foundry 資源中部署的模型名稱。
  2. 選擇測試 Microsoft Foundry 連線以驗證連線性。

  3. 選擇 建立移轉專案。

分配超過 1,000,000 TPM的部署配額。 請參見配置 Microsoft Foundry 容量。

執行結構描述移轉

建立專案後,執行轉換並在遷移專案中檢視結果。

擷取並轉換結構

  1. 選擇 遷移 以開始擷取與轉換。
  2. 監控萃取和轉換進度。
  3. 當專案顯示結構 轉換完成時,選擇 「檢視轉換摘要」。

HTML 報告會在轉換完成時自動開啟。 請選擇轉換報告(位於轉換摘要中)重新開啟。 分別檢視發現、提取及轉換總額;它們描述不同的階段。

檢視已轉換的物件

使用 Conversion 物件總管 檢查已轉換與未轉換的物件:

  1. 打開物件比較其 Oracle 與 PostgreSQL 定義(如有)並閱讀其轉換註解。
  2. 選擇 詢問 以取得說明,或選擇 修正 以由 Copilot 協助編輯其 PostgreSQL 檔案。
  3. 若結構描述已部署至非生產資料庫,則透過確認使用中的伺服器與資料庫、選取完整陳述式,並僅執行該選取內容來套用修正。 否則,首先準備下一節所述的部署。
  4. 確認部署 SQL 是否包含你打算部署的修正。 編輯物件檔案並不表示其資料庫物件或產生的部署指令碼已變更。

關於篩選器、套件成員及詳細步驟,請參見 Conversion 物件總管。

準備部署

在 轉換摘要中,選取 設定說明 以開啟產生的部署說明並顯示設定目錄所在位置。 檢查套件,執行僅驗證的檢查,然後將產生的部署腳本對一個非生產環境的目的地資料庫執行。 產生設定檔並不會部署結構。

在正式使用前,請審查部署報告並獨立驗證資料與應用程式行為。 關於前置條件、資料庫模式與指令,請參閱 「使用設定經驗部署已轉換的架構」。

遷移應用程式代碼

架構遷移後,將 Oracle 專用的應用程式程式碼(SQL 腳本、儲存程序、載入控制檔、shell 腳本或 Java 檔案)轉換為相容 PostgreSQL 的對應程式。 應用程式遷移是預覽功能。

選擇移轉方法

該擴充功能提供兩條應用程式碼遷移路徑:

  • 完整的應用程式現代化:如果你安裝了 GitHub Copilot 應用程式現代化擴充功能,請選擇「使用應用程式現代化移轉」,以使用結構描述轉換中的程式碼附註繼續移轉。 選擇 「檢視編碼筆記 」以在繼續前查看已產生的指引。
  • 僅限資料庫選項:若要在此擴充功能中轉換僅與資料庫相關的應用程式程式碼,請選擇 使用 PostgreSQL 擴充功能遷移。

在擴充功能中轉換應用程式代碼

  1. 在 應用程式遷移 卡上,選擇 遷移資料 (或若偵測到應用程式現代化擴充功能則選擇 方法 )。
  2. 在 「轉換應用程式 」頁面,選擇「 選擇 Oracle 應用程式以轉換 」,並選擇包含 Oracle 應用程式程式碼的資料夾。
  3. 選擇 PostgreSQL 連線 及 PostgreSQL 資料庫 以取得轉換上下文。
  4. 如果資料庫清單為空, 請選擇載入資料庫 。
  5. 選擇 轉換應用程式 以開始轉換。

使用 Copilot 工具進行應用程式遷移

該擴充功能註冊了兩個 Copilot 語言模型工具以協助遷移:

  • Oracle 用戶端程式碼應用程式轉換器 (pgsql_migration_oracle_app):利用提示範本及結構遷移分析中的程式碼指引,將 Oracle 用戶端應用程式碼轉換為 PostgreSQL 等效碼。 接受以下參數:

    • 應用程式代碼庫資料夾 (必填):要轉換的程式碼位置。
    • 程式碼註記位置路徑(可選):結構描述遷移中的程式碼註記路徑。
    • Postgres 資料庫名稱(可選):供轉換作業使用的 PostgreSQL 資料庫名稱。
    • Postgres 資料庫連線 (可選):PostgreSQL 資料庫的連線名稱。
  • 顯示 Oracle 到 Postgres 遷移報告 (pgsql_migration_show_report):顯示結構轉換所產生的遷移報告。 需要一個 路徑到報告檔案 參數。

欲了解更多使用 Copilot 工具的資訊,請參見 Copilot 整合。

比較轉換後的檔案

轉換後,使用內建的 diff 指令並排檢查變更。

  1. 在檔案總管中,以滑鼠右鍵按一下遷移專案中 oracle 或 postgres 資料夾下的已轉換 SQL 檔案,然後選取 比較 DDL 遷移檔案配對。
  2. 對於已轉換的應用程式碼檔案(.sql, , .ctl.sh.load, , 或.java),請右鍵點擊該檔案並選擇「比較應用程式遷移檔案對」。

並排差異檢視會顯示原始 Oracle 原始碼與轉換後的 PostgreSQL 輸出,讓你能辨識需要手動調整的瑕疵。

「比較 DDL 遷移檔案配對」指令需要結構 folder/oracle|postgres/SCHEMA_NAME/DDL-TYPE/filename.sql 來找出相符的配對。 對於結構描述轉換輸出,請使用 Conversion 物件總管 來瀏覽來源與目標之間的對應關係。

管理遷移專案

請使用側邊欄的 遷移 檢視來管理您的專案:

Action Description
開放遷移專案 在儀表板中開啟一個現有的遷移專案。
在檔案總管中顯示 在檔案總管檢視中顯示專案資料夾。
刪除 移除一個遷移專案。 刪除前會提示確認。
重新整理 在目前工作區重新載入遷移專案清單。