Exadata 至 AWS 遷移工具 - AWS 方案指引

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

Exadata 至 AWS 遷移工具

AWS 遷移方法有超過 15 個 Exadata。下表顯示最常用的工具。資料表不包含 Oracle 傳統匯出/匯入、Oracle SQL*Loader、Oracle SQL Developer Database Copy、Oracle SQL*Developer Export/Import Wizard、Oracle Transportable Tablespaces、使用 Create Table as Select (CTAS)、Oracle 外部資料表或擷取、轉換和載入 (ETL) 解決方案的 Oracle 資料庫連結。

遷移方法

支援遷移策略

實體或邏輯

支援變更資料擷取 (CDC)

需要聯網至 AWS

AWS DMS

全部

Logical (邏輯)

Oracle GoldenGate

全部

Logical (邏輯)

Oracle 資料幫浦

Rehost、replatform

Logical (邏輯)

Oracle Recovery Manager (RMAN)

重新託管

實體

如果您使用 RMAN DUPLICATE或 Oracle 安全備份至 Amazon S3

Oracle Data Guard

重新託管

實體

Oracle Data Guard 和 Oracle Recovery Manager (RMAN) 是將 Exadata 資料庫遷移至 Amazon EC2 的絕佳選項。不過,Amazon RDS for Oracle 不支援這些工具。

您可以使用邏輯待命或實體待命方法實作 Oracle Data Guard。邏輯待命資料庫會在待命資料庫上套用資料處理語言 (DML) 陳述式,以保持資料同步。邏輯待命資料庫通常用於從主要資料庫卸載報告。本節中的所有 Oracle Data Guard 參考都直接適用於實體待命。實體待命資料庫完全符合區塊層級的主要資料庫。

AWS DMS 遷移

AWS Database Migration Service (AWS DMS) 是一種邏輯複寫解決方案。它支援同質遷移,例如將 Oracle 內部部署資料庫遷移至 上的 Oracle 資料庫 AWS,以及在不同資料庫平台之間進行異質遷移,例如 Oracle 遷移至 Microsoft SQL Server,以及 Oracle 遷移至 Amazon Aurora PostgreSQL 相容版本。 AWS DMS 支援各種來源目標。支援 AWS DMS 的目標包括 Amazon Simple Storage Service (Amazon S3)Amazon DynamoDBAmazon RedshiftAmazon Kinesis Data StreamsAmazon DocumentDB 和 Redis。

您可以使用 AWS DMS 將 Exadata 工作負載遷移至 Amazon RDS for Oracle 或 Amazon EC2 上的 Oracle 資料庫。 會 AWS DMS 處理初始載入,以及變更 Exadata 的資料擷取 (CDC) 更新。Exadata 在遷移過程中可完全運作。如果您使用 CDC,目標資料庫會持續與 Exadata 同步,因此您的應用程式切換可以在方便的時間發生。

Oracle RMAN、Oracle Data Guard 和 Oracle Data Pump 等原生 Oracle 工具更具彈性,可以比載入資料更快 AWS DMS。如果您要遷移大型 (多 TiB) Exadata 資料庫,建議您選擇這些原生 Oracle 公用程式,而不是 AWS DMS 用於初始資料載入。

Oracle Data Pump 支援多個工作者程序,可執行資料表間和分割區間平行處理,以載入和卸載多個、平行或直接路徑串流中的資料表。Data Pump 中的所有匯入和匯出處理,包括讀取和寫入傾印檔案,都由伺服器處理,不涉及用戶端。Data Pump 傾印檔案儲存格式是直接路徑 API 的內部串流格式。此格式與資料表空間內儲存在 Oracle 資料庫資料檔案中的格式非常相似。因此,Data Pump 不需要對INSERT陳述式繫結變數執行用戶端轉換。此外,Data Pump 支援比傳統 SQL 更快的資料存取方法、直接路徑和外部資料表。直接路徑 API 提供最快的單一串流效能。外部資料表功能可有效率地使用 Oracle 資料庫的平行查詢和平行 DML 功能。如果您的 Exadata 到 Amazon RDS for Oracle 遷移需要低停機時間,常見的 Exadata 遷移方法是使用 Data Pump 進行初始載入,然後使用 AWS DMS 或 Oracle GoldenGate 進行 CDC。

