

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

# 從 Amazon RDS for Oracle 遷移至 Amazon RDS for MySQL
<a name="migrate-from-amazon-rds-for-oracle-to-amazon-rds-for-mysql"></a>

*Jitender Kumar、Srini Ramaswamy 和 Neha Sharma，Amazon Web Services*

## 總結
<a name="migrate-from-amazon-rds-for-oracle-to-amazon-rds-for-mysql-summary"></a>

此模式提供將 Amazon Relational Database Service (Amazon RDS) for Oracle 資料庫執行個體遷移至 Amazon Web Services (AWS) 上 Amazon RDS for MySQL 資料庫執行個體的指引。模式使用 AWS Database Migration Service (AWS DMS) 和 AWS Schema Conversion Tool (AWS SCT)。 

模式提供處理預存程序遷移的最佳實務。它還涵蓋 和程式碼變更，以支援應用程式層。

## 先決條件和限制
<a name="migrate-from-amazon-rds-for-oracle-to-amazon-rds-for-mysql-prereqs"></a>

**先決條件**
+ 作用中的 AWS 帳戶
+ Amazon RDS for Oracle 來源資料庫。
+ Amazon RDS for MySQL 目標資料庫。來源和目標資料庫應位於相同的虛擬私有雲端 (VPC) 中。如果您使用的是多個 VPCs，或者您必須擁有必要的存取許可。
+ 允許來源和目標資料庫、AWS SCT、應用程式伺服器和 AWS DMS 之間連線的安全群組。
+ 具有在來源資料庫上執行 AWS SCT 所需權限的使用者帳戶。
+ 啟用補充記錄，以在來源資料庫上執行 AWS DMS。

**限制**
+ 來源和目標 Amazon RDS 資料庫大小限制為 64 TB。如需 Amazon RDS 大小資訊，請參閱 [AWS 文件](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Storage.html)。
+ Oracle 對資料庫物件不區分大小寫，但 MySQL 不區分大小寫。AWS SCT 可以在建立物件時處理此問題。不過，需要一些手動工作才能支援全案例不敏感。
+ 此遷移不會使用 MySQL 擴充功能來啟用 Oracle 原生函數。AWS SCT 會處理大多數轉換，但需要一些工作才能手動變更程式碼。
+ 應用程式中需要 Java Database Connectivity (JDBC) 驅動程式變更。

**產品版本**
+ Amazon RDS for Oracle 12.2.0.1 及更新版本。如需目前支援的 RDS for Oracle 版本，請參閱 [AWS 文件](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Oracle.Concepts.database-versions.html)。
+ Amazon RDS for MySQL 8.0.15 及更新版本。如需目前支援的 RDS for MySQL 版本，請參閱 [AWS 文件](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/MySQL.Concepts.VersionMgmt.html)。
+ AWS DMS 3.3.0 版及更新版本。如需 AWS DMS 支援的[來源端點](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Introduction.Sources.html)和[目標端點](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Introduction.Targets.html)的詳細資訊，請參閱 AWS 文件。
+ AWS SCT 1.0.628 版及更新版本。 請參閱 [AWS 文件中的 AWS SCT 來源和目標端點支援矩陣](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html)。

## Architecture
<a name="migrate-from-amazon-rds-for-oracle-to-amazon-rds-for-mysql-architecture"></a>

**來源技術堆疊**
+ Amazon RDS for Oracle。如需詳細資訊，請參閱[使用 Oracle 資料庫做為 AWS DMS 的來源](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Source.Oracle.html)。 

**目標技術堆疊**
+ Amazon RDS for MySQL。如需詳細資訊，請參閱[使用 MySQL 相容資料庫做為 AWS DMS 的目標](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.MySQL.html)。

**遷移架構**

在下圖中，AWS SCT 會從 Amazon RDS for Oracle 來源資料庫複製和轉換結構描述物件，並將物件傳送至 Amazon RDS for MySQL 目標資料庫。AWS DMS 會從來源資料庫複寫資料，並將其傳送至 Amazon RDS for MySQL 執行個體。

![\[部署在私有子網路中的 AWS SCT、AWS DMS 和 Amazon RDS。\]](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/images/pattern-img/e1efa7c2-47c1-4677-80bc-6b19250fc0d6/images/b54a8442-9ab9-4074-b8f6-a08f87fa2f52.jpeg)


## 工具
<a name="migrate-from-amazon-rds-for-oracle-to-amazon-rds-for-mysql-tools"></a>
+ [AWS Data Migration Service](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html) 可協助您將資料存放區遷移至 AWS 雲端，或在雲端和內部部署設定的組合之間進行遷移。
+ [Amazon Relational Database Service (Amazon RDS)](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html) 可協助您在 AWS 雲端中設定、操作和擴展關聯式資料庫。此模式使用 [Amazon RDS for Oracle](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Oracle.html) 和 [Amazon RDS for MySQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_MySQL.html)。
+ [AWS Schema Conversion Tool (AWS SCT)](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/Welcome.html) 會自動將來源資料庫結構描述和大部分自訂程式碼轉換為與目標資料庫相容的格式，以支援異質資料庫遷移。

