本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用延伸模組將 Oracle 原生函數遷移至 PostgreSQL
Pinesh Singal,Amazon Web Services
Summary
此遷移模式提供step-by-step指引,透過修改 aws_oracle_ext和orafce擴充功能至 PostgreSQL () 原生內建程式碼,將 Amazon Relational Database Service (Amazon RDSpsql) for Oracle 資料庫執行個體遷移至 Amazon RDS for PostgreSQL 或 Amazon Aurora PostgreSQL 相容版本資料庫。這可節省處理時間。
模式說明離線手動遷移策略,多 TB Oracle 來源資料庫具有大量交易時不會停機。
遷移程序使用 AWS Schema Conversion Tool (AWS SCT) 搭配 aws_oracle_ext和 orafce擴充功能,將 Amazon RDS for Oracle 資料庫結構描述轉換為 Amazon RDS for PostgreSQL 或 Aurora PostgreSQL 相容資料庫結構描述。然後,程式碼會手動變更為 PostgreSQL 支援的原生psql內建程式碼。這是因為延伸呼叫會影響 PostgreSQL 資料庫伺服器上的程式碼處理,而且並非所有延伸程式碼都完全抱怨或與 PostgreSQL 程式碼相容。
此模式主要著重於使用 AWS SCT 和擴充功能 aws_oracle_ext 和 手動遷移 SQL 程式碼orafce。您可以將已使用的擴充功能轉換為原生 PostgreSQL (psql) 內建。然後,您移除延伸模組的所有參考,並相應地轉換程式碼。
先決條件和限制
先決條件
- 作用中的 AWS 帳戶 
- 作業系統 (Windows 或 Mac) 或 Amazon EC2 執行個體 (啟動和執行中) 
- Orafce 
限制
並非所有使用 aws_oracle_ext或 orafce擴充功能的 Oracle 函數都可以轉換為原生 PostgreSQL 函數。它可能需要手動重新作業,以便使用 PostgreSQL 程式庫進行編譯。
使用 AWS SCT 擴充功能的一個缺點是執行和擷取結果時效能緩慢。您可以從 Oracle SYSDATE函數遷移到所有三個代碼 (orafce、 和 psql 預設) 之間的 PostgreSQL NOW()函數的簡單 PostgreSQL EXPLAIN 計劃aws_oracle_ext,如隨附文件中的效能比較檢查一節所述。
產品版本
- Source:Amazon RDS for Oracle 資料庫 10.2 和更新版本 (適用於 10.x)、11g (11.2.0.3.v1 和更新版本),以及 Enterprise Edition、Standard Edition、Standard Edition 1 和 Standard Edition 2 最多 12.2、18c 和 19c (和更新版本) 
- 目標:Amazon RDS for PostgreSQL 或 Aurora PostgreSQL 相容資料庫 9.4 及更新版本 (適用於 9.x)、10.x、11.x、12.x、13.x 及 14.x (及更新版本) 
- AWS SCT:最新版本 (此模式已使用 1.0.632 進行測試) 
- Orafce:最新版本 (此模式已使用 3.9.0 進行測試) 
架構
來源技術堆疊
- 版本為 12.1.0.2.v18 的 Amazon RDS for Oracle 資料庫執行個體 
目標技術堆疊
- 具有 11.5 版的 Amazon RDS for PostgreSQL 或 Aurora PostgreSQL 相容資料庫執行個體 
資料庫遷移架構
下圖代表來源 Oracle 和目標 PostgreSQL 資料庫之間的資料庫遷移架構。架構涉及 AWS Cloud、虛擬私有雲端 (VPC)、可用區域、私有子網路、Amazon RDS for Oracle 資料庫、AWS SCT、Amazon RDS for PostgreSQL 或 Aurora PostgreSQL 相容資料庫、Oracle (aws_oracle_ext 和 orafce) 擴充功能,以及結構化查詢語言 (SQL) 檔案。