當您使用 Exadata 做為 的來源時,會有限制 AWS DMS。如需詳細資訊,請參閱 AWS DMS 文件。此外, 需要與來源 (內部部署的 Exadata) 和目標 (Oracle 資料庫 AWS) 的網路連線 AWS DMS。

如果您使用 AWS DMS 進行初始載入,請考慮下列最佳實務:

  • 您通常可以透過選取大型 AWS DMS 複寫執行個體來改善效能。大型資料表需要更長的載入時間,而且必須快取這些資料表上的交易,直到資料表載入為止。載入資料表之後,就會套用這些快取交易,而不再將其保留在磁碟上。例如,如果負載需要 5 小時,並且每小時產生 6 GiB 的交易,請確保為快取的交易配置 30 GiB 的磁碟空間。當初始載入完成時,在啟動 CDC 之前,您可以修改 AWS DMS 複寫執行個體以使用較小的執行個體。

  • 對於大型 (多 TiB) Exadata 遷移,我們建議您使用 AWS DMS Binary Reader 而非 Oracle LogMiner (這是預設值)。Binary Reader 具有較低的 I/O 或 CPU 影響風險,因為日誌是直接挖掘的,而不是需要多個資料庫查詢。不過,當您有大量變更且使用 Oracle ASM 時,Oracle LogMiner 會更好。若要使用 Binary Reader 存取重做日誌,請為來源端點新增下列額外的連線屬性:

    useLogMinerReader=N;useBfile=Y

    如需完整比較,請參閱 AWS DMS 文件中的使用 Oracle LogMiner 或 AWS DMS Binary Reader for CDC

  • NOARCHIVELOG 如果您要遷移至 Amazon EC2 上的 Oracle,請停用 Amazon RDS for Oracle 備份或將封存模式變更為 。在 CDC 階段之前或初始資料載入之後啟用備份。

  • 停用所有待命資料庫 AWS。這包括 Amazon RDS for Oracle 異地同步備份和僅供讀取複本。如果您要遷移至 Amazon EC2 上的 Oracle,它還包括 Oracle Data Guard 或 Oracle Active Data Guard 待命。

  • 在目標資料庫初次載入之前,捨棄主索引鍵索引、輔助索引、參考完整性限制條件和資料處理語言 (DML) 觸發條件。在開始 CDC 階段之前啟用這些物件。

  • 對於大型資料表,請考慮使用資料列篩選、索引鍵或分割區索引鍵,將單一資料表分成多個 AWS DMS 任務。例如,如果您的資料庫有一個介於 1 到 8,000,000 之間的整數主金鑰 ID,請使用資料列篩選來遷移每個任務的一百萬筆記錄,以建立八個 AWS DMS 任務。您也可以搭配日期資料欄使用此技術。

  • 將 AWS DMS 遷移分割成多個 AWS DMS 任務。交易一致性會在任務中維護,因此個別任務中的資料表不應參與常見的交易。

  • 根據預設, 一次 AWS DMS 載入八個資料表。為了改善效能,如果您使用大型複寫伺服器,則可以增加此值。

  • 根據預設, 會在交易模式中 AWS DMS 處理變更,以保留交易完整性。變更批次最佳化套用選項可以改善效能。我們建議您在初始載入期間關閉這些限制,並針對 CDC 程序重新開啟這些限制。

  • 如果 上的 AWS DMS 複寫執行個體和 Oracle 資料庫 AWS 位於不同的虛擬私有雲端 (VPCs),建議您使用 VPC 對等互連。

  • 當您建立或修改 AWS DMS 遷移任務時,請啟用 Amazon CloudWatch 日誌。當您建立任務時,此參數可在任務設定區段中使用。 AWS DMS 啟用此參數會擷取遷移程序期間的任務狀態、完成百分比、省略時間和資料表統計資料等資訊。如需詳細資訊,請參閱 文件中的 AWS DMS 使用 Amazon CloudWatch 監控複寫任務

