

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

# 將資料從現場部署 Oracle 資料庫遷移至 Aurora PostgreSQL
<a name="migrate-data-from-an-on-premises-oracle-database-to-aurora-postgresql"></a>

*Michelle Deng 和 Shunan Xiang，Amazon Web Services*

## 總結
<a name="migrate-data-from-an-on-premises-oracle-database-to-aurora-postgresql-summary"></a>

此模式提供從現場部署 Oracle 資料庫到 Amazon Aurora PostgreSQL 相容版本的資料遷移指導。它針對包含具有高資料處理語言 (DML) 活動的大型資料表的多 TB Oracle 資料庫，以停機時間最短的線上資料遷移策略為目標。Oracle Active Data Guard 待命資料庫用作從主要資料庫卸載資料遷移的來源。可在完全載入期間暫停從 Oracle 主要資料庫到待命的複寫，以避免 ORA-01555 錯誤。 

具有資料類型 NUMBER 的主索引鍵 PKs) 或外部索引鍵 (FKs) 中的資料表資料欄通常用於在 Oracle 中存放整數。我們建議您在 PostgreSQL 中將這些轉換為 INT 或 BIGINT，以獲得更好的效能。您可以使用 AWS Schema Conversion Tool (AWS SCT) 來變更 PK 和 FK 資料欄的預設資料類型映射。（如需詳細資訊，請參閱 AWS 部落格文章[將 NUMBER 資料類型從 Oracle 轉換為 PostgreSQL](https://aws.amazon.com/blogs/database/convert-the-number-data-type-from-oracle-to-postgresql-part-2/)。) 此模式中的資料遷移使用 AWS Database Migration Service (AWS DMS) 進行完全載入和變更資料擷取 (CDC)。

您也可以使用此模式將內部部署 Oracle 資料庫遷移至 PostgreSQL 的 Amazon Relational Database Service (Amazon RDS)，或在 Amazon Elastic Compute Cloud (Amazon EC2) 上託管的 Oracle 資料庫遷移至 Amazon RDS for PostgreSQL 或 Aurora PostgreSQL 相容。

## 先決條件和限制
<a name="migrate-data-from-an-on-premises-oracle-database-to-aurora-postgresql-prereqs"></a>

**先決條件**
+ 作用中的 AWS 帳戶
+ 已設定 Active Data Guard 待命的現場部署資料中心中的 Oracle 來源資料庫 
+ 在內部部署資料中心和 AWS 雲端之間設定的 AWS Direct Connect
+ 熟悉[使用 Oracle 資料庫做為 AWS DMS 的來源](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html)
+ 熟悉[使用 PostgreSQL 資料庫做為 AWS DMS 的目標](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.PostgreSQL.html)

**限制**
+ Amazon Aurora 資料庫叢集最多可建立 128 TiB 的儲存體。Amazon RDS for PostgreSQL 資料庫執行個體最多可建立 64 TiB 的儲存體。如需最新的儲存資訊，請參閱 AWS 文件中的[Amazon Aurora 儲存和可靠性](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.Overview.StorageReliability.html)以及[Amazon RDS 資料庫執行個體儲存](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Storage.html)。

**產品版本**
+ AWS DMS 支援 10.2 版和更新版本 （適用於 10.x 版）、11g 和最高 12.2、18c 和 19c 版的所有 Oracle 資料庫版本。如需支援版本的最新清單，請參閱 [AWS 文件中的使用 Oracle 資料庫做為 AWS DMS 的來源](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html)。

## Architecture
<a name="migrate-data-from-an-on-premises-oracle-database-to-aurora-postgresql-architecture"></a>

**來源技術堆疊**
+ 已設定 Oracle Active Data Guard 待命的現場部署 Oracle 資料庫 

**目標技術堆疊**
+ Aurora PostgreSQL 相容 

**資料遷移架構**

![\[將 Oracle 資料庫遷移至 Aurora PostgreSQL 相容\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/images/pattern-img/49f9b03e-6d33-4ac0-94ad-d3e6d02e6d63/images/0038a36b-fb7d-4f2d-8376-8d38290b0736.png)


## 工具
<a name="migrate-data-from-an-on-premises-oracle-database-to-aurora-postgresql-tools"></a>
+ **AWS DMS** - [AWS Database Migration Service](https://docs.aws.amazon.com/dms/index.html) (AWS DMS) 支援數個來源和目標資料庫。如需支援的 [Oracle 來源和目標資料庫版本和版本的清單，請參閱 AWS DMS 文件中的使用 Oracle 資料庫做為](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html) AWS DMS 的來源。如果 AWS DMS 不支援來源資料庫，您必須選取另一種方法來遷移階段 6 中的資料 (*在範例*區段中）。**重要注意事項：**由於這是異質遷移，因此您必須先檢查資料庫是否支援商用off-the-shelf(COTS) 應用程式。如果應用程式是 COTS，請先諮詢廠商，確認支援 Aurora PostgreSQL 相容，然後再繼續。如需詳細資訊，請參閱 [AWS 文件中的 AWS DMS Step-by-Step遷移演練](https://docs.aws.amazon.com/dms/latest/sbs/DMS-SBS-Welcome.html)。
+ **AWS SCT** - [AWS Schema Conversion Tool](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/Welcome.htm) (AWS SCT) 會自動將來源資料庫結構描述和大部分自訂程式碼轉換為與目標資料庫相容的格式，以促進異質資料庫遷移。工具轉換的自訂程式碼包含檢視、預存程序和函數。工具無法自動轉換的任何程式碼都會清楚標示，讓您可以自行轉換。 

## 史詩
<a name="migrate-data-from-an-on-premises-oracle-database-to-aurora-postgresql-epics"></a>

### 規劃遷移
<a name="plan-the-migration"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 驗證來源和目標資料庫版本。 |  | DBA | 
| 安裝 AWS SCT 和驅動程式。 |  | DBA | 
| 新增並驗證 AWS SCT 先決條件使用者和 grant-source 資料庫。 |  | DBA | 
| 為工作負載建立 AWS SCT 專案，並連線至來源資料庫。 |  | DBA | 
| 產生評估報告並評估可行性。 |  | DBA、應用程式擁有者 | 

### 準備目標資料庫
<a name="prepare-the-target-database"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 建立 Aurora PostgreSQL 相容目標資料庫。 |  | DBA | 
| 從來源資料庫擷取使用者、角色和授予清單。 |  | DBA | 
| 將現有的資料庫使用者映射至新的資料庫使用者。 |  | 應用程式擁有者 | 
| 在目標資料庫中建立使用者。 |  | DBA | 
| 將上一個步驟的角色套用至目標 Aurora PostgreSQL 相容資料庫。 |  | DBA | 
| 從來源資料庫檢閱資料庫選項、參數、網路檔案和資料庫連結，並評估其對目標資料庫的適用性。 |  | DBA、應用程式擁有者 | 
| 將任何相關設定套用至目標資料庫。 |  | DBA | 

### 準備進行資料庫物件程式碼轉換
<a name="prepare-for-database-object-code-conversion"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 設定目標資料庫的 AWS SCT 連線。 |  | DBA | 
| 在 AWS SCT 中轉換結構描述，並將轉換後的程式碼儲存為 .sql 檔案。 |  | DBA、應用程式擁有者 | 
| 手動轉換任何無法自動轉換的資料庫物件。 |  | DBA、應用程式擁有者 | 
| 最佳化資料庫程式碼轉換。 |  | DBA、應用程式擁有者 | 
| 根據物件類型，將 .sql 檔案分成多個 .sql 檔案。 |  | DBA、應用程式擁有者 | 
| 驗證目標資料庫中的 SQL 指令碼。 |  | DBA、應用程式擁有者 | 

### 準備資料遷移
<a name="prepare-for-data-migration"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 建立 AWS DMS 複寫執行個體。 |  | DBA | 
| 建立來源和目標端點。 | 如果 PKs和 FKs的資料類型從 Oracle 中的 NUMBER 轉換為 PostgreSQL 中的 BIGINT，請考慮在建立來源端點`numberDataTypeScale=-2`時指定連線屬性。 | DBA | 

### 遷移資料 – 完全載入
<a name="migrate-data-ndash-full-load"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 在目標資料庫中建立結構描述和資料表。 |  | DBA | 
|  透過分組資料表或根據資料表大小分割大型資料表來建立 AWS DMS 完全載入任務。 |  | DBA | 
| 短暫停止來源 Oracle 資料庫上的應用程式。 |  | 應用程式擁有者 | 
| 確認 Oracle 待命資料庫與主要資料庫同步，並停止從主要資料庫到待命資料庫的複寫。 |  | DBA、應用程式擁有者 | 
| 在來源 Oracle 資料庫上啟動應用程式。 |  | 應用程式擁有者 | 
| 從 Oracle 待命資料庫平行啟動 AWS DMS 完全載入任務至 Aurora PostgreSQL 相容資料庫。 |  | DBA | 
| 在完全載入完成後建立 PKs 和次要索引。 |  | DBA | 
| 驗證資料。 |  | DBA | 

### 遷移資料 – CDC
<a name="migrate-data-ndash-cdc"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 在 Oracle 待命與主要資料庫同步時，以及在先前任務中重新啟動應用程式之前，透過指定自訂 CDC 開始時間或系統變更號碼 (SCN) 來建立 AWS DMS 持續複寫任務。 |  | DBA | 
| 平行啟動 AWS DMS 任務，將 Oracle 待命資料庫的持續變更複寫至 Aurora PostgreSQL 相容資料庫。 |  | DBA | 
| 重新建立從 Oracle 主要資料庫到待命資料庫的複寫。 |  | DBA | 
| 監控日誌，並在目標 Aurora PostgreSQL 相容資料庫與來源 Oracle 資料庫幾乎同步時停止 Oracle 資料庫上的應用程式。 |  | DBA、應用程式擁有者 | 
| 當目標與來源 Oracle 資料庫完全同步時，停止 AWS DMS 任務。 |  | DBA | 
| 建立 FKs並驗證目標資料庫中的資料。 |  | DBA | 
| 在目標資料庫中建立函數、檢視、觸發程序、序列和其他物件類型。 |  | DBA | 
| 在目標資料庫中套用角色授予。 |  | DBA | 

### 遷移應用程式
<a name="migrate-the-application"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 使用 AWS SCT 來分析和轉換應用程式程式碼內的 SQL 陳述式。 |  | 應用程式擁有者 | 
| 在 AWS 上建立新的應用程式伺服器。 |  | 應用程式擁有者 | 
| 將應用程式碼遷移至新的伺服器。 |  | 應用程式擁有者 | 
| 設定目標資料庫和驅動程式的應用程式伺服器。 |  | 應用程式擁有者 | 
| 修正應用程式中來源資料庫引擎特有的任何程式碼。 |  | 應用程式擁有者 | 
| 最佳化目標資料庫的應用程式碼。 |  | 應用程式擁有者 | 

### 剪下
<a name="cut-over"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 將新的應用程式伺服器指向目標資料庫。 |  | DBA、應用程式擁有者 | 
| 執行健全度檢查。 |  | DBA、應用程式擁有者 | 
| 上線。 |  | DBA、應用程式擁有者 | 

### 關閉專案
<a name="close-the-project"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 關閉臨時 AWS 資源。 |  | DBA，系統管理員 | 
| 檢閱並驗證專案文件。 |  | DBA、應用程式擁有者 | 
| 收集遷移時間、手動與工具使用的百分比、節省成本和類似資料的指標。 |  | DBA、應用程式擁有者 | 
| 關閉專案並提供意見回饋。 |  | DBA、應用程式擁有者 | 

## 相關資源
<a name="migrate-data-from-an-on-premises-oracle-database-to-aurora-postgresql-resources"></a>

**參考**
+ [與 Aurora PostgreSQL 相容之 Oracle 資料庫：遷移手冊](https://d1.awsstatic.com/whitepapers/Migration/oracle-database-amazon-aurora-postgresql-migration-playbook.pdf) 
+ [將 Amazon RDS for Oracle Database遷移至 Amazon Aurora MySQL](https://docs.aws.amazon.com/dms/latest/sbs/chap-rdsoracle2aurora.html)
+ [AWS DMS 網站](https://aws.amazon.com/dms/)
+ [AWS DMS 文件](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html)
+ [AWS SCT 網站](https://aws.amazon.com/dms/schema-conversion-tool/)
+ [AWS SCT 文件](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html)
+ [從 Oracle 遷移至 Amazon Aurora](https://aws.amazon.com/getting-started/projects/migrate-oracle-to-amazon-aurora/)

**教學課程**
+ [AWS DMS 入門](https://aws.amazon.com/dms/getting-started/) 
+ [Amazon RDS 入門](https://aws.amazon.com/rds/getting-started/)
+ [AWS Database Migration Service Step-by-Step演練](https://docs.aws.amazon.com/dms/latest/sbs/dms-sbs-welcome.html)