

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

# 使用 SharePlex 和 AWS DMS 從 Oracle 8i 或 9i 遷移至 Amazon RDS for PostgreSQL
<a name="migrate-from-oracle-8i-or-9i-to-amazon-rds-for-postgresql-using-shareplex-and-aws-dms"></a>

*Kumar Babu P G，Amazon Web Services*

## 總結
<a name="migrate-from-oracle-8i-or-9i-to-amazon-rds-for-postgresql-using-shareplex-and-aws-dms-summary"></a>

此模式說明如何將內部部署 Oracle 8i 或 9i 資料庫遷移至 Amazon Relational Database Service (Amazon RDS) for PostgreSQL 或 Amazon Aurora PostgreSQL。AWS Database Migration Service (AWS DMS) 不支援 Oracle 8i 或 9i 作為來源，因此 Quest SharePlex 會將內部部署 8i 或 9i 資料庫的資料複寫到與 AWS DMS 相容的中繼 Oracle 資料庫 (Oracle 10g 或 11g)。

從中繼 Oracle 執行個體，使用 AWS Schema Conversion Tool (AWS SCT) 和 AWS DMS，將結構描述和資料遷移至 AWS 上的 PostgreSQL 資料庫。此方法有助於將資料從來源 Oracle 資料庫持續串流到具有最小複寫延遲的目標 PostgreSQL 資料庫執行個體。在此實作中，停機時間僅限於建立或驗證目標 PostgreSQL 資料庫上所有外部金鑰、觸發條件和序列所需的時間長度。

遷移使用已安裝 Oracle 10g 或 11g 的 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體來託管來源 Oracle 資料庫的變更。AWS DMS 使用此中繼 Oracle 執行個體做為來源，將資料串流至 Amazon RDS for PostgreSQL 或 Aurora PostgreSQL。資料複寫可以從現場部署 Oracle 資料庫暫停並繼續到中繼 Oracle 執行個體。它也可以暫停並繼續從中繼 Oracle 執行個體到目標 PostgreSQL 資料庫，以便您可以使用 AWS DMS 資料驗證或自訂資料驗證工具來驗證資料。

## 先決條件和限制
<a name="migrate-from-oracle-8i-or-9i-to-amazon-rds-for-postgresql-using-shareplex-and-aws-dms-prereqs"></a>

**先決條件**
+ 作用中的 AWS 帳戶
+ 內部部署資料中心中的來源 Oracle 8i 或 9i 資料庫 
+ 在內部部署資料中心和 AWS 之間設定的 AWS Direct Connect 
+ 在本機電腦或安裝 AWS SCT 的 EC2 執行個體上安裝的 AWS SCT 連接器的 Java Database Connectivity (JDBC) 驅動程式
+ 熟悉[使用 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)
+ 熟悉 Quest SharePlex 資料複寫

 

**限制**
+ 資料庫大小限制為 64 TB
+ 內部部署 Oracle 資料庫必須是 Enterprise Edition

 

**產品版本**
+ 來源資料庫的 Oracle 8i 或 9i
+ 適用於中繼資料庫的 Oracle 10g 或 11g 
+ PostgreSQL 9.6 或更新版本

## Architecture
<a name="migrate-from-oracle-8i-or-9i-to-amazon-rds-for-postgresql-using-shareplex-and-aws-dms-architecture"></a>

**來源技術堆疊**
+ Oracle 8i 或 9i 資料庫 
+ Quest SharePlex 

 

**目標技術堆疊**
+ Amazon RDS for PostgreSQL 或 Aurora PostgreSQL 

** **

**來源和目標架構**

![](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/patterns/images/pattern-img/b6c30668-fc2e-4293-a59a-e01fd151f4bb/images/25082670-0bf3-4b20-8c80-99c6633b046f.png)