## 史詩
<a name="migrate-from-amazon-rds-for-oracle-to-amazon-rds-for-mysql-epics"></a>

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


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 驗證來源和目標資料庫版本和引擎。 |  | DBA | 
|  識別目標伺服器執行個體的硬體需求。 |  | DBA、SysAdmin | 
| 識別儲存需求 （儲存類型和容量）。 |  | DBA、SysAdmin | 
| 選擇適當的執行個體類型 （容量、儲存功能、網路功能）。 |  | DBA、SysAdmin | 
| 識別來源和目標資料庫的網路存取安全需求。 |  | DBA、SysAdmin  | 
| 選擇應用程式遷移策略。 | 考慮您是否希望將完全停機時間或部分停機時間用於切換活動。 | DBA、SysAdmin、應用程式擁有者 | 

### 設定基礎設施
<a name="configure-infrastructure"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 建立 VPC 和子網路。 |  | SysAdmin | 
| 建立安全群組和網路存取控制清單 ACLs)。 |  | SysAdmin | 
| 設定和啟動 Amazon RDS for Oracle 執行個體。 |  | DBA、SysAdmin | 
| 設定和啟動 Amazon RDS for MySQL 執行個體。 |  | DBA、SysAdmin | 
| 準備測試案例以驗證程式碼轉換。 | 這將有助於對轉換後的程式碼進行單位測試。 | DBA、開發人員 | 
| 設定 AWS DMS 執行個體。 |  |  | 
| 在 AWS DMS 中設定來源和目標端點。 |  |  | 

### 遷移資料
<a name="migrate-data"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 使用 AWS SCT 產生目標資料庫指令碼。 | 檢查 AWS SCT 轉換之程式碼的準確性。需要一些手動工作。 | DBA、開發人員 | 
| 在 AWS SCT 中，選擇「不區分大小寫」設定。 | 在 AWS SCT 中，選擇專案設定、目標案例敏感度、不區分大小寫。 | DBA、開發人員 | 
| 在 AWS SCT 中，選擇不使用 Oracle 原生函數。 | 在專案設定中，檢查函數 TO\$1CHAR/TO\$1NUMBER/TO\$1DATE。 | DBA、開發人員 | 
| 變更 "sql%notfound" 程式碼。 | 您可能需要手動轉換程式碼。 |  | 
| 查詢預存程序中的資料表和物件 （使用小寫查詢）。 |  | DBA、開發人員 | 
| 完成所有變更後建立主要指令碼，然後在目標資料庫上部署主要指令碼。 |  | DBA、開發人員 | 
| 使用範例資料對預存程序和應用程式呼叫進行單元測試。 |  |  | 
| 清除在單位測試期間建立的資料。 |  | DBA、開發人員 | 
| 捨棄目標資料庫上的外部金鑰限制。 | 載入初始資料需要此步驟。如果您不想捨棄外部金鑰限制，您必須為主要和次要資料表特定的資料建立遷移任務。 | DBA、開發人員 | 
| 在目標資料庫上捨棄主索引鍵和唯一索引鍵。 | 此步驟可為初始載入提供更好的效能。 | DBA、開發人員 | 
| 在來源資料庫上啟用補充記錄。 |  | DBA | 
| 在 AWS DMS 中建立初始載入的遷移任務，然後執行它。 | 選擇 選項以遷移現有資料。 | DBA | 
| 將主索引鍵和外部索引鍵新增至目標資料庫。 | 初始載入後需要新增限制條件。 | DBA、開發人員 | 
| 建立遷移任務以進行持續複寫。 | 持續複寫可讓目標資料庫與來源資料庫保持同步。 | DBA | 

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


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 將 Oracle 原生函數取代為 MySQL 原生函數。 |  | 應用程式擁有者 | 
| 請確定 SQL 查詢中的資料庫物件只使用小寫名稱。 |  | DBA、SysAdmin、應用程式擁有者 | 

### 切換到目標資料庫
<a name="cut-over-to-the-target-database"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 關閉應用程式伺服器。 |  | 應用程式擁有者 | 
| 驗證來源和目標資料庫是否同步。 |  | DBA、應用程式擁有者 | 
| 停止 Amazon RDS for Oracle 資料庫執行個體。 |  | DBA | 
| 停止遷移任務。 | 這會在您完成上一個步驟後自動停止。 | DBA | 
| 將 JDBC 連線從 Oracle 變更為 MySQL。 |  | 應用程式擁有者、DBA | 
| 啟動應用程式。 |  | DBA、SysAdmin、應用程式擁有者 | 

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


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 檢閱並驗證專案文件。 |  | DBA、SysAdmin | 
| 收集遷移時間、手動與工具任務的百分比、節省成本等指標。 |  | DBA、SysAdmin | 
| 停止和刪除 AWS DMS 執行個體。 |  | DBA | 
| 移除來源和目標端點。 |  | DBA | 
| 移除遷移任務。 |  | DBA | 
| 拍攝 Amazon RDS for Oracle 資料庫執行個體的快照。 |  | DBA | 
| 刪除 Amazon RDS for Oracle 資料庫執行個體。 |  | DBA | 
| 關閉並刪除您使用的任何其他臨時 AWS 資源。 |  | DBA、SysAdmin | 
| 關閉專案並提供任何意見回饋。 |  | DBA | 

## 相關資源
<a name="migrate-from-amazon-rds-for-oracle-to-amazon-rds-for-mysql-resources"></a>
+ [AWS DMS](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html)
+ [AWS SCT](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/Welcome.html)
+ [Amazon RDS 定價](https://aws.amazon.com/rds/pricing/)
+ [AWS DMS 入門](https://aws.amazon.com/dms/getting-started/)
+ [Amazon RDS 入門](https://aws.amazon.com/rds/getting-started/)