使用擴充功能將甲骨文原生函數遷移至 PostgreSQL - AWS 方案指引

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

使用擴充功能將甲骨文原生函數遷移至 PostgreSQL

創建者:皮尼什辛格爾(AWS)

環境:PoC 或試點

來源:數據庫:關係

目標:Amazon RDS

R 型:重新建築

工作負載:甲骨文; 開源

技術:移轉;資料庫

AWS 服務:Amazon EC2; Amazon RDS

Summary

此遷移模式提供 step-by-step 指導,指引將適用於甲骨文資料庫執行個體的 Amazon Relational Database Service 服務 (Amazon RDS) 移轉到 Amazon RDS 版或 Amazon Aurora PostgreSQL 相容版本資料庫,方法是將aws_oracle_extorafce擴充修改為 PostgreSQL () 原生內建程式碼。psql這樣可以節省處理時間。

此模式說明具有大量交易的多 TB Oracle 來源資料庫不會停機的離線手動移轉策略。

遷移程序使用 AWS Schema Conversion Tool (AWS SCT) 搭配aws_oracle_extorafce擴充功能,將 Amazon RDS for Oracle 文資料庫架構的資料庫結構描述轉換為 Amazon RDS 或與 Aurora PostgreSQL 相容的資料庫結構描述。然後將代碼手動更改為 PostgreSQL 支持的本機psql內置代碼。這是因為擴充功能呼叫會影響 PostgreSQL 資料庫伺服器上的程式碼處理,而且並非所有的擴充程式碼都完全投訴或與 PostgreSQL 程式碼相容。

此模式主要著重於使用 AWS SCT 和擴充功能aws_oracle_extorafce. 您可以將已使用的擴充功能轉換為原生 PostgreSQL (psql) 內建插件。然後,您刪除對擴展名的所有引用並相應地轉換代碼。

先決條件和限制

先決條件

  • 有效的 AWS 帳戶 

  • 作業系統 (視窗或 Mac) 或亞馬遜 EC2 執行個體 (啟動並執行) 

  • 奧拉夫

限制

並非所有使用aws_oracle_extorafce擴展的甲骨文函數都可以轉換為本地 PostgreSQL 函數。它可能需要手動返工,以便使用 PostgreSQL 庫進行編譯。

使用 AWS SCT 擴充功能的一個缺點是它在執行和擷取結果時效能降低。它的成本可以從簡單的 PostgreSQL 解釋計劃(語句的執行計劃)中了解甲骨文SYSDATE函數遷移到所有三個代碼(aws_oracle_ext,和psql默認)之間的 PostgreSQL NOW() 函數,如附加文檔中的性能比較檢查部分中所述。orafce

產品版本

  • 資料來源:Amazon RDS for Oracle 文資料庫 10.2 及更新版本 (適用於 10.x)、11 公克 (11.2.0.3.v1 及更高版本) 及最高 12.2、18 c 和 19c (及更高版本),適用於企業版、標準版 1 和標準版 2

  • 目標:Amazon RDS for PostgreSQL 或 Aurora 與 PostgreSQL 相容的資料庫 9.4 及更新版本 (適用於 9.x)、10.x、11.x、12 倍、13.x 和 14.x (及更新版本)

  • AWS SCT:最新版本 (此模式已使用 1.0.632 進行測試)

  • 歐拉菲:最新版本(這種模式與 3.9.0 測試)

架構

源, 技術, 堆棧

  • 一個適用於甲骨文資料庫執行個體的亞馬遜 RDS 版本

目標技術堆疊

  • 具有 11.5 版 Amazon RDS for PostgreSQL 或 Aurora 兼容資料庫執行個體

資料庫遷移架構

下圖表示源甲骨文和目標 PostgreSQL 數據庫之間的數據庫遷移架構。此架構包括 AWS 雲端、虛擬私有雲端 (VPC)、可用區域、私有子網路、Oracle 資料庫的 Amazon RDS、AWS SCT、Amazon RDS 與 PostgreSQL 相容或 Aurora PostgreSQL 相容的資料庫、甲骨文 (aws_oracle_ext和) 的擴充功能,以及結構化查詢語言 (SQLorafce) 檔案。

該過程在下面的列表中說明。
  1. 啟動適用於 Oracle 資料庫執行個體 (來源資料庫) 的 Amazon RDS。

  2. 將 AWS SCT 與aws_oracle_extorafce擴充套件搭配使用,將原始程式碼從甲骨文轉換為 PostreSQL。

  3. 此轉換會產生支援 PostgreSQL 的移轉檔案。

  4. 手動將未轉換的甲骨文擴展代碼轉換為 PostgreSQL () psql 代碼。

  5. 手動轉換會產生支援 PostgreSQL 的轉換後的 .sql 檔案。

  6. 在您的 Amazon RDS 資料庫執行個體 (目標資料庫) 上執行這些 .sql 檔案。

工具

工具