如需其他最佳實務,請參閱 AWS DMS 文件中的使用 Oracle 資料庫做為 的來源 AWS DMS的最佳實務 AWS Database Migration Service

Oracle GoldenGate 遷移

Oracle GoldenGate 是一種邏輯複寫解決方案。您可以使用此工具,將資料從一個資料庫複寫、篩選和轉換到另一個資料庫。您可以跨多個異質系統移動遞交的交易,並將資料從 Oracle 資料庫複寫到其他同質資料庫和支援的異質資料庫。Oracle GoldenGate 共用 的許多正面特性和限制 AWS DMS。

這兩種工具都提供邏輯複寫。不過, AWS DMS 是不需要安裝和組態的受管服務,而必須安裝和設定 Oracle GoldenGate。您可以在內部部署或 上進行設定 AWS。您可以使用 AWS 高度可用的組態,將資料從 Exadata 遷移至 ,藉此在 上安裝 Oracle GoldenGate AWS。請勿直接在內部部署的 Exadata 或 Amazon EC2 的 Oracle 資料庫節點上安裝 Oracle GoldenGate;資料庫節點應專用於處理資料庫工作負載。

AWS DMS 和 Oracle GoldenGate 之間的另一個主要差異是定價。 AWS DMS 會收取複寫執行個體用量和日誌儲存的費用。所有傳輸至 的資料 AWS DMS 都是免費的,在相同可用區域中 Amazon RDS 和 Amazon EC2 執行個體上的 和 AWS DMS 資料庫之間傳輸的資料也是免費的。Oracle GoldenGate 需要來源和目標資料庫上每個核心的 Oracle GoldenGate 授權。您可以使用 Oracle GoldenGate 將 Exadata 工作負載遷移至 Amazon RDS for Oracle 或 Amazon EC2 上的 Oracle,以進行初始載入並從 Exadata 執行 CDC。此程序可讓 Exadata 在遷移程序期間完全運作。

若要將大型 (多 TiB) Exadata 資料庫遷移至 Amazon EC2 上的 Oracle,請考慮使用 Oracle RMAN、Oracle Data Guard 或 Oracle Data Pump,而非 Oracle GoldenGate,原因如下:

  • Oracle GoldenGate 需要 Exadata 和 之間的網路連線 AWS。

  • Oracle GoldenGate 在初始資料載入時不會像其他 Oracle 遷移工具一樣執行。例如,若要將大型 Exadata 資料庫遷移至 Amazon RDS for Oracle,請考慮改用 Oracle Data Pump,因為它比 Oracle GoldenGate 更靈活且可更快地載入資料。

如果您的 Exadata 到 Amazon RDS for Oracle 遷移需要低停機時間,常見的遷移方法是使用 Oracle Data Pump 進行初始載入,以及使用 Oracle GoldenGate 或 AWS DMS CDC。Oracle GoldenGate 的優點是它可以處理初始負載和 CDC。CDC 允許目標資料庫持續與 Exadata 同步,因此您可以在方便的時間切換。

當您使用 Exadata 做為 Oracle GoldenGate 的來源時,會有限制。如需這些詳細資訊,請參閱 GoldenGate 文件中的了解支援的內容

