使用設定體驗部署已轉換的結構描述

結構描述轉換設定體驗會在轉換工作流程完成時自動產生指示與指令碼。 使用這些檔案將轉換後的結構描述部署到 適用於 PostgreSQL 的 Azure 資料庫。 產生檔案並不會把結構部署到目的地。 你檢閱它們,並在部署環境中執行產生的 PowerShell 或 Bash 指令碼。

如需了解如何從已完成的轉換結果開啟安裝檔案,請參閱 教學課程中的「使用安裝體驗準備部署」。

檢閱產生的檔案

設定目錄取決於您選擇進行轉換的 Oracle 結構描述數量。 使用相對於工作區根目錄的適用路徑:

Oracle 結構描述選擇 設定目錄
已選取一個結構描述 .github\postgres-migrations\<migration-project>\artifacts\oracle\<schema-name>\setup
已選取多個結構描述 .github\postgres-migrations\<migration-project>\artifacts\oracle\_migration\setup

請以移轉專案資料夾名稱(例如 <migration-project>)取代 Mig001。 如果您選取一個結構描述,請將 <schema-name> 取代為所選的 Oracle 結構描述資料夾名稱,例如 HR。 如果您選擇多個結構描述,_migration 是實際的資料夾名稱,而不是預留位置。

位置反映的是所選的 Oracle 架構,而非套件中包含的 PostgreSQL 架構數量。 檢視 setup_instructions.md 套件的部署範圍。

檔案或目錄 Purpose
setup_instructions.md 部署專屬的前置條件、指令、可選參數及故障排除指引。
setup.ps1 Windows PowerShell 的部署執行器。
setup.sh 適用於 Linux 或 macOS 上 Bash 的部署執行程式。
sql 支援執行器使用的準備檢查、擴充腳本、驗證查詢及資訊清單。
reports 與 logs 輸出是在執行設定腳本時寫出來的。

將安裝目錄保留在完整的遷移專案中。 執行程式會參照同層 deploy.sql 目錄中的轉換工作階段的 convert;只複製設定目錄是不夠的。

執行前請先檢視產生的指令和部署 SQL。 確認 SQL 是否包含你打算部署的物件修正。 若將專案轉移到其他環境,請保留其目錄結構並遵循組織的資料處理要求。 移除您共用檔案中的認證資訊和其他祕密。

準備目的地

使用你產生的 setup_instructions.md 中的需求,而不是複製其他轉換的需求:

  • 伺服器和客戶端版本。 準備一個具備所需 PostgreSQL 版本的 適用於 PostgreSQL 的 Azure 資料庫 Flexible Server。 psql用戶端的主版本必須與轉換伺服器在產生的設定套件中記錄的主版本相符。 將該用戶端安裝在執行設定的電腦上,並讓它可在 PATH 上使用。 Setup 可以在你的伺服器上建立資料庫,但不會配置 Azure 伺服器。
  • Shell 和檔案存取。 在 Windows 上使用 PowerShell 5.1 或更新版本,或在 Linux 或 macOS 上使用 Bash。 執行者需要對其 logs 與 reports 目錄的寫入權限。
  • 網路存取: 允許設定電腦連線至適用於 PostgreSQL 的 Azure 資料庫目的地伺服器和 PostgreSQL 連接埠。
  • 擴充功能 在部署前,檢視所需的擴充功能,並在 適用於 PostgreSQL 的 Azure 資料庫 目的地伺服器的允許清單中新增支援的擴充功能。 請參閱 Allow extensions in 適用於 PostgreSQL 的 Azure 資料庫。
  • 權限。 使用一個擁有生成的說明中指定之資料庫、結構描述、物件建立及擴充功能安裝權限的帳號。 新資料庫模式也需要建立資料庫的權限。
  • 認證。 使用腳本的隱藏密碼提示、PostgreSQL 密碼檔,或是貴組織核准的秘密管理流程。 不要在部署腳本中嵌入密碼。

確認客戶是否在場:

psql --version

產生的指令反映轉換環境,包括其 PostgreSQL 版本及擴充功能需求。 部署前,請先檢閱任何目的地差異。

選擇資料庫模式

兩款執行器都支援以下模式:

Mode 行為
新資料庫 預設模式。 部署時會在 適用於 PostgreSQL 的 Azure 資料庫 的目的地伺服器建立資料庫。 要求的資料庫名稱必須尚不存在。
現有資料庫 使用你指定的資料庫。 若目標結構描述包含物件,設定時需在繼續前明確確認。