AWS 服務

  • AWS SCT-AWS Schema Conversion Tool (AWS SCT) 會將您現有的資料庫結構描述從一個資料庫引擎轉換為另一個資料庫引擎。您可以轉換關聯式線上交易處理 (OLTP) 結構描述或資料倉儲結構描述。轉換後的結構描述適用於 Amazon RDS for MySQL 資料庫執行個體、Amazon Aurora 資料庫叢集、Amazon RDS for PostgreSQL SQL 資料庫執行個體或 Amazon Redshift 叢集。轉換後的結構描述也可以與 Amazon EC2 執行個體上的資料庫搭配使用,或以資料形式存放在 Amazon S3 儲存貯體中。

    AWS SCT 提供以專案為基礎的使用者界面,可自動將來源資料庫的資料庫結構描述轉換為與目標 Amazon RDS 執行個體相容的格式。 

    您可以使用 AWS SCT 從 Oracle 來源資料庫遷移到前面列出的任何目標。您可以使用 AWS SCT 匯出來源資料庫物件定義,例如結構描述、檢視、預存程序和函數。 

    您可以使用 AWS SCT 將資料從甲骨文轉換為 Amazon RDS for PostgreSQL) 或 Amazon Aurora PostgreSQL 相容版本。 

    在這種模式中,您可以使用 AWS SCT 使用擴充功能和將 Oracle 程式碼轉換並遷移到 PostgreSQLorafceaws_oracle_ext然後手動將擴充功能代碼遷移到psql預設或原生內建程式碼。

  • AWS SCT 擴充套件是一種附加模組,可模擬將物件轉換為目標資料庫時所需的來源資料庫中存在的函數。您必須先轉換資料庫結構描述,才能安裝 AWS SCT 延伸套件。

    轉換資料庫或資料倉儲結構描述時,AWS SCT 會將額外的結構描述新增至目標資料庫。此結構描述會實作來源資料庫的 SQL 系統功能,當您將已轉換的結構描述寫入至目標資料庫時需要這些功能。這個額外的結構描述稱為延伸套件結構描述。

    OLTP 資料庫的擴充套件結構描述會根據來源資料庫來命名。對於 Oracle 資料庫,擴充套件結構描述為AWS_ORACLE_EXT

其他工具

  • Orafce-Orafce 是實現甲骨文兼容功能,數據類型和包的模塊。這是一個具有伯克利源分發(BSD)許可證的開源工具,因此任何人都可以使用它。該orafce模塊對於從甲骨文遷移到 PostgreSQL 非常有用,因為它在 PostgreSQL 中實現了許多甲骨文函數。

Code

有關從 Oracle 到 PostgreSQL 的所有常用和遷移代碼的清單,以避免使用 AWS SCT 擴展程式碼,請參閱隨附的文件。

史诗

任務描述所需技能

建立 Oracle 資料庫執行處理。

從 Amazon RDS 主控台建立適用於甲骨文或 Aurora PostgreSQL 相容的資料庫執行個體。

一般 AWS、DBA

設定安全性群組。

設定輸入和輸出安全性群組。

一般 AWS

建立資料庫。

建立包含所需使用者和綱要的 Oracle 資料庫。

一般 AWS、DBA

創建對象。

創建對象並在模式中插入數據。

DBA
任務描述所需技能

建立資 PostgreSQL 行個體。

從 Amazon RDS 主控台建立適用於 PostgreSQL 的亞馬遜 RDS 或 Amazon Aurora 資料庫執行個體。

一般 AWS、DBA

設定安全性群組。

設定輸入和輸出安全性群組。

一般 AWS

建立資料庫。

使用所需的使用者和結構描述建立 PostgreSQL 資料庫。

一般 AWS、DBA

驗證擴充功能。

請確定 PostgreSQL 資料庫中已正確安裝和設定和設定。aws_oracle_ext orafce

DBA

請確認 PostgreSQL 資料庫可供使用。

請確定 PostgreSQL 資料庫已啟動並執行中。

DBA
任務描述所需技能

安裝 AWS SCT。

安裝最新版本的 AWS SCT。

DBA

設定 AWS SCT。

使用適用於甲骨文 () 和 PostgreSQL () 的 Java 資料庫連線 (ojdbc8.jarJDBC) 驅動程式來設定 AWS SCT。postgresql-42.2.5.jar

DBA

啟用 AWS SCT 擴充套件或範本。

在 AWS SCT 專案設定下,透過 Oracle 資料庫結構描述的aws_oracle_extorafce擴充功能啟用內建函數實作。

DBA

轉換結構描述。

在 AWS SCT 中,選擇「轉換結構描述」,將結構描述從甲骨文轉換為 PostgreSQL,然後產生 .sql 檔案。

DBA
任務描述所需技能

手動轉換代碼。

手動將支援擴充功能的每一行程式碼轉換為psql預設的內建程式碼,如附件文件所述。例如,ORACLE.SYSDATE()AWS_ORACLE_EXT.SYSDATE()或變更為NOW()

DBA

驗證代碼

(選擇性) 透過在 PostgreSQL 資料庫中暫時執行程式碼來驗證每一行程式碼。

DBA

在 PostgreSQL 資料庫中建立物件。

若要在 PostgreSQL 資料庫中建立物件,請執行 AWS SCT 產生並在前兩個步驟中修改的 .sql 檔案。

DBA

相關資源

其他資訊

如需詳細資訊,請遵循詳細指令 (含語法和範例),以手動轉換附加文件中的程式碼。

附件

若要存取與此文件相關聯的其他內容,請解壓縮下列檔案:attachment.zip