如果您使用 Oracle GoldenGate 進行初始載入,請考慮下列最佳實務:

  • 在整合擷取模式中使用擷取,以利用與 LogMiner 伺服器的整合。相較於傳統模式中的擷取,整合式擷取允許無縫擷取更多資料類型。這些其他資料類型包括壓縮資料,包括基本壓縮、線上交易處理 (OLTP) 和 Exadata Hybrid Columnar Compression (HCC)。擷取讀取儲存在 Oracle ASM 上的日誌檔案時,不需要額外的組態。

  • 使用整合式複寫。此選項使用資料庫套用程序。它會維護參考完整性,並自動套用 DDL 操作。整合式 Replicat 也提供自動平行處理,可根據目前的工作負載和資料庫效能自動增加或減少。

  • BATCHSQL 在複寫參數檔案中設定 。根據預設,整合式複寫會嘗試針對每個交易中的相同物件,對相同類型的 DML 陳述式重新排序和分組。使用批次可減少 DML 陳述式的 CPU 和執行時間。

  • 設定 GoldenGate 活動訊號表以提供end-to-end複寫延遲檢視。這可讓您透過檢視GG_LAG資料庫檢視來查看end-to-end複寫延遲。

  • NOARCHIVELOG 如果您在 Amazon EC2 上使用 Oracle,請停用 Amazon RDS for Oracle 備份或將封存模式變更為 。在 CDC 階段之前或初始資料載入之後啟用備份。

  • 停用 AWS 上的所有待命資料庫。這包括 Amazon RDS for Oracle 異地同步備份和僅供讀取複本。如果您要遷移至 Amazon EC2 上的 Oracle,它還包括 Oracle Data Guard 或 Oracle Active Data Guard 待命。

  • 在目標資料庫初次載入之前,捨棄主索引鍵索引、輔助索引、參考完整性限制條件和資料處理語言 (DML) 觸發條件。在開始 CDC 階段之前啟用這些物件。

  • 如果 Oracle GoldenGate 複寫執行個體和 上的 Oracle 資料庫 AWS 位於不同的虛擬私有雲端 (VPCs),我們建議您使用 VPC 對等互連。

Oracle Data Pump 遷移

您可以使用 Oracle Data Pump 將資料從一個 Oracle 資料庫移至另一個資料庫。Data Pump 提供廣泛的優點,例如支援較舊版本的 Oracle 資料庫 (返回 10.1 版),以及支援具有不同格式、資料庫架構和版本的平台。您可以選擇匯出完整資料庫,或僅匯出特定結構描述、資料表空間或資料表。

您可以控制平行處理、壓縮和加密的程度,並指定要包含或排除的物件和物件類型。Data Pump 也支援網路模式,您可以在其中使用資料庫連結傳輸資料,而不需要中繼儲存。

Data Pump API 提供快速且可靠的方法來在 Oracle 資料庫之間移動資料和中繼資料。Data Pump Export 和 Data Pump Import 公用程式是以 Data Pump API 為基礎。Amazon RDS for Oracle 執行個體無法透過 Secure Shell (SSH) 通訊協定存取,因此如果您使用 Data Pump 從 Exadata 遷移到 Amazon RDS for Oracle,Data Pump API 是唯一匯入資料的方式。Data Pump Command Line Interface (CLI) 不是遷移至 Amazon RDS for Oracle 的選項。

如果您使用 Data Pump 進行初始載入,請考慮下列最佳實務:

  • 匯入資料前,請先建立所需的資料表空間。

  • 如果您想要將資料匯入不存在的使用者帳戶,請建立使用者帳戶並授予必要的許可和角色。

  • 如果您要遷移至 Amazon EC2 上的 Oracle,請關閉 Amazon RDS for Oracle 備份或將封存模式變更為 NOARCHIVELOG。在開始 CDC 階段之前或在初始資料載入之後啟用備份。

  • 關閉所有待命資料庫 AWS。這包括 Amazon RDS for Oracle 異地同步備份和僅供讀取複本。如果您要遷移至 Amazon EC2 上的 Oracle,它還包括 Oracle Data Guard 或 Oracle Active Data Guard 待命。

  • 在目標資料庫初次載入之前,捨棄主索引鍵索引、輔助索引、參考完整性限制條件和 DML 觸發條件。在開始 CDC 階段之前啟用這些物件。

  • 若要匯入特定結構描述和物件,請以結構描述或資料表模式執行匯入。

  • 將您匯入的結構描述限制為應用程式所需的結構描述。

  • 使用壓縮和多個執行緒平行載入和卸載資料。

  • Amazon S3 中的檔案必須等於或小於 5 TiB。使用 PARALLEL選項建立多個 Data Pump 傾印檔案,以避免此限制。

  • 如果您打算在 Data Pump 匯出後執行 CDC,請使用 Oracle 系統變更號碼 (SCN) 搭配 Data Pump。

  • 如果您想要將資料載入 Amazon RDS for Oracle,請執行下列任務:

    1. 建立 AWS Identity and Access Management (IAM) 政策,以允許 Amazon RDS 存取 S3 儲存貯體。

    2. 建立 IAM 角色並連接政策。

    3. 將 IAM 角色與 Amazon RDS for Oracle 執行個體建立關聯。

    4. 為 Amazon S3 整合設定 Amazon RDS for Oracle 選項群組,並將其新增至 Amazon RDS for Oracle 執行個體。

    如需詳細資訊,請參閱 Amazon RDS 文件中的 Amazon S3 整合