- 啟動 Amazon RDS for Oracle 資料庫執行個體 (來源資料庫)。 
- 使用 AWS SCT 搭配 - aws_oracle_ext和- orafce延伸套件,將原始碼從 Oracle 轉換為 PostreSQL。
- 轉換會產生 PostgreSQL 支援的遷移 .sql 檔案。 
- 手動將未轉換的 Oracle 延伸程式碼轉換為 PostgreSQL ( - psql) 程式碼。
- 手動轉換會產生 PostgreSQL 支援的轉換 .sql 檔案。 
- 在 Amazon RDS for PostgreSQL 資料庫執行個體 (目標資料庫) 上執行這些 .sql 檔案。 
工具
工具
AWS 服務
- AWS SCT - AWS Schema Conversion Tool (AWS SCT) 會將您現有的資料庫結構描述從一個資料庫引擎轉換為另一個資料庫引擎。您可以轉換關聯式線上交易處理 (OLTP) 結構描述或資料倉儲結構描述。轉換後的結構描述適用於 Amazon RDS for MySQL 資料庫執行個體、Amazon Aurora 資料庫叢集、Amazon RDS for PostgreSQL 資料庫執行個體或 Amazon Redshift 叢集。轉換後的結構描述也可以與 Amazon EC2 執行個體上的資料庫搭配使用,或儲存為 Amazon S3 儲存貯體中的資料。 - AWS SCT 提供專案型使用者介面,可自動將來源資料庫的資料庫結構描述轉換為與您目標 Amazon RDS 執行個體相容的格式。 - 您可以使用 AWS SCT 從 Oracle 來源資料庫遷移至上述任何目標。您可以使用 AWS SCT 匯出來源資料庫物件定義,例如結構描述、檢視、預存程序和函數。 - 您可以使用 AWS SCT 將資料從 Oracle 轉換為 Amazon RDS for PostgreSQL 或 Amazon Aurora PostgreSQL 相容版本。 - 在此模式中,您可以使用 AWS SCT,使用延伸模組 和 將 Oracle 程式碼轉換和遷移至 PostgreSQL - aws_oracle_ext- orafce,並手動將延伸模組程式碼遷移至- psql預設或原生內建程式碼。
- AWS SCT 延伸套件是一種附加元件模組,可模擬來源資料庫中存在的函數,而這些函數在將物件轉換為目標資料庫時需要。您需要轉換資料庫結構描述,才能安裝 AWS SCT 延伸套件。 - 當您轉換資料庫或資料倉儲結構描述時,AWS SCT 會將額外的結構描述新增至目標資料庫。此結構描述會實作來源資料庫的 SQL 系統功能,當您將已轉換的結構描述寫入至目標資料庫時需要這些功能。這個額外的結構描述稱為延伸套件結構描述。 - OLTP 資料庫的延伸套件結構描述會根據來源資料庫命名。對於 Oracle 資料庫,延伸套件結構描述為 - AWS_ORACLE_EXT。
其他工具
- Orafce - – Orafce 是實作 Oracle 相容函數、資料類型和套件的模組。這是具有 Berkeley 來源分佈 (BSD) 授權的開放原始碼工具,因此任何人都可以使用它。 - orafce模組適用於從 Oracle 遷移到 PostgreSQL,因為它在 PostgreSQL 中實作了許多 Oracle 函數。
Code
如需從 Oracle 到 PostgreSQL 的所有常用和遷移程式碼清單,以避免使用 AWS SCT 延伸程式碼,請參閱隨附的文件。
史詩
| 任務 | 描述 | 所需的技能 | 
|---|---|---|
| 建立 Oracle 資料庫執行個體。 | 從 Amazon RDS 主控台建立 Amazon RDS for Oracle 或 Aurora PostgreSQL 相容資料庫執行個體。 | 一般 AWS、DBA | 
| 設定安全群組。 | 設定傳入和傳出安全群組。 | 一般 AWS | 
| 建立資料庫。 | 使用所需的使用者和結構描述建立 Oracle 資料庫。 | 一般 AWS、DBA | 
| 建立物件。 | 在結構描述中建立物件和插入資料。 | DBA | 
| 任務 | 描述 | 所需的技能 | 
|---|---|---|
| 建立 PostgreSQL 資料庫執行個體。 | 從 Amazon RDS 主控台建立 Amazon RDS for PostgreSQL 或 Amazon Aurora PostgreSQL 資料庫執行個體。 | 一般 AWS、DBA | 
| 設定安全群組。 | 設定傳入和傳出安全群組。 | 一般 AWS | 
| 建立資料庫。 | 使用所需的使用者和結構描述建立 PostgreSQL 資料庫。 | 一般 AWS、DBA | 
| 驗證擴充功能。 | 確定 | DBA | 
| 驗證 PostgreSQL 資料庫是否可用。 | 確定 PostgreSQL 資料庫已啟動並執行。 | DBA | 
| 任務 | 描述 | 所需的技能 | 
|---|---|---|
| 安裝 AWS SCT。 | 安裝最新版本的 AWS SCT。 | DBA | 
| 設定 AWS SCT。 | 使用適用於 Oracle () 和 PostgreSQL () 的 Java Database Connectivity (JDBC | DBA | 
| 啟用 AWS SCT 延伸套件或範本。 | 在 AWS SCT 專案設定下,使用 Oracle 資料庫結構描述的  | DBA | 
| 轉換結構描述。 | 在 AWS SCT 中,選擇轉換結構描述,將結構描述從 Oracle 轉換為 PostgreSQL,並產生 .sql 檔案。 | DBA | 
| 任務 | 描述 | 所需的技能 | 
|---|---|---|
| 手動轉換程式碼。 | 手動將每行延伸支援程式碼轉換為 | DBA | 
| 驗證程式碼 | (選用) 在 PostgreSQL 資料庫中暫時執行程式碼,以驗證每一行程式碼。 | DBA | 
| 在 PostgreSQL 資料庫中建立物件。 | 若要在 PostgreSQL 資料庫中建立物件,請執行由 AWS SCT 產生並在前兩個步驟中修改的 .sql 檔案。 | DBA | 
相關資源
- 資料庫 
- AWS SCT 
- AWS SCT 的延伸模組 
其他資訊
如需詳細資訊,請遵循詳細的命令搭配語法和範例,以手動轉換附加文件中的程式碼。
附件
若要存取與本文件相關聯的其他內容,請解壓縮下列檔案: attachment.zip