在互動式執行時,腳本會提示您輸入缺少的主機、使用者和資料庫值。 確認前,請先檢閱顯示的目的地、資料庫模式、結構描述及作業。

檢查整備程度而不部署

在產生的設定目錄中開啟終端機。 選擇你作業系統及預期資料庫模式的指令:

資料庫模式 Windows PowerShell Linux 或 macOS
新資料庫 .\setup.ps1 -ValidateOnly bash setup.sh --validate-only
現有資料庫 .\setup.ps1 -DatabaseMode existing -ValidateOnly bash setup.sh --database-mode existing --validate-only

僅驗證模式會連接到伺服器,並寫入本機報告和日誌。 它不會建立目標資料庫、安裝擴充功能,也不會部署已轉換的物件。

整備程度檢查涵蓋連線能力、PostgreSQL 版本、資料庫編碼和區域設定、權限、目標結構描述佔用率及擴充功能可用性。 檢閱警告以及封鎖性失敗。

在新資料庫模式下,驗證會使用維護資料庫,因為目標資料庫尚未存在。 需要使用目的資料庫的檢查會被標記為跳過。 成功的僅驗證執行並不代表跳過的檢查通過。

驗證成功完成後,請在 reports 目錄中檢閱 validation_report_<timestamp>.md。 在部署前解決報告的問題。 如果驗證提前停止,先檢查主控台輸出,再檢查任何已建立的日誌或報告。

部署已轉換的結構描述

使用您勾選的相同目的地和資料庫模式。 從設定目錄中,執行適當的指令,不使用 -ValidateOnly (PowerShell)或 --validate-only (Bash):

資料庫模式 Windows PowerShell Linux 或 macOS
新資料庫 .\setup.ps1 bash setup.sh
現有資料庫 .\setup.ps1 -DatabaseMode existing bash setup.sh --database-mode existing

執行者會準備資料庫、檢查準備程度、安裝所需支援擴充功能、執行轉換後的部署 SQL,並驗證產生的物件與擴充功能。

在核准非空目的地前,請先檢視部署 SQL,因為這可能會改變現有物件。

Important

兩種資料庫模式在失敗後都可能留下變更。 在新資料庫模式下,設定會在目的地準備度檢查前建立資料庫,因此檢查失敗時該資料庫可能會保留。 部署 SQL 也能在不同的事務中套用變更。 重試前請先檢視目的地狀態;不要以為失敗的部署會回滾早期的變更。

使用 setup_instructions.md 指定選用的連接埠、TLS、區域和自動化參數。 非互動式運行時,事先提供主機、使用者、資料庫及認證細節。 非空的現有目標同樣需要透過 Windows 上的 -AllowNonEmptyExisting 或 Linux 或 macOS 上的 --allow-nonempty-existing 進行明確確認。

檢視部署結果

在繼續資料或應用程式驗證前,先閱讀部署結果。 僅有轉換狀態並不代表已部署到該目的地。

目錄 Output 要複習什麼
reports deployment_report_<timestamp>.md 部署與未部署的總數、擴充結果、依物件類型分類的結果,以及物件未部署的原因。
reports verification_<timestamp>.csv 詳細的物件驗證結果。
reports extensions_<timestamp>.csv 詳細的擴充功能結果。
reports preflight_<timestamp>.csv 就緒檢查結果。
logs setup_<timestamp>.log 執行訊息與錯誤。

僅驗證的執行會產生驗證報告,而非部署報告。 早期失敗,例如檔案存取或 shell 版本問題,可能只剩主控台輸出。

使用執行器的退出代碼與以下輸出:

退出代碼 Meaning
0 所要求的操作已成功。 針對僅驗證模式,整備程度驗證已成功通過,且未進行部署。
1 輸入、用戶端或使用者取消所導致的錯誤。
2 設定套件/設定、連線、資料庫、準備檢查或擴充套件安裝失敗。
3 部署、驗證、回報,或意外執行器錯誤。
4 驗證辨識出未部署的物件或擴充功能。

只針對退出代碼 0 繼續執行自動化。 對於其他代碼,請先檢視可用輸出並解決報告的問題後再繼續進行。

驗證已部署的結構描述

成功的設定並不代表行為上與 Oracle 相當,或已可投入生產環境。 在目標環境中,分別獨立地測試資料處理、相依性、業務邏輯及應用程式行為。

檢閱任何未部署的物件或擴充功能,並完成其補救措施。 請另行套用受控安全性組態,並在不再需要暫時性設定權限時撤銷。