Oracle RMAN 遷移

Oracle Recovery Manager (RMAN) 是一種用於備份和復原 Oracle 資料庫的工具。它也用於促進內部部署以及內部部署和雲端資料庫之間的資料庫遷移。

Oracle RMAN 提供實體遷移方法。因此,它支援重新託管 (遷移至 Amazon EC2),但無法用於在 Amazon RDS for Oracle 上轉換 Oracle 資料庫。您的遷移停機時間公差必須足夠大,才能備份和還原 Oracle RMAN 增量備份。

遷移至 Amazon S3

若要將 Exadata 資料庫備份至 Amazon S3,您可以使用下列選項:

  • 使用 Oracle 安全備份 (OSB) 雲端模組將您的 Exadata 資料庫直接備份到 Amazon S3。

  • 從 Exadata RMAN 備份位置將 Oracle RMAN 備份集複製到 Amazon S3。

  • 使用 Oracle ZFS 儲存設備。存放在 Oracle ZFS Storage Appliances 的 Oracle RMAN 備份集可以使用 Oracle ZFS Storage Appliance S3 物件 API 服務直接傳輸至 Amazon S3。 S3

  • 將 Oracle RMAN 備份直接存放在 Exadata Storage Server、Oracle Zero Loss Recovery Appliance 和磁帶庫上。然後,您可以將這些儲存平台上的 RMAN 備份集轉移到 Amazon S3。

遷移至 Amazon EC2

您也可以使用 RMAN 將 Exadata 資料庫直接備份到 Amazon EC2 上的 Oracle 資料庫,而無需建立備份集。若要執行此操作,請使用 Oracle RMAN DUPLICATE命令來執行備份和還原。不過,DUPLICATEOracle RMAN 不建議用於大型 (多 TiB) Exadata 遷移。

RMAN 設定通常根據備份大小、Exadata CPU、壓縮以及平行處理或 RMAN 通道數量等因素進行設定。搭配 RMAN 使用 Oracle Service Bus (OSB) 和壓縮 (低、中和高) 需要 Oracle 進階壓縮選項 (ACO) 授權。OSB 還需要以您想要與 OSB 搭配使用的 RMAN 通道數量為基礎的 Oracle 授權。

如果您想要使用 RMAN 將 Exadata 遷移至 Amazon EC2 上的 Oracle,請考慮下列最佳實務。

注意

本節提供的命令必須在 Oracle on Amazon EC2 執行個體上執行。

  • 如果您想要在 Amazon EC2 上使用不同的 Oracle ASM 磁碟群組名稱,請使用 RMAN 還原程序執行 set newname命令:

    set newname for datafile 1 to '+<disk_group>'; set newname for datafile 2 to '+<disk_group>';
  • 如果線上重做日誌將位於 上的不同位置 AWS,請重新命名重做日誌檔案:

    alter database rename file '/<old_path>/redo01.log' to '+<disk_group>'; alter database rename file '/<old_path>/redo02.log' to '+<disk_group>';
  • 在 上成功開啟資料庫之後 AWS:

    • 針對其他執行個體的重做執行緒移除重做日誌群組:

      alter database disable thread 2; alter database drop logfile group 4; alter database clear unarchived logfile group 4;
    • 移除其他執行個體的復原資料表空間:

      drop tablespace UNDOTBS2 including contents and datafiles;
    • 請確定只有一個TEMP資料表空間存在。移除不必要的TEMP資料表空間,並確認現有的TEMP資料表空間夠大,足以處理預期的資料庫工作負載。