## 工具
<a name="migrate-from-oracle-8i-or-9i-to-amazon-rds-for-postgresql-using-shareplex-and-aws-dms-tools"></a>
+ **AWS DMS** – [AWS Database Migration Service](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_GettingStarted.html) (AWS DMS) 可協助您快速安全地遷移資料庫。來源資料庫在遷移期間保持完全運作，將依賴資料庫的應用程式停機時間降到最低。AWS DMS 可以在最廣泛使用的商業和開放原始碼資料庫之間遷移您的資料。 
+ **AWS SCT** – [AWS Schema Conversion Tool](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html) (AWS SCT) 會自動將來源資料庫結構描述和大部分資料庫程式碼物件，包括檢視、預存程序和函數，轉換為與目標資料庫相容的格式，讓異質資料庫遷移成為可預測。無法自動轉換的物件會清楚標示，以便手動轉換以完成遷移。AWS SCT 也可以掃描應用程式原始碼以取得內嵌 SQL 陳述式，並將其轉換為資料庫結構描述轉換專案的一部分。在此過程中，AWS SCT 會透過將舊版 Oracle 和 SQL Server 函數轉換為其 AWS 對等函數來執行雲端原生程式碼最佳化，協助您在遷移資料庫的同時現代化應用程式。當結構描述轉換完成時，AWS SCT 可以使用內建的資料遷移代理程式，協助將資料從各種資料倉儲遷移到 Amazon Redshift。
+ **Quest SharePlex** – [Quest SharePlex](https://www.quest.com/register/120420/?gclid=Cj0KCQiA6IHwBRCJARIsALNjViVSt9fHqAsf9XbWkoCwKKyQqollR_5kSxNhBagh9s3spQT4IQCaVy0aAmCnEALw_wcB) 是一種 Oracle-to-Oracle 資料複寫工具，可在最短的停機時間下移動資料，而不會遺失資料。

## 史詩
<a name="migrate-from-oracle-8i-or-9i-to-amazon-rds-for-postgresql-using-shareplex-and-aws-dms-epics"></a>

### 建立 EC2 執行個體並安裝 Oracle
<a name="create-the-ec2-instance-and-install-oracle"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 設定 Amazon EC2 的網路。 | 建立虛擬私有雲端 (VPC)、子網路、網際網路閘道、路由表和安全群組。 | AWS SysAdmin | 
| 建立新的 EC2 執行個體。 | 選取 EC2 執行個體的 Amazon Machine Image (AMI)。選擇執行個體大小並設定執行個體詳細資訊：執行個體數量 (1)、上一個步驟的 VPC 和子網路、自動指派公有 IP 和其他選項。新增儲存體、設定安全群組，以及啟動執行個體。出現提示時，請建立並儲存下一個步驟的金鑰對。 | AWS SysAdmin | 
| 在 EC2 執行個體上安裝 Oracle。 | 取得授權和必要的 Oracle 二進位檔，並在 EC2 執行個體上安裝 Oracle 10g 或 11g。 | DBA | 

### 在 EC2 執行個體上設定 SharePlex 並設定資料複寫
<a name="set-up-shareplex-on-an-ec2-instance-and-configure-data-replication"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 設定 SharePlex。 | 建立 Amazon EC2 執行個體並安裝與 Oracle 8i 或 9i 相容的 SharePlex 二進位檔。 | AWS SysAdmin、DBA | 
| 設定資料複寫。 | 遵循 SharePlex 最佳實務，設定從內部部署 Oracle 8i/9i 資料庫到 Oracle 10g/11g 執行個體的資料複寫。 | DBA | 

### 將 Oracle 資料庫結構描述轉換為 PostgreSQL
<a name="convert-the-oracle-database-schema-to-postgresql"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 設定 AWS SCT。 | 建立新的報告，然後連接至 Oracle 做為來源，而 PostgreSQL 做為目標。在專案設定中，開啟 SQL 指令碼索引標籤，並將目標 SQL 指令碼變更為多個檔案。 | DBA | 
| 轉換 Oracle 資料庫結構描述。 | 在動作索引標籤中，選擇產生報告、轉換結構描述，然後儲存為 SQL。 | DBA | 
| 修改 AWS SCT 產生的 SQL 指令碼。 |  | DBA | 

### 建立和設定 Amazon RDS 資料庫執行個體
<a name="create-and-configure-the-amazon-rds-db-instance"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 建立 Amazon RDS 資料庫執行個體。 | 在 Amazon RDS 主控台中，建立新的 PostgreSQL 資料庫執行個體。 | AWS SysAdmin、DBA | 
| 設定資料庫執行個體。 | 指定資料庫引擎版本、資料庫執行個體類別、異地同步備份部署、儲存類型和配置的儲存。輸入資料庫執行個體識別符、主要使用者名稱和主要密碼。 | AWS SysAdmin、DBA | 
| 設定網路和安全性。 | 指定 VPC、子網路群組、公有可存取性、可用區域偏好設定和安全群組。 | AWS SysAdmin、DBA | 
| 設定資料庫選項。 | 指定資料庫名稱、連接埠、參數群組、加密和主金鑰。 | AWS SysAdmin、DBA | 
| 設定備份。 | 指定備份保留期、備份時段、開始時間、持續時間，以及是否要將標籤複製到快照。 | AWS SysAdmin、DBA | 
| 設定監控選項。 | 啟用或停用增強型監控和效能洞察。 | AWS SysAdmin、DBA | 
| 設定維護選項。 | 指定自動次要版本升級、維護時段，以及開始日期、時間和持續時間。 | AWS SysAdmin、DBA | 
| 從 AWS SCT 執行預遷移指令碼。 | 在 Amazon RDS 執行個體上執行這些指令碼：create\_database.sql、create\_sequence.sql、create\_table.sql、create\_view.sql 和 create\_function.sql。 | AWS SysAdmin、DBA | 

### 使用 AWS DMS 遷移資料
<a name="migrate-data-by-using-aws-dms"></a>


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 在 AWS DMS 中建立複寫執行個體。 | 完成名稱、執行個體類別、VPC （與 EC2 執行個體相同）、異地同步備份和公有可存取性的欄位。在進階組態區段中，指定配置的儲存、子網路群組、可用區域、VPC 安全群組和 AWS Key Management Service (AWS KMS) 根金鑰。 | AWS SysAdmin、DBA | 
| 建立來源資料庫端點。 | 指定端點名稱、類型、來源引擎 (Oracle)、伺服器名稱 (Amazon EC2 私有 DNS 名稱）、連接埠、SSL 模式、使用者名稱、密碼、SID、VPC （指定具有複寫執行個體的 VPC) 和複寫執行個體。若要測試連線，請選擇執行測試，然後建立端點。您也可以設定下列進階設定：maxFileSize 和 numberDataTypeScale。 | AWS SysAdmin、DBA | 
| 建立 AWS DMS 複寫任務。 | 指定任務名稱、複寫執行個體、來源和目標端點，以及複寫執行個體。針對遷移類型，選擇「遷移現有資料並複寫持續變更」。清除「建立時啟動任務」核取方塊。 | AWS SysAdmin、DBA | 
| 設定 AWS DMS 複寫任務設定。 | 針對目標資料表準備模式，選擇「不執行任何動作」。在完全載入完成後停止任務，以建立主索引鍵。指定有限或完整 LOB 模式，並啟用控制資料表。或者，您可以設定 CommitRate 進階設定。 | DBA | 
| 設定資料表映射。 | 在資料表映射區段中，為遷移中包含的所有結構描述中的所有資料表建立包含規則，然後建立排除規則。新增三個轉換規則，將結構描述、資料表和資料欄名稱轉換為小寫，並新增此特定遷移所需的任何其他規則。 | DBA | 
| 啟動 任務。 | 啟動複寫任務。確定完全載入正在執行中。在主要 Oracle 資料庫上執行 ALTER SYSTEM SWITCH LOGFILE，以啟動任務。 | DBA | 
| 從 AWS SCT 執行中遷移指令碼。 | 在 Amazon RDS for PostgreSQL 中，執行這些指令碼：create\_index.sql 和 create\_constraint.sql。 | DBA | 
| 重新啟動任務以繼續變更資料擷取 (CDC)。 | 在 Amazon RDS for PostgreSQL 資料庫執行個體中，執行 VACUUM，然後重新啟動 AWS DMS 任務以套用快取的 CDC 變更。 | DBA | 

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


| 任務 | Description | 所需的技能 | 
| --- | --- | --- | 
| 檢查 AWS DMS 日誌和中繼資料表。 | 驗證任何錯誤並視需要修正。 | DBA | 
| 停止所有 Oracle 相依性。 | 關閉 Oracle 資料庫上的接聽程式，並執行 ALTER SYSTEM SWITCH LOGFILE。在未顯示活動時停止 AWS DMS 任務。 | DBA | 
| 從 AWS SCT 執行遷移後指令碼。 | 在 Amazon RDS for PostgreSQL 中，執行這些指令碼：create\_foreign\_key\_constraint.sql 和 create\_triggers.sql。 | DBA | 
| 完成任何其他 Amazon RDS for PostgreSQL 步驟。 | 視需要遞增序列以符合 Oracle，執行 VACUUM 和 ANALYZE，並拍攝快照以符合合規。 | DBA | 
| 開啟 Amazon RDS for PostgreSQL 的連線。 | 從 Amazon RDS for PostgreSQL 移除 AWS DMS 安全群組、新增生產安全群組，並將您的應用程式指向新的資料庫。 | DBA | 
| 清除 AWS DMS 資源。 | 移除端點、複寫任務、複寫執行個體和 EC2 執行個體。 | SysAdmin、DBA | 

## 相關資源
<a name="migrate-from-oracle-8i-or-9i-to-amazon-rds-for-postgresql-using-shareplex-and-aws-dms-resources"></a>
+ [AWS DMS 文件](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_GettingStarted.html)
+ [AWS SCT 文件](https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html)
+ [Amazon RDS for PostgreSQL 定價](https://aws.amazon.com/rds/postgresql/pricing/)
+ [使用 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) 
+ [Quest SharePlex 文件](https://support.quest.com/shareplex/9.0.2/technical-documents)