將 Oracle 資料庫錯誤碼遷移至 Amazon Aurora Postgre SQL- 相容資料庫 - AWS 方案指引

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

將 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相容資料庫工作流程範例:

Aurora Postgre SQL相容資料庫的資料錯誤碼驗證和處理。

該圖顯示以下工作流程:

  1. 資料表會保留 Oracle 資料庫錯誤碼和分類,以及其等效 PostgreSQL 錯誤碼和分類。資料表包含 valid_error 資料欄,可分類特定預先定義的錯誤碼是否有效。

  2. 當 PL/pgSQL 函數 (func_processdata) 擲回例外狀況時,它會叫用第二個 PL/pgSQL 函數 (error_validation )。

  3. error_validation 函數接受 Oracle 資料庫錯誤碼作為輸入引數。然後,函數會對照資料表檢查傳入的錯誤碼,以查看該錯誤是否包含在資料表中。

  4. 如果資料表中包含 Oracle 資料庫錯誤碼,則 error_validation 函數會傳回TRUE值,且程序邏輯會繼續。如果錯誤碼不包含在資料表中,則函數會傳回FALSE值,且程序邏輯會因例外狀況而結束。

  5. 當函數傳回FALSE值時,應用程式的功能領導會手動檢閱錯誤詳細資訊,以判斷其有效性。

  6. 然後,新的錯誤代碼會手動新增或不手動新增至資料表。如果錯誤代碼有效並新增至資料表,則下次發生例外狀況時,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命令:

( source_error_code numeric NOT NULL, target_error_code character varying NOT NULL, valid_error character varying(1) NOT NULL );
PostgreSQL 開發人員、Oracle、RDS/Aurora for PostgreSQL

將 PostgreSQL 錯誤代碼及其對應的 Oracle 資料庫錯誤代碼新增至資料表。

執行 PostgreSQL INSERT命令,將所需的錯誤碼值新增至 error_codes 資料表。

PostgreSQL 錯誤碼必須使用不同資料類型 (SQLSTATE值) 的字元。Oracle 錯誤碼必須使用數值資料類型 (SQLCODE 值)。

插入陳述式範例:

insert into error_codes values (-1817,'22007','Y'); insert into error_codes values (-1816,'22007','Y'); insert into error_codes values (-3114,'08006','N');

注意:如果您遇到 Oracle 特定的 Java 資料庫連線 (JDBC) 例外狀況,則必須以一般跨資料庫例外狀況取代這些例外狀況,或切換至 Postgre SQL特定的例外狀況。

PostgreSQL 開發人員、Oracle、RDS/Aurora for PostgreSQL

建立 PL/pgSQL 函數以驗證錯誤碼。

執行 PostgreSQL CREATEFUNCTION命令來建立 PL/pgSQL 函數。請確定 函數執行下列動作:

  • 接受程式擲回的 Oracle 錯誤碼。

  • 檢查 error_codes 資料表中是否存在錯誤碼。

  • 根據錯誤碼是否出現在中繼資料資料表中,傳回 TRUEFALSE值。

PostgreSQL 開發人員、Oracle、RDS/Aurora for PostgreSQL

手動檢閱 PL/pgSQL 函數記錄的新錯誤代碼。

手動檢閱新的錯誤代碼。

如果新的錯誤碼對您的使用案例有效,請執行 PostgreSQL INSERT命令將其新增至 error_codes 資料表。

-或-

如果新的錯誤碼對您的使用案例無效,請勿將其新增至資料表。發生錯誤時,程序邏輯將繼續失敗並結束,但有例外。

PostgreSQL 開發人員、Oracle、RDS/Aurora for PostgreSQL

相關資源

附錄 A. PostgreSQL 錯誤碼 (PostgreSQL 文件)

資料庫錯誤訊息 (Oracle 資料庫文件)