HCC 考量事項

如果您在 Exadata 中使用混合單欄式壓縮 (HCC),所有具有 HCC 的資料表都必須轉換為 Oracle ACO 或停用 AWS。否則,當您在 Amazon EC2 上存取 Oracle 資料庫時,SQL 陳述式將會失敗。Oracle ACO 需要 Oracle 授權。

一般而言,使用者無法從內部部署 Exadata 生產資料庫移除 HCC。您可以在將資料庫遷移至 時移除 HCC AWS。若要判斷遷移資料庫至 後,資料表或分割區是否已啟用 HCC AWS,請執行下列 SQL 陳述式:

select TABLE_NAME, COMPRESSION, COMPRESS_FOR from DBA_TABLES where OWNER like 'SCHEMA_NAME'; select TABLE_NAME, PARTITION_NAME, COMPRESSION, COMPRESS_FOR from DBA_TAB_PARTITIONS where TABLE_OWNER = 'SCHEMA_NAME';

如果資料compression欄值設定為 ,ENABLED且資料compress_for欄具有下列其中一個值,則會啟用 HCC:

  • QUERY LOW

  • QUERY HIGH

  • ARCHIVE LOW

  • ARCHIVE HIGH

  • QUERY LOW ROW LEVEL LOCKING

  • QUERY HIGH ROW LEVEL LOCKING

  • ARCHIVE LOW ROW LEVEL LOCKING

  • ARCHIVE HIGH ROW LEVEL LOCKING

  • NO ROW LEVEL LOCKING

若要關閉資料表或分割區上的 HCC,請執行下列 SQL 陳述式:

alter table table_name nocompress; alter table table_name modify partition partition_name nocompress;

若要在 上啟用 Oracle ACO AWS,請遵循 Oracle 文件中的指示。

Oracle Data Guard 遷移

Oracle Data Guard 可讓您建立和管理一或多個待命資料庫,以實現高可用性和災難復原。Data Guard 會將待命資料庫維護為主要 (通常是生產) 資料庫的副本。如果生產資料庫遇到計劃或非計劃可用性問題,Data Guard 可以切換角色,以確保最短的停機時間和應用程式連續性。

您可以使用邏輯待命和實體待命方法來實作 Data Guard。在本指南中,我們假設您使用的實體待命資料庫完全符合主要資料庫。

Data Guard 支援從 Exadata 遷移到 Amazon EC2 上的 Oracle Database,以建立實體待命。它無法用於遷移到 Amazon RDS for Oracle,這需要邏輯遷移方法 AWS DMS,例如 Oracle Data Pump 或 Oracle GoldenGate。

相較於 AWS DMS 或 Oracle GoldenGate 等 CDC 機制,Data Guard 是更簡單且更快速遷移整個 Exadata 資料庫的方法。如果您的停機時間需求最少 (例如,您只有時間進行切換),通常是建議的方法。

您可以使用同步或非同步傳輸來設定 Data Guard。一般而言,當往返網路延遲小於 5 毫秒時,Oracle 客戶在同步傳輸方面取得更大的成功。對於非同步傳輸,Oracle 建議低於 30 毫秒的往返網路延遲。

一般而言,生產 Exadata 內部部署資料庫已存在 Data Guard 待命。Oracle on Amazon EC2 通常做為生產 Exadata 內部部署資料庫的額外待命資料庫。建議您 AWS 使用 Oracle RMAN 在 上建立 Data Guard 待命資料庫。

有許多變數會影響 Data Guard 效能。我們建議您在對 Data Guard 複寫對工作負載的影響做出任何結論之前執行測試。

Data Guard 複寫的延遲 (透過 ping 監視器測量) 並不重要,因為使用的機制不同。Oracle oratcptest 公用程式有助於評估網路資源。您可以從 My Oracle Support (MOS) Note 2064368.1 下載 JAR 格式的 oratcptest (需要 Oracle 帳戶)。 https://support.oracle.com/epmos/faces/DocumentDisplay?_afrLoop=448465473837727&id=2064368.1MOS 備註也提供此公用程式的詳細資訊。