本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
將 Oracle 資料庫錯誤碼遷移至 Amazon Aurora Postgre SQL- 相容資料庫
由 Sai Parthasaradhi (AWS) 和 Veeranjaneyulu Grandhi (AWS) 建立
環境:PoC 或試行 | 來源:Oracle | 目標:PostgreSQL |
R 類型:Replatform | 工作負載:Oracle | 技術:遷移;資料庫 |
AWS 服務:Amazon Aurora |
Summary
此模式說明如何使用預先定義的中繼資料資料表,將 Oracle 資料庫錯誤代碼遷移至 Amazon Aurora Postgre SQL-Compatible Edition 資料庫。
Oracle 資料庫錯誤碼不一定具有對應的 PostgreSQL 錯誤碼。這種錯誤碼的差異可能使得在目標 PostgreSQL 架構中設定程序或函數的處理邏輯變得困難。
您可以將對 PL/pgSQL 程式有意義的來源和目標資料庫錯誤碼儲存在中繼資料資料表中,以簡化程序。然後,將資料表設定為標記有效的 Oracle 資料庫錯誤代碼,並將其映射至其 PostgreSQL 對等項目,然後再繼續剩餘的程序邏輯。如果 Oracle 資料庫錯誤碼不在中繼資料資料表中,則程序會因例外狀況而結束。然後,如果您的程式需要,您可以手動檢閱錯誤詳細資訊,並將新的錯誤代碼新增至資料表。
透過使用此組態,您的 Amazon Aurora Postgre SQL相容資料庫可以像來源 Oracle 資料庫一樣處理錯誤。
注意:設定 PostgreSQL 資料庫以正確處理 Oracle 資料庫錯誤碼通常需要變更資料庫和應用程式碼。
先決條件和限制
先決條件
作用中AWS帳戶
啟動並執行執行個體和接聽程式服務的來源 Oracle 資料庫
已啟動並執行的 Amazon Aurora Postgre SQL相容叢集
熟悉 Oracle 資料庫
熟悉 PostgreSQL 資料庫
架構
下圖顯示資料錯誤碼驗證和處理的 Amazon Aurora Postgre SQL相容資料庫工作流程範例:
該圖顯示以下工作流程:
資料表會保留 Oracle 資料庫錯誤碼和分類,以及其等效 PostgreSQL 錯誤碼和分類。資料表包含 valid_error 資料欄,可分類特定預先定義的錯誤碼是否有效。
當 PL/pgSQL 函數 (func_processdata) 擲回例外狀況時,它會叫用第二個 PL/pgSQL 函數 (error_validation )。
error_validation 函數接受 Oracle 資料庫錯誤碼作為輸入引數。然後,函數會對照資料表檢查傳入的錯誤碼,以查看該錯誤是否包含在資料表中。
如果資料表中包含 Oracle 資料庫錯誤碼,則 error_validation 函數會傳回TRUE值,且程序邏輯會繼續。如果錯誤碼不包含在資料表中,則函數會傳回FALSE值,且程序邏輯會因例外狀況而結束。
當函數傳回FALSE值時,應用程式的功能領導會手動檢閱錯誤詳細資訊,以判斷其有效性。
然後,新的錯誤代碼會手動新增或不手動新增至資料表。如果錯誤代碼有效並新增至資料表,則下次發生例外狀況時,ream_validation 函數會傳回TRUE值。如果錯誤碼無效,且程序必須在發生例外狀況時失敗,則錯誤碼不會新增至資料表。
技術堆疊
Amazon Aurora PostgreSQL
pgAdmin
Oracle SQL開發人員
工具
Amazon Aurora Postgre SQL-Compatible Edition 是完全受管且ACID合規的關聯式資料庫引擎,可協助您設定、操作和擴展 PostgreSQL 部署。
pgAdmin
是 Postgre 的開放原始碼管理和開發工具SQL。它提供圖形界面,可簡化資料庫物件的建立、維護和使用。 Oracle SQL 開發人員
是免費的整合開發環境,可簡化傳統和雲端部署中 Oracle 資料庫的開發和管理。
史詩
任務 | 描述 | 所需的技能 |
---|---|---|
在 Amazon Aurora Postgre SQL相容資料庫中建立資料表。 | 執行下列 PostgreSQL CREATETABLE
| PostgreSQL 開發人員、Oracle、RDS/Aurora for PostgreSQL |
將 PostgreSQL 錯誤代碼及其對應的 Oracle 資料庫錯誤代碼新增至資料表。 | 執行 PostgreSQL INSERT PostgreSQL 錯誤碼必須使用不同資料類型 (SQLSTATE值) 的字元。Oracle 錯誤碼必須使用數值資料類型 (SQLCODE 值)。 插入陳述式範例:
注意:如果您遇到 Oracle 特定的 Java 資料庫連線 (JDBC) 例外狀況,則必須以一般跨資料庫例外狀況取代這些例外狀況,或切換至 Postgre SQL特定的例外狀況。 | PostgreSQL 開發人員、Oracle、RDS/Aurora for PostgreSQL |
建立 PL/pgSQL 函數以驗證錯誤碼。 | 執行 PostgreSQL CREATEFUNCTION
| PostgreSQL 開發人員、Oracle、RDS/Aurora for PostgreSQL |
手動檢閱 PL/pgSQL 函數記錄的新錯誤代碼。 | 手動檢閱新的錯誤代碼。 如果新的錯誤碼對您的使用案例有效,請執行 PostgreSQL INSERT命令將其新增至 error_codes 資料表。 -或- 如果新的錯誤碼對您的使用案例無效,請勿將其新增至資料表。發生錯誤時,程序邏輯將繼續失敗並結束,但有例外。 | PostgreSQL 開發人員、Oracle、RDS/Aurora for PostgreSQL |
相關資源
附錄 A. PostgreSQL 錯誤碼
資料庫錯誤訊息