使用 Oracle 資料庫做為 AWS DMS的來源 - AWS Database Migration Service

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

使用 Oracle 資料庫做為 AWS DMS的來源

您可以使用從一個或多個 Oracle 數據庫遷移數據 AWS DMS。使用 Oracle 資料庫作為來源,您可以將資料遷移到 AWS DMS支援的任何目標。

AWS DMS 支援下列 Oracle 資料庫版本:

  • Oracle Enterprise Edition

  • Oracle Standard Edition

  • Oracle Enterprise 版

  • Oracle Personal 版

如需有關 AWS DMS 支援做為來源之 Oracle 資料庫版本的資訊,請參閱資料來源 AWS DMS

您可以使用 Secure Sockets Layer (SSL) 加密 Oracle 端點與複寫執行個體之間的連線。如需使用 SSL 搭配 Oracle 端點的詳細資訊,請參閱Oracle 端點的 SSL 支援

AWS DMS 支援使用 Oracle 通透資料加密 (TDE) 來加密來源資料庫中的靜態資料。如需如何將 Oracle TDE 與 Oracle 來源端點搭配使用的詳細資訊,請參閱使用 Oracle 作為下列項目的來源所支援的加密方法 AWS DMS

AWS 支援將 TLS 1.2 版及更新版本與 Oracle 端點 (以及所有其他端點類型) 搭配使用,並建議使用 TLS 1.3 版或更新版本。

請依照下列步驟將 Oracle 資料庫設定為 AWS DMS 來源端點:

  1. 建立具有存取 Oracle 來源資料庫之適當權限的 Oracle 使用者。 AWS DMS

  2. 建立符合您選擇之 Oracle 資料庫組態的 Oracle 來源端點。要創建 full-load-only 任務,不需要進一步的配置。

  3. 若要建立處理變更資料擷取的工作 (僅限 CDC 或完整載入和 CDC 工作),請選擇 Oracle LogMiner 或 AWS DMS 二進位讀取器來擷取資料變更。選擇 LogMiner 或二進位讀取器會決定一些較新的權限和設定選項。如需 LogMiner 和二進位讀取器的比較,請參閱下一節。

注意

如需完全載入任務、僅限 CDC 任務以及完全載入和 CDC 任務的詳細資訊,請參閱建立任務

如需使用 Oracle 來源資料庫的其他詳細資訊 AWS DMS,請參閱下列各節。

使用甲骨 AWS DMS 文 LogMiner 或二進制閱讀器進行 CDC

在中 AWS DMS,對 Oracle 做為來源執行變更資料擷取 (CDC) 時,有兩種讀取重做日誌的方法:Oracle LogMiner 和 AWS DMS 二進位讀取器。 LogMiner 是讀取線上重做日誌和存檔重做日誌檔的 Oracle API。Binary Reader 是一 AWS DMS 種直接讀取和剖析原始重做日誌檔的方法。這些方法具有下列特徵。

功能 LogMiner Binary Reader
輕鬆設定
降低對來源系統 I/O 和 CPU 的影響
更好的 CDC 效能
支援 Oracle 資料表叢集
支援所有類型的 Oracle 混合直欄式壓縮 (HCC)

部分

Binary Reader 不支援將 QUERY LOW 用於使用 CDC 的任務。完全支援所有其他 HCC 類型。

僅在 Oracle 12c 中支援 LOB 資料欄 否 (Oracle 12c LogMiner 中不提供 LOB Support。)
支援僅影響 LOB 資料欄的 UPDATE 陳述式
支援 Oracle 透明資料加密 (TDE)

部分

使用甲骨文時 LogMiner, AWS DMS 不支持亞馬遜 RDS 適用於甲骨文的列級 TDE 加密。

部分

Binary Reader 僅支援自我管理的 Oracle 資料庫的 TDE。

支援所有 Oracle 壓縮方法
支援 XA 交易
RAC

由於效能原因,以及一些內部 DMS 限制,不建議使用。

強烈建議使用

注意

依預設, AWS DMS 使用 Oracle LogMiner 做為 (CDC)。

AWS DMS 在使用 Oracle 來源資料庫時,支援通透資料加密 (TDE) 方法。如果您指定的 TDE 認證不正確, AWS DMS 移轉工作不會失敗,這可能會影響加密資料表的持續複寫。如需指定 TDE 憑證的詳細資訊,請參閱使用 Oracle 作為下列項目的來源所支援的加密方法 AWS DMS

LogMiner 與使用的主要優點包 AWS DMS 括以下內容:

  • LogMiner 支援大多數 Oracle 選項,例如加密選項和壓縮選項。Binary Reader 不支援所有 Oracle 選項,特別是用於加密的壓縮和大部分選項。

  • LogMiner 提供更簡單的組態,特別是與「二進位讀取器直接存取」設定相比,或是使用「Oracle 自動儲存體管理 (ASM)」管理重做日誌時。

  • LogMiner 支援供使用的表叢集 AWS DMS。Binary Reader 不支援。

使用二進制閱讀器的主要優點包 AWS DMS 括以下內容:

  • 對於大量變更的移轉, LogMiner 可能會對裝載 Oracle 來源資料庫的電腦造成一些 I/O 或 CPU 影響。Binary Reader 遭受到 I/O 或 CPU 影響的機會較小,因為是直接挖掘日誌,而不是進行多個資料庫查詢。

  • 對於具有大量更改的遷移,與使用 Oracle LogMiner 相比,使用二進制閱讀器時 CDC 性能通常要好得多。

  • 二進制讀取器支持 Oracle 12c 版本中的 LOB 的 CDC。 LogMiner沒有。

一般 LogMiner 而言,除非您發生下列其中一種情況,否則請使用 Oracle 來移轉 Oracle 資料庫:

  • 您需要在來源 Oracle 資料庫執行數項遷移任務。

  • 來源 Oracle 資料庫的變更量或還原日誌量很大,或您進行變更且也正在使用 Oracle ASM。

注意

如果您在使用 Oracle LogMiner 和 AWS DMS 二進位讀取器之間進行變更,請務必重新啟動 CDC 工作。

Oracle 來源資料庫的 CDC 組態

若要讓 Oracle 來源端點連線至資料庫以進行變更資料擷取 (CDC) 任務,您可能需要指定額外的連線屬性。對於完全載入和 CDC 任務或僅限 CDC 任務,情況都是如此。您指定的額外連線屬性取決於您用來存取重做日誌的方法:Oracle LogMiner 或 AWS DMS 二進位讀取器。

您可在建立來源端點時,指定額外的連線屬性。如果您有多個連線屬性設定,請使用分號 (無額外空格) 分隔這些設定 (如 oneSetting;thenAnother)。

AWS DMS 默認情況 LogMiner 下使用。您不一定要指定額外的連線屬性才能加以使用。

若要使用 Binary Reader 存取還原日誌,請新增以下額外的連線屬性。

useLogMinerReader=N;useBfile=Y;

針對額外連線屬性使用以下格式,來存取透過 Binary Reader 使用 ASM 的伺服器。

useLogMinerReader=N;useBfile=Y;asm_user=asm_username;asm_server=RAC_server_ip_address:port_number/+ASM;

將來源端點 Password 請求參數同時設定為 Oracle 使用者密碼和 ASM 密碼,並以逗號分隔,如下所示。

oracle_user_password,asm_user_password

在 Oracle 來源使用 ASM 的情況,您可以使用 Binary Reader 中的高效能選項,進行大規模的交易處理。這些選項包括額外連線屬性,以指定平行執行緒數量 (parallelASMReadThreads) 和預先讀取緩衝區 (readAheadBlocks) 數量。同時設定這些屬性可以大幅提升 CDC 任務的效能。下列設定可為大部分 ASM 組態提供好結果。

useLogMinerReader=N;useBfile=Y;asm_user=asm_username;asm_server=RAC_server_ip_address:port_number/+ASM; parallelASMReadThreads=6;readAheadBlocks=150000;

如需額外連線屬性所支援的值的詳細資訊,請參閱 使用 Oracle 作為來源時的端點設定 AWS DMS

此外,對於具有使用 ASM 之 Oracle 來源的 CDC 任務,其效能取決於您選擇的其他設定。這些設定包括您的 AWS DMS 額外連線屬性,以及用來設定 Oracle 來源的 SQL 設定。如需 Oracle 來源使用 ASM 之額外連線屬性的詳細資訊,請參閱使用 Oracle 作為來源時的端點設定 AWS DMS

您還需要選擇適當的 CDC 起點。通常執行此操作時,您會想要識別交易處理點,以擷取從中開始 CDC 的最早開啟交易。否則,CDC 任務可能會遺漏先前開啟的交易。對於 Oracle 來源資料庫,您可以根據 Oracle 系統變更編號 (SCN) 來選擇 CDC 原生起點,以識別此最早的開啟交易。如需詳細資訊,請參閱 從 CDC 起點開始執行複寫

如需將自我管理的 Oracle 資料庫設為來源之 CDC 的詳細資訊,請參閱 使用 Oracle LogMiner 存取重做日誌時所需的帳戶權限使用 AWS DMS 二進位讀取器存取重做日誌時所需的帳戶權限使用 Binary Reader 搭配 Oracle ASM 時所需的其他帳戶權限

如需有關為 AWS受管理的 Oracle 資料庫設定 CDC 作為來源的詳細資訊,請參閱 將 CDC 工作設定為使用二進位讀取器搭配使用適用於 Oracle 來源的 RDS AWS DMS和。在 AWS DMS中使用 Amazon RDS Oracle Standby (僅供讀取複本) 作為使用 Binary Reader 的來源以進行 CDC

設定自行管理或管理之 Oracle 來源資料 AWS庫的工作流程 AWS DMS

設定 Oracle 來源資料庫

若要設定自我管理的來源資料庫執行個體,請根據您執行 CDC 的方式,使用下列工作流程步驟。

針對此工作流程步驟 如果您使用執行 CDC LogMiner,請執行此操作 如果您使用 Binary Reader 執行 CDC,請執行此操作
授予 Oracle 帳戶權限。 請參閱自我管理的 Oracle 來源上所需的使用者帳戶權限 AWS DMS 請參閱自我管理的 Oracle 來源上所需的使用者帳戶權限 AWS DMS
使用 CDC 為複寫準備來源資料庫。 請參閱使用準備適用於 CDC 的 Oracle 自我管理來源資料庫 AWS DMS 請參閱使用準備適用於 CDC 的 Oracle 自我管理來源資料庫 AWS DMS
授予 CDC 所需的其他 Oracle 使用者權限。 請參閱使用 Oracle LogMiner 存取重做日誌時所需的帳戶權限 請參閱使用 AWS DMS 二進位讀取器存取重做日誌時所需的帳戶權限
對於具有 ASM 的 Oracle 執行個體,授予存取 ASM 進行 CDC 所需的其他使用者帳戶權限。 沒有其他動作。 AWS DMS 支援 Oracle ASM,無需額外的帳戶權限。 請參閱使用 Binary Reader 搭配 Oracle ASM 時所需的其他帳戶權限
如果您尚未這麼做,請設定要使用的工作 LogMiner 或 CDC 的二進位讀取器。 請參閱使用甲骨 AWS DMS 文 LogMiner 或二進制閱讀器進行 CDC 請參閱使用甲骨 AWS DMS 文 LogMiner 或二進制閱讀器進行 CDC
將 Oracle Standby 設為 CDC 的來源。 AWS DMS 不支援「Oracle 待命管理系統」作為來源。 請參閱在 AWS DMS中使用自我管理的 Oracle Standby 作為使用 Binary Reader 的來源進行 CDC

請使用下列工作流程步驟來設定 AWS管理的 Oracle 來源資料庫執行處理。

針對此工作流程步驟 如果您使用執行 CDC LogMiner,請執行此操作 如果您使用 Binary Reader 執行 CDC,請執行此操作
授予 Oracle 帳戶權限。 如需詳細資訊,請參閱 AWS受管理的 Oracle 來源所需的使用者帳戶權限 AWS DMS 如需詳細資訊,請參閱 AWS受管理的 Oracle 來源所需的使用者帳戶權限 AWS DMS
使用 CDC 為複寫準備來源資料庫。 如需詳細資訊,請參閱 設定 AWS管理的 Oracle 來源 AWS DMS 如需詳細資訊,請參閱 設定 AWS管理的 Oracle 來源 AWS DMS
授予 CDC 所需的其他 Oracle 使用者權限。 不需額外的帳戶權限。 如需詳細資訊,請參閱 將 CDC 工作設定為使用二進位讀取器搭配使用適用於 Oracle 來源的 RDS AWS DMS
如果您尚未這麼做,請設定要使用的工作 LogMiner 或 CDC 的二進位讀取器。 如需詳細資訊,請參閱 使用甲骨 AWS DMS 文 LogMiner 或二進制閱讀器進行 CDC 如需詳細資訊,請參閱 使用甲骨 AWS DMS 文 LogMiner 或二進制閱讀器進行 CDC
將 Oracle Standby 設為 CDC 的來源。 AWS DMS 不支援「Oracle 待命管理系統」作為來源。 如需詳細資訊,請參閱 在 AWS DMS中使用 Amazon RDS Oracle Standby (僅供讀取複本) 作為使用 Binary Reader 的來源以進行 CDC

使用自我管理的 Oracle 資料庫作為來源 AWS DMS

自我管理資料庫是您可以設定和控制的資料庫,可以是本機內部部署資料庫執行個體或 Amazon EC2 上的資料庫。接下來,您可以瞭解搭 AWS DMS配使用自我管理的 Oracle 資料庫時所需的權限和組態。

自我管理的 Oracle 來源上所需的使用者帳戶權限 AWS DMS

若要使用 Oracle 資料庫作為中的來源 AWS DMS,請將下列權限授與 Oracle 端點連線設定值中指定的 Oracle 使用者。

注意

授予權限時,請使用物件實際名稱,而不是各物件的同義詞。例如,使用 V_$OBJECT (含底線),而非 V$OBJECT (不含底線)。

GRANT CREATE SESSION TO db_user; GRANT SELECT ANY TRANSACTION TO db_user; GRANT SELECT ON V_$ARCHIVED_LOG TO db_user; GRANT SELECT ON V_$LOG TO db_user; GRANT SELECT ON V_$LOGFILE TO db_user; GRANT SELECT ON V_$LOGMNR_LOGS TO db_user; GRANT SELECT ON V_$LOGMNR_CONTENTS TO db_user; GRANT SELECT ON V_$DATABASE TO db_user; GRANT SELECT ON V_$THREAD TO db_user; GRANT SELECT ON V_$PARAMETER TO db_user; GRANT SELECT ON V_$NLS_PARAMETERS TO db_user; GRANT SELECT ON V_$TIMEZONE_NAMES TO db_user; GRANT SELECT ON V_$TRANSACTION TO db_user; GRANT SELECT ON V_$CONTAINERS TO db_user; GRANT SELECT ON ALL_INDEXES TO db_user; GRANT SELECT ON ALL_OBJECTS TO db_user; GRANT SELECT ON ALL_TABLES TO db_user; GRANT SELECT ON ALL_USERS TO db_user; GRANT SELECT ON ALL_CATALOG TO db_user; GRANT SELECT ON ALL_CONSTRAINTS TO db_user; GRANT SELECT ON ALL_CONS_COLUMNS TO db_user; GRANT SELECT ON ALL_TAB_COLS TO db_user; GRANT SELECT ON ALL_IND_COLUMNS TO db_user; GRANT SELECT ON ALL_ENCRYPTED_COLUMNS TO db_user; GRANT SELECT ON ALL_LOG_GROUPS TO db_user; GRANT SELECT ON ALL_TAB_PARTITIONS TO db_user; GRANT SELECT ON SYS.DBA_REGISTRY TO db_user; GRANT SELECT ON SYS.OBJ$ TO db_user; GRANT SELECT ON DBA_TABLESPACES TO db_user; GRANT SELECT ON DBA_OBJECTS TO db_user; -– Required if the Oracle version is earlier than 11.2.0.3. GRANT SELECT ON SYS.ENC$ TO db_user; -– Required if transparent data encryption (TDE) is enabled. For more information on using Oracle TDE with AWS DMS, see 使用 Oracle 作為下列項目的來源所支援的加密方法 AWS DMS. GRANT SELECT ON GV_$TRANSACTION TO db_user; -– Required if the source database is Oracle RAC in AWS DMS versions 3.4.6 and higher. GRANT SELECT ON V_$DATAGUARD_STATS TO db_user; -- Required if the source database is Oracle Data Guard and Oracle Standby is used in the latest release of DMS version 3.4.6, version 3.4.7, and higher.

使用特定的資料表清單時,為每個複寫資料表授予下列其他權限。

GRANT SELECT on any-replicated-table to db_user;

授予額外的下列權限,以使用驗證功能驗證 LOB 資料欄。

GRANT EXECUTE ON SYS.DBMS_CRYPTO TO db_user;

如果您使用二進位讀取器而非使用二進位讀取器,請授與其 LogMiner他

GRANT SELECT ON SYS.DBA_DIRECTORIES TO db_user;

授予額外的下列權限以公開檢視。

GRANT SELECT on ALL_VIEWS to dms_user;

若要公開檢視,您還必須將 exposeViews=true 額外的連線屬性新增至來源端點。

使用無伺服器複寫時,授予額外的下列權限。

GRANT SELECT on dba_segments to db_user;

如需無伺服器複寫的相關資訊,請參閱使用 AWS DMS 無伺服器

使用 Oracle 特定的預遷移評估時,授予額外的下列權限。

GRANT SELECT on gv_$parameter to dms_user; GRANT SELECT on v_$instance to dms_user; GRANT SELECT on v_$version to dms_user; GRANT SELECT on gv_$ASM_DISKGROUP to dms_user; GRANT SELECT on gv_$database to dms_user; GRANT SELECT on dba_db_links to dms_user; GRANT SELECT on gv_$log_History to dms_user; GRANT SELECT on gv_$log to dms_user; GRANT SELECT ON DBA_TYPES TO db_user; GRANT SELECT ON DBA_USERS to dms_user; GRANT SELECT ON DBA_DIRECTORIES to dms_user;

如需 Oracle 特定預遷移評估的相關資訊,請參閱 甲骨文評估

處理 Oracle Standby 之開啟交易的先決條件

使用 3.4.6 及更新 AWS DMS 版本時,請執行下列步驟來處理「Oracle 待命管理系統」的未結交易。

  1. 在主要資料庫 DMS_USER 上建立名為 AWSDMS_DBLINK 的資料庫連結,將使用資料庫連結來連線至主要資料庫。請注意,資料庫連結是從待命執行個體執行,以查詢主要資料庫上執行的開啟交易。請參閱以下範例。

    CREATE PUBLIC DATABASE LINK AWSDMS_DBLINK CONNECT TO DMS_USER IDENTIFIED BY DMS_USER_PASSWORD USING '(DESCRIPTION= (ADDRESS=(PROTOCOL=TCP)(HOST=PRIMARY_HOST_NAME_OR_IP)(PORT=PORT)) (CONNECT_DATA=(SERVICE_NAME=SID)) )';
  2. 確認已如下列範例所示,使用 DMS_USER 來建立資料庫連結的連線。

    select 1 from dual@AWSDMS_DBLINK

使用準備適用於 CDC 的 Oracle 自我管理來源資料庫 AWS DMS

執行下列動作,準備將自我管理的 Oracle 資料庫作為執行 CDC 任務的來源:

驗證是否 AWS DMS 支援來源資料庫版本

執行類似下列範例的查詢,以確認 AWS DMS支援目前版本的 Oracle 來源資料庫。

SELECT name, value, description FROM v$parameter WHERE name = 'compatible';

此處的 namevaluedescription 是資料庫中某處的欄,資料庫會根據 name 值進行查詢。如果此查詢沒有錯誤地執行,則 AWS DMS 支援目前版本的資料庫,而且您可以繼續進行移轉。如果查詢引發錯誤,則 AWS DMS 不支持數據庫的當前版本。若要繼續移轉,請先將 Oracle 資料庫轉換為支援的版本 AWS DMS。

確保 ARCHIVELOG 模式處於開啟狀態

您可以使用兩種不同的模式來執行 Oracle:ARCHIVELOG 模式和 NOARCHIVELOG 模式。若要執行 CDC 任務,請在 ARCHIVELOG 模式中執行此資料庫。若要知道資料庫是否處於 ARCHIVELOG 模式,請執行以下查詢。

SQL> SELECT log_mode FROM v$database;

如果傳回的是 NOARCHIVELOG 模式,請按照 Oracle 指示將資料庫設為 ARCHIVELOG

設定補充記錄

若要擷取進行中的變更, AWS DMS 需要在 Oracle 來源資料庫上啟用最小的補充記錄日誌。此外,您還需要啟用資料庫中每個複寫資料表的補充記錄。

依預設, AWS DMS 會在所有複製的表格上新增PRIMARY KEY補充記錄日誌。若 AWS DMS 要允許新增PRIMARY KEY補充記錄日誌,請為每個複製的表格授與下列權限。

ALTER on any-replicated-table;

您可以使用額外的連線屬性來停 AWS DMS 用新增的預設PRIMARY KEY補充記錄addSupplementalLogging。如需詳細資訊,請參閱 使用 Oracle 作為來源時的端點設定 AWS DMS

如果複寫任務使用未參考主索引鍵資料欄的 WHERE 子句更新資料表,請務必開啟補充記錄。

若要手動設定補充記錄
  1. 執行下列查詢,以確認已啟用資料庫的補充記錄。

    SELECT supplemental_log_data_min FROM v$database;

    如果傳回的結果是 YESIMPLICIT,則會啟用資料庫的補充記錄。

    如果不是,請執行下列命令,以啟用資料庫的補充記錄。

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
  2. 確定已為每個複寫資料表新增必要的補充記錄。

    考慮下列各項:

    • 如果將 ALL COLUMNS 補充記錄新增至資料表,就不需要新增其他記錄。

    • 如果有主索引鍵,請新增主索引鍵的補充記錄。您可以使用格式,在主索引鍵本身上新增補充記錄,或在資料庫主索引鍵資料欄上新增補充記錄,來做到這一點。

      ALTER TABLE Tablename ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS; ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;
    • 如果沒有主索引鍵且資料表具有單一唯一索引,請將唯一索引的所有資料行新增至補充記錄檔。

      ALTER TABLE TableName ADD SUPPLEMENTAL LOG GROUP LogGroupName (UniqueIndexColumn1[, UniqueIndexColumn2] ...) ALWAYS;

      使用 SUPPLEMENTAL LOG DATA (UNIQUE INDEX) COLUMNS 不會將唯一索引資料行新增至日誌。

    • 如果沒有主鍵存在,並且該表具有多個唯一索引,則 AWS DMS 選擇按字母順序升序列表中的第一個唯一索引。您需要如同前一個項目,在選取索引的資料欄上新增補充記錄。

      使用 SUPPLEMENTAL LOG DATA (UNIQUE INDEX) COLUMNS 不會將唯一索引資料行新增至日誌。

    • 如果沒有主索引鍵且沒有唯一索引,請在所有資料行上新增補充記錄。

      ALTER TABLE TableName ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;

      在某些情況下,目標資料表的主索引鍵或唯一的索引,和來源資料表的主索引鍵或唯一的索引不相同。在這些情況下,請手動在來源資料表資料欄中新增補充記錄,以構成目標資料表的主索引鍵或唯一的索引。

      而且,如果您變更目標資料表的主索引鍵,請在目標唯一索引的資料行中新增補充記錄,而不是新增在來源主索引鍵或唯一索引的資料行中。

如果已定義資料表的篩選條件或轉換,您可能需要啟用其他記錄。

考慮下列各項:

  • 如果將 ALL COLUMNS 補充記錄新增至資料表,就不需要新增其他記錄。

  • 如果資料表有唯一的索引或主索引鍵,在與篩選條件或轉換有關的每個資料欄中新增補充記錄。但僅限若這些資料欄和主索引鍵或唯一索引的資料欄不相同,才這麼做。

  • 如果轉換只包含一個資料欄,請勿將此資料欄新增至補充記錄群組。例如,對於轉換 A+B,請在 A 欄和 B 欄上新增補充記錄。但是,對於轉換 substring(A,10),請不要在資料行 A 上新增補充記錄。

  • 若要在主索引鍵或唯一索引資料欄和其他篩選或轉換的資料欄上設定補充記錄,您可以設定 USER_LOG_GROUP 補充記錄。請在主索引鍵或唯一索引資料欄和其他已篩選或轉換的特定資料欄上新增此記錄。

    例如,若要使用資料欄 NAME,複寫以主索引鍵 ID 命名為 TEST.LOGGING 的資料表和篩選條件,您可以執行類似下列命令,以建立日誌群組補充記錄。

    ALTER TABLE TEST.LOGGING ADD SUPPLEMENTAL LOG GROUP TEST_LOG_GROUP (ID, NAME) ALWAYS;

使用 Oracle LogMiner 存取重做日誌時所需的帳戶權限

若要使用 Oracle 存取重做日誌 LogMiner,請將下列權限授與 Oracle 端點連線設定值中指定的 Oracle 使用者。

GRANT EXECUTE on DBMS_LOGMNR to db_user; GRANT SELECT on V_$LOGMNR_LOGS to db_user; GRANT SELECT on V_$LOGMNR_CONTENTS to db_user; GRANT LOGMINING to db_user; -– Required only if the Oracle version is 12c or higher.

使用 AWS DMS 二進位讀取器存取重做日誌時所需的帳戶權限

若要使用 AWS DMS 二進位讀取器存取重做日誌,請將下列權限授與 Oracle 端點連線設定中指定的 Oracle 使用者。

GRANT SELECT on v_$transportable_platform to db_user; -– Grant this privilege if the redo logs are stored in Oracle Automatic Storage Management (ASM) and AWS DMS accesses them from ASM. GRANT CREATE ANY DIRECTORY to db_user; -– Grant this privilege to allow AWS DMS to use Oracle BFILE read file access in certain cases. This access is required when the replication instance doesn't have file-level access to the redo logs and the redo logs are on non-ASM storage. GRANT EXECUTE on DBMS_FILE_TRANSFER to db_user; -– Grant this privilege to copy the redo log files to a temporary folder using the CopyToTempFolder method. GRANT EXECUTE on DBMS_FILE_GROUP to db_user;

Binary Reader 使用包括 Oracle 目錄的 Oracle 檔案功能。每個 Oracle 目錄物件都包含要處理之重做日誌檔的資料夾名稱。這些 Oracle 目錄不會在檔案系統層級表示。相反地,它們是在 Oracle 資料庫層級建立的邏輯目錄。您可以在 Oracle ALL_DIRECTORIES 檢視中檢視它們。

如果 AWS DMS 要建立這些 Oracle 目錄,請授與前面指定的CREATE ANY DIRECTORY權限。 AWS DMS 創建帶有DMS_前綴的目錄名稱。如果您不授予 CREATE ANY DIRECTORY 權限,請手動建立對應的目錄。在部分情況下,當您手動建立 Oracle 目錄時,Oracle 來源端點中指定的 Oracle 使用者不是建立這些目錄的使用者。在這些情況下,請同時授予 READ on DIRECTORY 權限。

如果 Oracle 來源端點位於作用中資料保護待命 (ADG) 中,請參閱資料庫部落格上的如何搭配 ADG 使用二進位讀取器與 ADG 一文。 AWS

注意

AWS DMS CDC 不支援未設定為使用自動重做傳輸服務的作用中資料保護裝置待命。

在某些情況下,您可以使用 Oracle 受管檔案 (OMF) 來儲存日誌。或者來源端點處於 ADG,因此您無法授予 CREATE ANY DIRECTORY 權限。在這些情況下,請先手動建立包含所有可能記錄位置的目錄,然後再開始 AWS DMS 複寫工作。如果 AWS DMS 找不到預期的預先設定目錄,工作就會停止。此外, AWS DMS 不會刪除它在 ALL_DIRECTORIES 檢視中建立的項目,因此請手動刪除。

使用 Binary Reader 搭配 Oracle ASM 時所需的其他帳戶權限

若要使用 Binary Reader 存取 Automatic Storage Management (ASM) 中的還原日誌,請將下列權限授予 Oracle 端點連線設定中指定的 Oracle 使用者。

SELECT ON v_$transportable_platform SYSASM -– To access the ASM account with Oracle 11g Release 2 (version 11.2.0.2) and higher, grant the Oracle endpoint user the SYSASM privilege. For older supported Oracle versions, it's typically sufficient to grant the Oracle endpoint user the SYSDBA privilege.

您可以開啟命令提示字元並呼叫下列其中一個陳述式,以驗證 ASM 帳戶存取權,視您之前指定的 Oracle 版本而定。

如果您需要 SYSDBA 權限,請使用以下內容。

sqlplus asmuser/asmpassword@+asmserver as sysdba

如果您需要 SYSASM 權限,請使用以下內容。

sqlplus asmuser/asmpassword@+asmserver as sysasm

在 AWS DMS中使用自我管理的 Oracle Standby 作為使用 Binary Reader 的來源進行 CDC

若要將 Oracle Standby 執行個體設定為使用 Binary Reader 進行 CDC 的來源,請從下列先決條件開始:

  • AWS DMS 目前僅支援「Oracle 作用中資料保全待命」。

  • 請確定 Oracle Data Guard 組態使用以下項目:

    • 還原傳輸服務,用於自動傳輸還原資料。

    • 套用服務以自動將還原套用至待命資料庫。

為了確認這些要求得到滿足,請執行以下查詢。

SQL> select open_mode, database_role from v$database;

從該查詢的輸出中,確認待命資料庫是以 READ ONLY 模式開啟,並自動套用還原。例如:

OPEN_MODE DATABASE_ROLE -------------------- ---------------- READ ONLY WITH APPLY PHYSICAL STANDBY
將 Oracle Standby 執行個體設定為使用 Binary Reader 進行 CDC 的來源
  1. 授予存取待命日誌檔所需的其他權限。

    GRANT SELECT ON v_$standby_log TO db_user;
  2. 使用 AWS Management Console 或 AWS CLI建立 Oracle Standby 的來源端點。建立端點時,請指定下列額外的連線屬性。

    useLogminerReader=N;useBfile=Y;
    注意

    在中 AWS DMS,您可以使用額外的連線屬性來指定是否要從存檔日誌移轉,而不是從重做日誌移轉。如需詳細資訊,請參閱 使用 Oracle 作為來源時的端點設定 AWS DMS

  3. 設定封存的日誌目的地。

    不含 ASM 之 Oracle 來源的 DMS Binary Reader 會使用 Oracle 目錄來存取封存的還原日誌。如果資料庫設定為使用快速復原區域 (FRA) 作為封存日誌目的地,則封存還原檔案的位置不是固定的。每天產生封存還原日誌,都會導致在 FRA 中使用目錄名稱格式 YYYY_MM_DD 建立新目錄。例如:

    DB_RECOVERY_FILE_DEST/SID/archivelog/YYYY_MM_DD

    當 DMS 需要存取新建立的 FRA 目錄中的封存還原檔案,且將主要讀寫資料庫用作為來源時,DMS 會如下所示,建立新的 Oracle 目錄或取代現有的 Oracle 目錄。

    CREATE OR REPLACE DIRECTORY dmsrep_taskid AS ‘DB_RECOVERY_FILE_DEST/SID/archivelog/YYYY_MM_DD’;

    當待命資料庫作為來源使用時,DMS 無法建立或取代 Oracle 目錄,因為資料庫處於唯讀模式。但是,您可以選擇執行以下其中一個額外步驟:

    1. 在 Oracle 不會建立每日子目錄的這類組態中,修改 log_archive_dest_id_1 以使用實際路徑 (而不是 FRA):

      ALTER SYSTEM SET log_archive_dest_1=’LOCATION=full directory path

      然後,建立要由 DMS 使用的 Oracle 目錄物件:

      CREATE OR REPLACE DIRECTORY dms_archived_logs AS ‘full directory path’;
    2. 建立其他封存日誌目的地,以及指向該目的地的 Oracle 目錄物件。例如:

      ALTER SYSTEM SET log_archive_dest_3=’LOCATION=full directory path’; CREATE DIRECTORY dms_archived_log AS ‘full directory path’;

      然後將額外的連線屬性新增至任務來源端點:

      archivedLogDestId=3
    3. 手動預先建立由 DMS 使用的 Oracle 目錄物件。

      CREATE DIRECTORY dms_archived_log_20210301 AS ‘DB_RECOVERY_FILE_DEST/SID/archivelog/2021_03_01’; CREATE DIRECTORY dms_archived_log_20210302 AS ‘DB_RECOVERY_FILE_DEST>/SID>/archivelog/2021_03_02’; ...
    4. 建立每日執行並建立所需目錄的 Oracle 排程器作業。

在 AWS DMS中使用 Oracle 雲端基礎架構 (OCI) 上的使用者管理資料庫作為來源以進行 CDC

使用者管理的資料庫是您設定和控制的資料庫,例如在虛擬機器 (VM)、裸機或 Exadata 伺服器上建立的 Oracle 資料庫。或者,您可以設定和控制在專用基礎架構上執行的資料庫,例如 Oracle 雲端基礎架構 (OCI)。下列資訊說明在 AWS DMS中使用 OCI 上的 Oracle 使用者管理資料庫作為來源進行變更資料擷取 (CDC) 時,所需的權限和組態。

將 OCI 代管使用者管理的 Oracle 資料庫設定為來源以進行變更資料擷取
  1. 授予 OCI 上自我管理 Oracle 來源資料庫所需的使用者帳戶權限。如需詳細資訊,請參閱自我管理 Oracle 來源端點的帳戶權限

  2. 授予使用 Binary Reader 存取還原日誌時所需的帳戶權限。如需詳細資訊,請參閱使用 Binary Reader 時所需的帳戶權限

  3. 新增將 Oracle Automatic Storage Management (ASM) 與 Binary Reader 搭配使用時所需的帳戶權限。如需詳細資訊,請參閱將 Oracle ASM 與 Binary Reader 搭配使用時所需的其他帳戶權限

  4. 設定補充記錄。如需詳細資訊,請參閱設定補充記錄

  5. 設定 TDE 加密。如需詳細資訊,請參閱使用 Oracle 資料庫作為來源端點時的加密方法

從 Oracle 雲端基礎架構 (OCI) 上的 Oracle 來源資料庫複寫資料時,請留意以下限制。

限制
  • DMS 不支援使用 Oracle 存 LogMiner 取重做日誌。

  • DMS 不支援自主資料庫。

使用 AWS受管理的 Oracle 資料庫作為來源 AWS DMS

AWS受管資料庫是位於 Amazon 服務 (例如 Amazon RDS、Amazon Aurora 或 Amazon S3) 上的資料庫。接下來,您可以找到搭 AWS DMS配使用 AWS受管理的 Oracle 資料庫時所需設定的權限和組態。

AWS受管理的 Oracle 來源所需的使用者帳戶權限 AWS DMS

將下列權限授予 Oracle 來源端點定義中指定的 Oracle 使用者帳戶。

重要

針對 db_userany-replicated-table 等所有參數值,除非您使用區分大小的識別碼來指定值,否則 Oracle 會假設值為全大寫。例如,假設您建立 db_user 值而不使用引號,如在 CREATE USER myuserCREATE USER MYUSER 中。在這種情況下,Oracle 會識別值並將其儲存為全大寫 (MYUSER)。如果您使用引號 (如在 CREATE USER "MyUser"CREATE USER 'MyUser' 中),Oracle 會識別並儲存您指定的區分大小寫的值 (MyUser)。

GRANT CREATE SESSION to db_user; GRANT SELECT ANY TRANSACTION to db_user; GRANT SELECT on DBA_TABLESPACES to db_user; GRANT SELECT ON any-replicated-table to db_user; GRANT EXECUTE on rdsadmin.rdsadmin_util to db_user; -- For Oracle 12c or higher: GRANT LOGMINING to db_user; – Required only if the Oracle version is 12c or higher.

此外,如下所示,使用 Amazon RDS 程序 rdsadmin.rdsadmin_util.grant_sys_objectSYS 物件授予 SELECTEXECUTE 許可。如需詳細資訊,請參閱將 SELECT 或 EXECUTE 權限授與 SYS 物件

exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_VIEWS', 'db_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_TAB_PARTITIONS', 'db_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_INDEXES', 'db_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_OBJECTS', 'db_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_TABLES', 'db_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_USERS', 'db_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_CATALOG', 'db_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_CONSTRAINTS', 'db_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_CONS_COLUMNS', 'db_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_TAB_COLS', 'db_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_IND_COLUMNS', 'db_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_LOG_GROUPS', 'db_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('V_$ARCHIVED_LOG', 'db_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOG', 'db_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOGFILE', 'db_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('V_$DATABASE', 'db_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('V_$THREAD', 'db_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('V_$PARAMETER', 'db_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('V_$NLS_PARAMETERS', 'db_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('V_$TIMEZONE_NAMES', 'db_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('V_$TRANSACTION', 'db_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('V_$CONTAINERS', 'db_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_REGISTRY', 'db_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('OBJ$', 'db_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_ENCRYPTED_COLUMNS', 'db_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOGMNR_LOGS', 'db_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOGMNR_CONTENTS','db_user','SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_LOGMNR', 'db_user', 'EXECUTE'); -- (as of Oracle versions 12.1 and higher) exec rdsadmin.rdsadmin_util.grant_sys_object('REGISTRY$SQLPATCH', 'db_user', 'SELECT'); -- (for Amazon RDS Active Dataguard Standby (ADG)) exec rdsadmin.rdsadmin_util.grant_sys_object('V_$STANDBY_LOG', 'db_user', 'SELECT'); -- (for transparent data encryption (TDE)) exec rdsadmin.rdsadmin_util.grant_sys_object('ENC$', 'db_user', 'SELECT'); -- (for validation with LOB columns) exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_CRYPTO', 'db_user', 'EXECUTE'); -- (for binary reader) exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_DIRECTORIES','db_user','SELECT'); -- Required when the source database is Oracle Data guard, and Oracle Standby is used in the latest release of DMS version 3.4.6, version 3.4.7, and higher. exec rdsadmin.rdsadmin_util.grant_sys_object('V_$DATAGUARD_STATS', 'db_user', 'SELECT');

如需使用 Amazon RDS Active Dataguard Standby (ADG) 搭配 AWS DMS 的詳細資訊,請參閱 在 AWS DMS中使用 Amazon RDS Oracle Standby (僅供讀取複本) 作為使用 Binary Reader 的來源以進行 CDC

如需搭配使用 Oracle TDE 的詳細資訊 AWS DMS,請參閱使用 Oracle 作為下列項目的來源所支援的加密方法 AWS DMS

處理 Oracle Standby 之開啟交易的先決條件

使用 3.4.6 及更新 AWS DMS 版本時,請執行下列步驟來處理「Oracle 待命管理系統」的未結交易。

  1. 在主要資料庫 DMS_USER 上建立名為 AWSDMS_DBLINK 的資料庫連結,將使用資料庫連結來連線至主要資料庫。請注意,資料庫連結是從待命執行個體執行,以查詢主要資料庫上執行的開啟交易。請參閱以下範例。

    CREATE PUBLIC DATABASE LINK AWSDMS_DBLINK CONNECT TO DMS_USER IDENTIFIED BY DMS_USER_PASSWORD USING '(DESCRIPTION= (ADDRESS=(PROTOCOL=TCP)(HOST=PRIMARY_HOST_NAME_OR_IP)(PORT=PORT)) (CONNECT_DATA=(SERVICE_NAME=SID)) )';
  2. 確認已如下列範例所示,使用 DMS_USER 來建立資料庫連結的連線。

    select 1 from dual@AWSDMS_DBLINK

設定 AWS管理的 Oracle 來源 AWS DMS

使用 AWS受管理的 Oracle 資料庫作為來源之前 AWS DMS,請先針對 Oracle 資料庫執行下列作業:

  • 啟用自動備份。如需詳細資訊,請參閱《Amazon RDS 使用者指南》中的啟用自動備份

  • 設定補充記錄。

  • 設定存檔。封存 Amazon RDS for Oracle 資料庫執行個體的重做日誌可讓 AWS DMS 您使用 Oracle LogMiner 或二進位讀取器擷取日誌資訊。

若要設定封存
  1. 執行 rdsadmin.rdsadmin_util.set_configuration 命令以設定封存。

    例如,若要將封存的還原日誌保留 24 小時,請執行下列命令。

    exec rdsadmin.rdsadmin_util.set_configuration('archivelog retention hours',24); commit;
    注意

    需要遞交命令,變更才會生效。

  2. 請確定儲存體有足夠的空間可供封存的還原日誌在指定的保留期間使用。例如,如果保留期間為 24 小時,請計算一般交易處理小時內累積的封存還原日誌總大小,再將該值乘以 24。將此計算的 24 小時總計與可用儲存空間進行比較,並決定您的儲存空間是否足以處理完整的 24 小時交易處理。

若要設定補充記錄
  1. 請執行下列命令以啟用資料庫層級的補充記錄。

    exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD');
  2. 請執行下列命令以啟用主索引鍵補充記錄。

    exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD','PRIMARY KEY');
  3. (選用) 在資料表層級啟用金鑰層級補充記錄。

    啟用金鑰層級補充記錄時,來源資料庫會產生一小部分開銷。因此,如果您僅遷移資料表的子集,建議您在資料表層級啟用金鑰層級補充記錄。若要在資料表層級啟用金鑰層級補充記錄,請執行下列命令。

    alter table table_name add supplemental log data (PRIMARY KEY) columns;

將 CDC 工作設定為使用二進位讀取器搭配使用適用於 Oracle 來源的 RDS AWS DMS

您可以設定 AWS DMS 為使用適用於 CDC 的二進位讀取器存取來源 Amazon RDS for Oracle 執行個體重做日誌。

注意

要使用 Oracle LogMiner,所需的最低用戶帳戶權限就足夠了。如需詳細資訊,請參閱 AWS受管理的 Oracle 來源所需的使用者帳戶權限 AWS DMS

若要使用 AWS DMS 二進位讀取器,請根據您的 AWS DMS 版本,為 Oracle 來源端點指定其他設定和額外的連線屬性。

以下版本的 Amazon RDS for Oracle 中提供 Binary Reader 支援:

  • Oracle 11.2:11.2.0.4V11 版和更高版本

  • Oracle 12.1:12.1.0.2.V7 版和更高版本

  • Oracle 12.2:所有版本

  • Oracle 18.0:所有版本

  • Oracle 19.0:所有版本

使用 Binary Reader 設定 CDC
  1. 以主要使用者身分登入 Amazon RDS for Oracle 來源資料庫,然後執行下列預存程序以建立伺服器層級的目錄。

    exec rdsadmin.rdsadmin_master_util.create_archivelog_dir; exec rdsadmin.rdsadmin_master_util.create_onlinelog_dir;
  2. 授予以下 Oracle 使用者帳戶權限,此權限會用來存取 Oracle 來源端點。

    GRANT READ ON DIRECTORY ONLINELOG_DIR TO db_user; GRANT READ ON DIRECTORY ARCHIVELOG_DIR TO db_user;
  3. 在 Amazon RDS Oracle 來源端點上,設定額外的連線屬性:

    • 對於 RDS Oracle 11.2 和 12.1 版,請進行以下設定。

      useLogminerReader=N;useBfile=Y;accessAlternateDirectly=false;useAlternateFolderForOnline=true; oraclePathPrefix=/rdsdbdata/db/{$DATABASE_NAME}_A/;usePathPrefix=/rdsdbdata/log/;replacePathPrefix=true;
    • 對於 RDS Oracle 12.2、18.0 和 19.0 版,請進行以下設定。

      useLogminerReader=N;useBfile=Y;
注意

請確保多個屬性設定的分號分隔符號 (;) 後沒有空格 (例如 oneSetting;thenAnother)。

如需設定 CDC 任務的詳細資訊,請參閱Oracle 來源資料庫的 CDC 組態

在 AWS DMS中使用 Amazon RDS Oracle Standby (僅供讀取複本) 作為使用 Binary Reader 的來源以進行 CDC

在 AWS DMS中使用 Binary Reader 進行 CDC 時,請確認使用 Amazon RDS for Oracle Standby 作為來源的以下先決條件:

  • 使用 Oracle 主要使用者來設定 Binary Reader。

  • 請確定 AWS DMS 目前僅支援使用「Oracle 作用中資料保全待命」。

執行此作業之後,請使用下列程序,在使用 Binary Reader 進行 CDC 時,使用 RDS for Oracle Standby 作為來源。

在使用 Binary Reader 進行 CDC 時,將 RDS for Oracle Standby 設定為來源
  1. 以主要使用者身分登入 RDS for Oracle 主要執行個體。

  2. 依照 Amazon RDS 使用者指南中的說明執行下列預存程序,以建立伺服器層級目錄。

    exec rdsadmin.rdsadmin_master_util.create_archivelog_dir; exec rdsadmin.rdsadmin_master_util.create_onlinelog_dir;
  3. 識別在步驟 2 中建立的目錄。

    SELECT directory_name, directory_path FROM all_directories WHERE directory_name LIKE ( 'ARCHIVELOG_DIR_%' ) OR directory_name LIKE ( 'ONLINELOG_DIR_%' )

    例如,上述程式碼會顯示類似下列的目錄清單。

  4. 將先前目錄的 Read 權限授予用來存取 Oracle Standby 的 Oracle 使用者帳戶。

    GRANT READ ON DIRECTORY ARCHIVELOG_DIR_A TO db_user; GRANT READ ON DIRECTORY ARCHIVELOG_DIR_B TO db_user; GRANT READ ON DIRECTORY ONLINELOG_DIR_A TO db_user; GRANT READ ON DIRECTORY ONLINELOG_DIR_B TO db_user;
  5. 在主要執行個體上執行封存日誌切換。這樣做可確保對 ALL_DIRECTORIES 所做的變更也會移植到 Oracle Standby。

  6. 在 Oracle Standby 上執行 ALL_DIRECTORIES 查詢,以確認已套用變更。

  7. 使用「管理主控台」或 AWS Command Line Interface (AWS CLI) 建立「Oracle 待命 AWS DMS 管理系統」的來源端點。建立端點時,請指定下列額外連線屬性。

    useLogminerReader=N;useBfile=Y;archivedLogDestId=1;additionalArchivedLogDestId=2
  8. 建立端點後,請使用主控台的 [建立端點] 頁面上的 [測試端點連線] 或使用 AWS CLI test-connection命令來確認已建立連線。

使用 Oracle 作為來源的限制 AWS DMS

使用 Oracle 資料庫做為 AWS DMS來源時,有下列限制:

  • AWS DMS 在 AWS DMS 版本 3.5.0 及更高版本中支援 Oracle 擴充資料類型。

  • AWS DMS 不支持長對象名稱(超過 30 個字節)。

  • AWS DMS 不支持基於函數的索引。

  • 如果您管理補充記錄,並在任何資料欄上執行轉換,請確定已啟用所有欄位和資料欄的補充記錄。如需設定補充記錄的相關資訊,請參閱下列主題:

  • AWS DMS 不支援多租用戶容器根資料庫 (CDB$ROOT)。其確實支援使用 Binary Reader 的 PDB。

  • AWS DMS 不支持延遲約束。

  • 在 AWS DMS 版本 3.5.1 及更新版本中,只有執行 LOB 查閱才能支援安全 LOB。

  • AWS DMS 支援所有受支援的 Oracle 版本 11 及更高版本的rename table table-name to new-table-name語法。任何 Oracle 10 版來源資料庫皆不支援此語法。

  • AWS DMS 不會複寫 DDL 陳述ALTER TABLE ADD column data_type DEFAULT default_value式的結果。不會將 default_value 複寫至目標,而是將新的資料欄設定為 NULL

  • 使用 3.4.7 AWS DMS 版或更新版本時,若要複製磁碟分割或子分割區作業所產生的變更,請在開始 DMS 工作之前執行下列動作。

    • 手動建立分割資料表結構 (DDL);

    • 確保 Oracle 來源和 Oracle 目標上的 DDL 是相同的;

    • 設定額外的連線屬性 enableHomogenousPartitionOps=true

    如需 enableHomogenousPartitionOps 的相關資訊,請參閱 使用 Oracle 作為來源時的端點設定 AWS DMS。另請注意,在 FULL+CDC 任務上,DMS 不會複寫作為快取變更一部分所擷取的資料變更。在該使用案例中,請在 Oracle 目標上重新建立資料表結構,然後重新載入有問題的資料表。

    在 AWS DMS 版本 3.4.7 之前的版本中:

    DMS 不會複寫由分割區或子分割區操作 (ADDDROPEXCHANGETRUNCATE) 所產生的資料變更。這類更新可能會在複寫期間造成下列錯誤:

    • 對於 ADD 操作,更新和刪除新增資料可能會引發「0 則資料列受影響」警告。

    • 對於 DROPTRUNCATE 操作,新插入可能會導致「複寫」錯誤。

    • EXCHANGE 操作可能會導致「0 行受影響」警告和「重複」錯誤。

    若要複寫由分割區或子分割區操作所產生的變更,請重新載入有問題的資料表。新增空白分割區之後,新增的分割區上的操作會像平常一樣複寫到目標。

  • AWS DMS 3.4 之前的版本不支援在來源上執行CREATE TABLE AS陳述式所導致的目標上的資料變更。不過,會在目標上建立新的資料表。

  • AWS DMS 不會擷取 Oracle DBMS_REDEFINITION 套件所做的變更,例如資料表中繼資料和OBJECT_ID欄位。

  • AWS DMS 將空白的 BLOB 和 CLOB 資料行對應至目標NULL上。

  • 使用 Oracle 11 捕獲更改時 LogMiner,字符串長度大於 1982 的 CLOB 列上的更新將丟失,並且不會更新目標。

  • 在變更資料擷取 (CDC) 期間, AWS DMS 不支援批次更新定義為主索引鍵的數值欄。

  • AWS DMS 不支持某些UPDATE命令。下列範例是不支援的 UPDATE 命令。

    UPDATE TEST_TABLE SET KEY=KEY+1;

    這裡,TEST_TABLE 是資料表名稱,而 KEY 是定義為主索引鍵的數值資料行。

  • AWS DMS 不支援完整 LOB 模式來載入長和長原始資料行。相反地,您可以使用有限 LOB 模式,將這些資料類型遷移至 Oracle 目標。在限制 LOB 模式中, AWS DMS 會將任何資料截斷為 64 KB (長) 或長原始資料行長度超過 64 KB 的資料行。

  • AWS DMS 不支援載入 XMLTYPE 資料行的完整 LOB 模式。相反地,您可以使用有限的 LOB 模式,將 XMLTYPE 資料欄遷移至 Oracle 目標。在有限 LOB 模式中,DMS 會截斷任何大於使用者定義之「LOB 大小上限」變數的資料。「LOB 大小上限」的建議值上限為 100MB。

  • AWS DMS 不會複寫名稱包含撇號的表格。

  • AWS DMS 支援具體化視觀表的 CDC。但是 DMS 不支援任何其他檢視中的 CDC。

  • AWS DMS 對於具有上限溢位區段的索引組織表格,不支援 CDC。

  • AWS DMS 不支援按參照enableHomogenousPartitionOpsDrop Partition定為分區的資料表的作業true

  • 當您使用 Oracle 存 LogMiner 取重做日誌時,會 AWS DMS 有下列限制:

    • 僅適用於 Oracle 12, AWS DMS 不會將任何變更複寫至 LOB 資料行。

    • 對於所有 Oracle 版本, AWS DMS 不會複寫 LOB 資料UPDATE行上XMLTYPE的作業結果。

    • AWS DMS 使用 Oracle 時,不支援複寫中的 XA 交易 LogMiner。

    • 甲骨文 LogMiner 不支持與可插拔數據庫(PDB)的連接。若要連線到 PDB,請使用 Binary Reader 存取重做日誌。

    • 不支援 SHRINK SPACE 操作。

  • 當您使用二進位讀取器時, AWS DMS 有下列限制:

    • 不支援資料表叢集。

    • 其支援僅資料表層級的 SHRINK SPACE 操作。這個層級包括完整的資料表、分割區和子分割區。

    • 不支援使用索引鍵壓縮對索引組織資料表的變更。

    • 其不支援在原始裝置上實作線上還原日誌。

    • Binary Reader 僅支援自我管理 Oracle 資料庫的 TDE,因為 RDS for Oracle 不支援 TDE 加密金鑰的錢包密碼擷取。

  • AWS DMS 不支援使用 Oracle 自動儲存管理 (ASM) 代理伺服器連線至 Amazon RDS Oracle 來源。

  • AWS DMS 不支持虛擬列。

  • AWS DMS 不支援以 ROWID ROWID 資料行為基礎的資料類型或具體化視觀表。

    AWS DMS 有「Oracle 具體化視觀表」的部分支援。對於完全載入,DMS 可以執行 Oracle 具體化視觀表的完全載入複本。DMS 會將具體化視觀表作為基礎資料表複製到目標系統,並忽略具體化視觀表中的任何 ROWID 資料欄。對於進行中複寫 (CDC),DMS 會嘗試將變更複寫到具體化視觀表資料,但結果可能不理想。特別是,如果「具體化視觀表」經過完整重新整理,DMS 會針對所有資料列複寫個別的刪除,然後針對所有資料列複寫個別插入。這是一個非常耗費資源的練習,對於具有大量資料列的具體化視觀表的效能可能不佳。對於具體化視觀表進行快速重新整理的進行中複寫,DMS 會嘗試處理並複寫快速重新整理資料變更。在任一情況下,DMS 都會略過具體化視觀表中的任何 ROWID 資料欄。

  • AWS DMS 不會載入或擷取全域暫存資料表。

  • 對於使用複寫的 S3 目標,請在每個資料欄上啟用補充記錄,以便來源資料列更新可以擷取每個資料欄值。範例如下:alter table yourtablename add supplemental log data (all) columns;

  • 無法在目標上複寫資料列的更新,其具有包含 null 的複合唯一索引鍵。

  • AWS DMS 不支援在相同的來源端點上使用多個 Oracle TDE 加密金鑰。每個端點只能有一個 TDE 加密金鑰名稱「securityDbEncryptionName」的屬性,而此金鑰只能有一個 TDE 密碼。

  • 從 Amazon RDS for Oracle 文進行複製時,只有加密的表格空間和使用 Oracle 才支援 TDE。 LogMiner

  • AWS DMS 不支援快速連續多個表格重新命名作業。

  • 使用 Oracle 19.0 做為原始碼時, AWS DMS 不支援下列功能:

    • 資料保護 DML 重新導向

    • 分割混合式資料表

    • 僅限結構描述的 Oracle 帳戶

  • AWS DMS 不支援移轉或類型的資料表BIN$或檢視DR$

  • 從甲骨文 18.x 開始, AWS DMS 不支持從甲骨文快速版(甲骨文數據庫 XE)的變更數據捕獲(CDC)。

  • 從 CHAR 資料欄遷移資料時,DMS 會截斷任何結尾空格。

  • AWS DMS 不支援從應用程式容器複寫。

  • AWS DMS 不支援執行「Oracle 倒溯資料庫」與回復點,因為這些作業會影響「Oracle 重做日誌」檔案的一致性。

  • 下列情況不支援使用平行執行選項的直接載入 INSERT 程序:

    • 包含 255 個以上資料欄的未壓縮資料表

    • 資料列大小超過 8K

    • Exadata HCC 資料表

    • 在大端序平台上運行的數據庫

  • 不含主索引鍵或唯一索引鍵的來源資料表需要啟用 ALL COLUMN 補充記錄。其會建立更多還原日誌活動,並且可能會增加 DMS CDC 延時。

  • AWS DMS 不會從源數據庫中的不可見列遷移數據。若要在遷移範圍中包含這些資料欄,請使用 ALTER TABLE 陳述式將這些資料欄設為可見。

Oracle 端點的 SSL 支援

AWS DMS 甲骨文端點支持 SSL V3 的noneverify-ca SSL 模式。若要搭配 Oracle 端點使用 SSL,上傳適用於端點的 Oracle 錢包,而不是 .pem 憑證檔案。

為 Oracle SSL 使用現有憑證

若要使用現有的 Oracle 用戶端安裝從 CA 憑證檔案建立 Oracle 錢包,請執行下列步驟。

若要透過 AWS DMS為 Oracle SSL 使用現有的 Oracle 用戶端安裝
  1. 執行下列命令,將 ORACLE_HOME 系統變數設為您的 dbhome_1 目錄位置。

    prompt>export ORACLE_HOME=/home/user/app/user/product/12.1.0/dbhome_1
  2. 附加 $ORACLE_HOME/libLD_LIBRARY_PATH 系統變數。

    prompt>export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
  3. $ORACLE_HOME/ssl_wallet 建立 Oracle 錢包的目錄。

    prompt>mkdir $ORACLE_HOME/ssl_wallet
  4. 將 CA 憑證 .pem 檔案放在 ssl_wallet 目錄中。若是使用 Amazon RDS,您可以下載由 Amazon RDS 託管之 rds-ca-2015-root.pem 根 CA 憑證檔案。如需下載此檔案的相關資訊,請參閱《Amazon RDS 使用者指南》中的使用 SSL/TLS 加密與資料庫執行個體的連線

  5. 執行下列命令來建立 Oracle 錢包。

    prompt>orapki wallet create -wallet $ORACLE_HOME/ssl_wallet -auto_login_only prompt>orapki wallet add -wallet $ORACLE_HOME/ssl_wallet -trusted_cert -cert $ORACLE_HOME/ssl_wallet/ca-cert.pem -auto_login_only

當您完成上述步驟時,您就可以透過指定 certificate-wallet 參數,來使用 ImportCertificate API 呼叫匯入錢包檔案。如果您在建立或修改 Oracle 端點時選取 verify-ca 做為 SSL 模式,您就可以接著使用匯入的錢包憑證。

注意

甲骨文錢包是二進製文件。 AWS DMS 會依原樣接受這些檔案。

為 Oracle SSL 使用自我簽署的憑證

若要針對 Oracle SSL 使用自我簽署憑證,請執行下列步驟 (假設 Oracle 錢包密碼為 oracle123)。

若要搭配使用 Oracle SSL 的自我簽署憑證 AWS DMS
  1. 建立您要用來處理自簽憑證的目錄。

    mkdir -p /u01/app/oracle/self_signed_cert
  2. 變更為您在上一個步驟中建立的目錄。

    cd /u01/app/oracle/self_signed_cert
  3. 建立根金鑰。

    openssl genrsa -out self-rootCA.key 2048
  4. 使用您在上一個步驟中建立的根金鑰來自簽根憑證。

    openssl req -x509 -new -nodes -key self-rootCA.key -sha256 -days 3650 -out self-rootCA.pem

    使用以下輸入參數。

    • Country Name (2 letter code) [XX],例如:AU

    • State or Province Name (full name) [],例如:NSW

    • Locality Name (e.g., city) [Default City],例如:Sydney

    • Organization Name (e.g., company) [Default Company Ltd],例如:AmazonWebService

    • Organizational Unit Name (e.g., section) [],例如:DBeng

    • Common Name (e.g., your name or your server's hostname) [],例如:aws

    • Email Address [],例如:abcd.efgh@amazonwebservice.com

  5. 建立 Oracle 資料庫的 Oracle 錢包目錄。

    mkdir -p /u01/app/oracle/wallet
  6. 建立新的 Oracle 錢包。

    orapki wallet create -wallet "/u01/app/oracle/wallet" -pwd oracle123 -auto_login_local
  7. 將根憑證新增至 Oracle 錢包。

    orapki wallet add -wallet "/u01/app/oracle/wallet" -pwd oracle123 -trusted_cert -cert /u01/app/oracle/self_signed_cert/self-rootCA.pem
  8. 列出 Oracle 錢包的內容。此清單應該包含根憑證。

    orapki wallet display -wallet /u01/app/oracle/wallet -pwd oracle123

    例如,這可能會顯示類似以下內容。

    Requested Certificates: User Certificates: Trusted Certificates: Subject: CN=aws,OU=DBeng,O= AmazonWebService,L=Sydney,ST=NSW,C=AU
  9. 使用 ORAPKI 公用程式來產生憑證簽署請求 (CSR)。

    orapki wallet add -wallet "/u01/app/oracle/wallet" -pwd oracle123 -dn "CN=aws" -keysize 2048 -sign_alg sha256
  10. 執行下列命令。

    openssl pkcs12 -in /u01/app/oracle/wallet/ewallet.p12 -nodes -out /u01/app/oracle/wallet/nonoracle_wallet.pem

    其輸出如下所示。

    Enter Import Password: MAC verified OK Warning unsupported bag type: secretBag
  11. 放入 'dms' 做為通用名稱。

    openssl req -new -key /u01/app/oracle/wallet/nonoracle_wallet.pem -out certdms.csr

    使用以下輸入參數。

    • Country Name (2 letter code) [XX],例如:AU

    • State or Province Name (full name) [],例如:NSW

    • Locality Name (e.g., city) [Default City],例如:Sydney

    • Organization Name (e.g., company) [Default Company Ltd],例如:AmazonWebService

    • Organizational Unit Name (e.g., section) [],例如:aws

    • Common Name (e.g., your name or your server's hostname) [],例如:aws

    • Email Address [],例如:abcd.efgh@amazonwebservice.com

    確保這與步驟 4 不同。您可以執行此操作,如範例所示,將組織單位名稱變更為不同的名稱。

    輸入要與憑證請求一起傳送的其他屬性。

    • A challenge password [],例如:oracle123

    • An optional company name [],例如:aws

  12. 取得憑證簽章。

    openssl req -noout -text -in certdms.csr | grep -i signature

    這篇貼文的簽章金鑰是 sha256WithRSAEncryption

  13. 執行下列命令來產生憑證 (.crt) 檔案。

    openssl x509 -req -in certdms.csr -CA self-rootCA.pem -CAkey self-rootCA.key -CAcreateserial -out certdms.crt -days 365 -sha256

    其顯示的輸出如下所示。

    Signature ok subject=/C=AU/ST=NSW/L=Sydney/O=awsweb/OU=DBeng/CN=aws Getting CA Private Key
  14. 將憑證新增至錢包。

    orapki wallet add -wallet /u01/app/oracle/wallet -pwd oracle123 -user_cert -cert certdms.crt
  15. 檢視錢包。其應有兩個項目。請參閱下列程式碼。

    orapki wallet display -wallet /u01/app/oracle/wallet -pwd oracle123
  16. 設定 sqlnet.ora 檔案 ($ORACLE_HOME/network/admin/sqlnet.ora)。

    WALLET_LOCATION = (SOURCE = (METHOD = FILE) (METHOD_DATA = (DIRECTORY = /u01/app/oracle/wallet/) ) ) SQLNET.AUTHENTICATION_SERVICES = (NONE) SSL_VERSION = 1.0 SSL_CLIENT_AUTHENTICATION = FALSE SSL_CIPHER_SUITES = (SSL_RSA_WITH_AES_256_CBC_SHA)
  17. 停止 Oracle 接聽程式。

    lsnrctl stop
  18. listener.ora 檔案 ($ORACLE_HOME/network/admin/listener.ora) 中新增 SSL 項目。

    SSL_CLIENT_AUTHENTICATION = FALSE WALLET_LOCATION = (SOURCE = (METHOD = FILE) (METHOD_DATA = (DIRECTORY = /u01/app/oracle/wallet/) ) ) SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = SID) (ORACLE_HOME = ORACLE_HOME) (SID_NAME = SID) ) ) LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCPS)(HOST = localhost.localdomain)(PORT = 1522)) (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) ) )
  19. 設定 tnsnames.ora 檔案 ($ORACLE_HOME/network/admin/tnsnames.ora)。

    <SID>= (DESCRIPTION= (ADDRESS_LIST = (ADDRESS=(PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = <SID>) ) ) <SID>_ssl= (DESCRIPTION= (ADDRESS_LIST = (ADDRESS=(PROTOCOL = TCPS)(HOST = localhost.localdomain)(PORT = 1522)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = <SID>) ) )
  20. 重新啟動 Oracle 接聽程式。

    lsnrctl start
  21. 顯示 Oracle 接聽程式狀態。

    lsnrctl status
  22. 使用 sqlplus 和 SSL tnsnames 項目來測試從 localhost 到資料庫的 SSL 連線。

    sqlplus -L ORACLE_USER@SID_ssl
  23. 驗證您已使用 SSL 成功連線。

    SELECT SYS_CONTEXT('USERENV', 'network_protocol') FROM DUAL; SYS_CONTEXT('USERENV','NETWORK_PROTOCOL') -------------------------------------------------------------------------------- tcps
  24. 將目錄變更為包含自簽憑證的目錄。

    cd /u01/app/oracle/self_signed_cert
  25. 建立 AWS DMS 要使用的新從屬端 Oracle 公事包。

    orapki wallet create -wallet ./ -auto_login_only
  26. 將自簽根憑證新增至 Oracle 錢包。

    orapki wallet add -wallet ./ -trusted_cert -cert self-rootCA.pem -auto_login_only
  27. 列出 AWS DMS 要使用的 Oracle 公事包內容。此清單應該包含自簽根憑證。

    orapki wallet display -wallet ./

    其輸出如下所示。

    Trusted Certificates: Subject: CN=aws,OU=DBeng,O=AmazonWebService,L=Sydney,ST=NSW,C=AU
  28. 上傳您剛建立的 Oracle 公事包 AWS DMS。

使用 Oracle 作為下列項目的來源所支援的加密方法 AWS DMS

在下表中,您可以找到使用 Oracle 來源資料庫時 AWS DMS 支援的通透資料加密 (TDE) 方法。

重做日誌存取方法 TDE 資料表空間 TDE 資料行
甲骨文 LogMiner
Binary Reader

AWS DMS 在資料欄層次和表格空間層次使用二進位讀取器時,都支援 Oracle TDE。若要搭配使用 TDE 加密 AWS DMS,請先識別儲存 TDE 加密金鑰和 TDE 密碼的 Oracle 公事包位置。然後為 Oracle 來源端點識別正確的 TDE 加密金鑰和密碼。

識別並指定 TDE 加密的加密金鑰和密碼
  1. 執行下列查詢,以尋找 Oracle 資料庫主機上的 Oracle 加密錢包。

    SQL> SELECT WRL_PARAMETER FROM V$ENCRYPTION_WALLET; WRL_PARAMETER -------------------------------------------------------------------------------- /u01/oracle/product/12.2.0/dbhome_1/data/wallet/

    在此處,/u01/oracle/product/12.2.0/dbhome_1/data/wallet/ 便是指錢包的位置。

  2. 使用下列其中一個加密選項取得主金鑰 ID,視傳回此值的選項為何而定。

    1. 對於資料表或資料欄層級加密,請執行下列查詢。

      SQL> SELECT OBJECT_ID FROM ALL_OBJECTS WHERE OWNER='DMS_USER' AND OBJECT_NAME='TEST_TDE_COLUMN' AND OBJECT_TYPE='TABLE'; OBJECT_ID --------------- 81046 SQL> SELECT MKEYID FROM SYS.ENC$ WHERE OBJ#=81046; MKEYID ------------ AWGDC9glSk8Xv+3bVveiVSgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

      AWGDC9glSk8Xv+3bVveiVSg 在這處是主金鑰 ID (MKEYID)。如果您取得 MKEYID 的值,您可以繼續執行步驟 3。否則,請繼續步驟 2.2。

      注意

      結尾字串 'A' 字元 (AAA...) 不是值的一部分。

    2. 對於資料表空間層級加密,請執行下列查詢。

      SQL> SELECT TABLESPACE_NAME, ENCRYPTED FROM dba_tablespaces; TABLESPACE_NAME ENC ------------------------------ --- SYSTEM NO SYSAUX NO UNDOTBS1 NO TEMP NO USERS NO TEST_ENCRYT YES SQL> SELECT name,utl_raw.cast_to_varchar2( utl_encode.base64_encode('01'||substr(mkeyid,1,4))) || utl_raw.cast_to_varchar2( utl_encode.base64_encode(substr(mkeyid,5,length(mkeyid)))) masterkeyid_base64 FROM (SELECT t.name, RAWTOHEX(x.mkid) mkeyid FROM v$tablespace t, x$kcbtek x WHERE t.ts#=x.ts#) WHERE name = 'TEST_ENCRYT'; NAME MASTERKEYID_BASE64 ------------------------------ ---------------------------------- TEST_ENCRYT AWGDC9glSk8Xv+3bVveiVSg=

      AWGDC9glSk8Xv+3bVveiVSg 在這處是主金鑰 ID (TEST_ENCRYT)。如果兩個步驟 2.1 和 2.2 都傳回一個值,則這些值一律相同。

      結尾 '=' 字元不是值的一部分。

  3. 從命令行列出來源 Oracle 資料庫主機上的加密錢包項目。

    $ mkstore -wrl /u01/oracle/product/12.2.0/dbhome_1/data/wallet/ -list Oracle Secret Store entries: ORACLE.SECURITY.DB.ENCRYPTION.AWGDC9glSk8Xv+3bVveiVSgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ORACLE.SECURITY.DB.ENCRYPTION.AY1mRA8OXU9Qvzo3idU4OH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAA ORACLE.SECURITY.DB.ENCRYPTION.MASTERKEY ORACLE.SECURITY.ID.ENCRYPTION. ORACLE.SECURITY.KB.ENCRYPTION. ORACLE.SECURITY.KM.ENCRYPTION.AY1mRA8OXU9Qvzo3idU4OH4AAAAAAAAAAAAAAAAAAAAAAAAAAAAA

    尋找內含您在步驟 2 (AWGDC9glSk8Xv+3bVveiVSg) 中找到之主金鑰 ID 的項目。此項目是 TDE 加密金鑰名稱。

  4. 檢視您於之前步驟中找到的項目詳細資訊。

    $ mkstore -wrl /u01/oracle/product/12.2.0/dbhome_1/data/wallet/ -viewEntry ORACLE.SECURITY.DB.ENCRYPTION.AWGDC9glSk8Xv+3bVveiVSgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Oracle Secret Store Tool : Version 12.2.0.1.0 Copyright (c) 2004, 2016, Oracle and/or its affiliates. All rights reserved. Enter wallet password: ORACLE.SECURITY.DB.ENCRYPTION.AWGDC9glSk8Xv+3bVveiVSgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA = AEMAASAASGYs0phWHfNt9J5mEMkkegGFiD4LLfQszDojgDzbfoYDEACv0x3pJC+UGD/PdtE2jLIcBQcAeHgJChQGLA==

    輸入錢包密碼以查看結果。

    在這裡,'=' 右邊的值是 TDE 密碼。

  5. 透過設定 securityDbEncryptionName 額外的連線屬性,指定 Oracle 來源端點的 TDE 加密金鑰名稱。

    securityDbEncryptionName=ORACLE.SECURITY.DB.ENCRYPTION.AWGDC9glSk8Xv+3bVveiVSgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  6. 在主控台上提供此金鑰的相關 TDE 密碼,作為 Oracle 來源密碼值的一部份。使用下列順序格式化以 TDE 密碼值結尾的逗號分隔密碼值。

    Oracle_db_password,ASM_Password,AEMAASAASGYs0phWHfNt9J5mEMkkegGFiD4LLfQszDojgDzbfoYDEACv0x3pJC+UGD/PdtE2jLIcBQcAeHgJChQGLA==

    無論您的 Oracle 資料庫組態為何,請依此順序指定密碼值。例如,如果您使用的是 TDE,但 Oracle 資料庫並未使用 ASM,請依照下列逗號分隔順序指定密碼值。

    Oracle_db_password,,AEMAASAASGYs0phWHfNt9J5mEMkkegGFiD4LLfQszDojgDzbfoYDEACv0x3pJC+UGD/PdtE2jLIcBQcAeHgJChQGLA==

如果您指定的 TDE 認證不正確, AWS DMS 移轉工作不會失敗。不過,任務也不會讀取進行中複寫變更,或將其套用至目標資料庫。開始任務後,請監控主控台遷移任務頁面上的資料表統計資料,以確定變更已複寫。

如果 DBA 在任務執行時變更 Oracle 資料庫的 TDE 憑證值,則任務會失敗。錯誤訊息包含新的 TDE 加密金鑰名稱。若要指定新值並重新開始任務,請使用上述程序。

重要

您無法操控在 Oracle Automatic Storage Management (ASM) 位置中建立的 TDE 錢包,因為 cpmvorapkimkstore 這類作業系統層級命令會損毀在 ASM 位置儲存的錢包檔案。此限制僅適用於在 ASM 位置儲存的 TDE 錢包檔案,但不適用於在本機作業系統目錄中儲存的 TDE 錢包檔案。

若要使用 OS 層級命令操作在 ASM 中儲存的 TDE 錢包,請如下所示,建立本機金鑰存放區,並將 ASM 金鑰存放區合併至本機金鑰存放區:

  1. 建立本機金鑰存放區。

    ADMINISTER KEY MANAGEMENT create keystore file system wallet location identified by wallet password;
  2. 將 ASM 金鑰存放區合併至本機金鑰存放區中。

    ADMINISTER KEY MANAGEMENT merge keystore ASM wallet location identified by wallet password into existing keystore file system wallet location identified by wallet password with backup;

然後,若要列出加密錢包項目和 TDE 密碼,請對本機金鑰存放區執行步驟 3 和 4。

使用 Oracle 作為下列項目的來源所支援的壓縮方法 AWS DMS

在下表中,您可以找到使用 Oracle 來源資料庫時所 AWS DMS 支援的壓縮方法。如表格所示,壓縮支援會取決於您的 Oracle 資料庫版本,以及 DMS 是否設定為使用 Oracle LogMiner 來存取重做日誌。

版本 基本 OLTP

HCC (來自 Oracle 11g R2 或更新版本)

其他
Oracle 10 N/A 不適用
甲骨文 11 或更新版本 — 甲骨文 LogMiner 是 — Oracle 支援的任何壓縮方法 LogMiner。
Oracle 11 或更新版本:Binary Reader 是:如需詳細資訊,請參閱下列注意事項。
注意

當 Oracle 來源端點設定為使用 Binary Reader 時,僅支援全負載任務的 HCC 壓縮方法的 Query Low 層級。

使用 Oracle 作為來源複製巢狀表格 AWS DMS

AWS DMS 支援複製 Oracle 表格,其中包含巢狀表格或已定義類型的資料行。若要啟用此功能,請將下列額外連線屬性的設定新增至 Oracle 來源端點。

allowSelectNestedTables=true;

AWS DMS 在沒有唯一條件約束的情況下,從 Oracle 巢狀表格建立目標資料表,做為目標上的一般父項和子表格。若要存取目標上的正確資料,請加入父資料表和子資料表。若要執行此操作,請先手動在目標子資料表中的 NESTED_TABLE_ID 資料行上建立非唯一索引。然後,您可以使用 ON 子句中的 NESTED_TABLE_ID 資料行,搭配對應至子資料表名稱的父資料行。此外,建立這類索引可改善目標子資料表資料由更新或刪除時的效能 AWS DMS。如需範例,請參閱目標上父項和子項資料表的聯結範例

建議您設定任務在完全載入完成後停止。然後,針對目標上的所有複寫的子資料表,建立這些非唯一的索引,並繼續任務。

如果擷取的巢狀資料表新增至現有的父資料表 (已擷取或未擷取),請正確 AWS DMS 處理它。不過,不會建立對應的目標資料表的非唯一索引。在這種情況下,如果目標子資料表變得非常大,效能可能會受到影響。在這種情況下,建議您停止任務、建立索引,然後繼續任務。

將巢狀資料表複寫到目標之後,讓 DBA 在父資料表和對應的子資料表上執行聯結,以扁平化資料。

將 Oracle 巢狀資料表複寫為來源的事前準備

請確定您複寫所有複寫的巢狀資料的父資料表。在表格對映中同時包括父表格 (包含巢狀表格資料欄的表格) 和子系 (亦即巢狀) 表格。 AWS DMS

支援的 Oracle 巢狀資料表類型做為來源

AWS DMS 支援下列 Oracle 巢狀表格類型作為來源:

  • 資料類型

  • 使用者定義的物件

Oracle 巢狀資料表做為來源的 AWS DMS 支援限制

AWS DMS 對 Oracle 巢狀表格作為來源的支援有以下限制:

  • AWS DMS 僅支援一個層級的表格巢狀。

  • AWS DMS 資料表對應不會檢查父資料表和子資料表是否同時選取進行複寫。也就是說,可以選擇沒有子資料表的父資料表或沒有父資料表的子資料表。

AWS DMS 將 Oracle 巢狀資料表複寫為來源的方式

AWS DMS 將父表格和巢狀表格複製到目標,如下所示:

  • AWS DMS 會建立與來源相同的父資料表。然後就能將父項中的巢狀資料表定義為 RAW(16),並在其 NESTED_TABLE_ID 資料行中包含對父系巢狀資料表的參考。

  • AWS DMS 會建立與巢狀來源相同的子資料表,但有一個名為的其他資料欄NESTED_TABLE_ID。此資料行與對應父項巢狀資料行的類型和值相同,且具有相同的意義。

目標上父項和子項資料表的聯結範例

若要扁平化父項資料表,請在父項和子項資料表之間執行關連,如下列範例所示:

  1. 建立 Type 資料表。

    CREATE OR REPLACE TYPE NESTED_TEST_T AS TABLE OF VARCHAR(50);
  2. 建立有句如前述定義的 NESTED_TEST_T 類型資訊行的父項資料表。

    CREATE TABLE NESTED_PARENT_TEST (ID NUMBER(10,0) PRIMARY KEY, NAME NESTED_TEST_T) NESTED TABLE NAME STORE AS NAME_KEY;
  3. 使用具有 NAME_KEY 子項資料表的聯結來扁平化資料表 NESTED_PARENT_TEST,其中子項資料表中的 CHILD.NESTED_TABLE_ID 符合 PARENT.NAME

    SELECT … FROM NESTED_PARENT_TEST PARENT, NAME_KEY CHILD WHERE CHILD.NESTED_ TABLE_ID = PARENT.NAME;

使用 Oracle 作為下列項目的來源時,在 Oracle ASM 上儲存重做 AWS DMS

對於產生高 REDO 的 Oracle 來源而言,在 Oracle ASM 上存放 REDO 可以提升效能,尤其是在 RAC 組態中,因為您可以設定 DMS,將 ASM REDO 讀取分散至所有 ASM 節點。

若要運用此組態,請使用 asmServer 連線屬性。例如,下列連線字串會將 DMS REDO 讀取分散到 3 個 ASM 節點:

asmServer=(DESCRIPTION=(CONNECT_TIMEOUT=8)(ENABLE=BROKEN)(LOAD_BALANCE=ON)(FAILOVER=ON) (ADDRESS_LIST= (ADDRESS=(PROTOCOL=tcp)(HOST=asm_node1_ip_address)(PORT=asm_node1_port_number)) (ADDRESS=(PROTOCOL=tcp)(HOST=asm_node2_ip_address)(PORT=asm_node2_port_number)) (ADDRESS=(PROTOCOL=tcp)(HOST=asm_node3_ip_address)(PORT=asm_node3_port_number))) (CONNECT_DATA=(SERVICE_NAME=+ASM)))

使用 NFS 儲存 Oracle REDO 時,請務必確定已套用適用的 DNFS (直接 NFS) 用戶端修補程式,特別是任何處理 Oracle 錯誤 25224242 的修補程式。如需其他資訊,請檢閱下列有關直接 NFS 用戶端相關修補程式 (直接 NFS 用戶端的建議修補程式) 的 Oracle 發行集。

此外,若要改善 NFS 讀取效能,建議您如下列範例所示,增加 NFS 磁碟區 fstab 中的 rsizewsize 值。

NAS_name_here:/ora_DATA1_archive /u09/oradata/DATA1 nfs rw,bg,hard,nointr,tcp,nfsvers=3,_netdev, timeo=600,rsize=262144,wsize=262144

另外,請如下方式調整 tcp-max-xfer-size 值:

vserver nfs modify -vserver vserver -tcp-max-xfer-size 262144

使用 Oracle 作為來源時的端點設定 AWS DMS

您可以使用端點設定來設定 Oracle 來源資料庫,類似於使用額外的連線屬性。您可以在使用 AWS DMS 主控台建立來源端點時指定設定,或使用中的create-endpoint命令以 --oracle-settings '{"EndpointSetting": "value", ...}' JSON 語法指定設定。AWS CLI

下列資料表顯示您可以在將 Oracle 作為來源搭配使用的端點設定。

名稱 描述
AccessAlternateDirectly

將此屬性設定為 false,以使用 Binary Reader 擷取作為來源之 Amazon RDS for Oracle 的變更資料。這會通知 DMS 執行個體不透過任何使用直接檔案存取的指定路徑字首替換來存取重做日誌。如需詳細資訊,請參閱 將 CDC 工作設定為使用二進位讀取器搭配使用適用於 Oracle 來源的 RDS AWS DMS

預設值:true

有效值:true/false

範例:--oracle-settings '{"AccessAlternateDirectly": false}'

AdditionalArchivedLogDestId

在主要-待命設定中設定具有 ArchivedLogDestId 的此屬性。使用 Oracle Data Guard 資料庫作為來源時,此屬性在切換時很有用。在此情況下, AWS DMS 需要知道要從哪個目的地取得存檔重做日誌,才能讀取變更。之所以需要這麼做是因為在切換後,之前的主要執行個體現在是待命執行個體。

儘管 AWS DMS 支持使用 Oracle 選RESETLOGS項打開數據庫,但RESETLOGS除非必要,否則請勿使用。如需 RESETLOGS 的相關資訊,請參閱《Oracle 資料庫備份與復原使用者指南》中的 RMAN 資料修復概念

有效值:封存目的地 ID

範例:--oracle-settings '{"AdditionalArchivedLogDestId": 2}'

AddSupplementalLogging

設定此屬性,以設定 Oracle 資料庫的資料表層級補充記錄。此屬性會根據資料表中繼資料,在針對遷移工作選取的所有資料表上啟用下列其中一項作業:

  • 主索引鍵資料欄補充記錄

  • 唯一索引鍵資料欄補充記錄

  • 所有資料欄補充記錄

預設值:false

有效值:true/false

範例:--oracle-settings '{"AddSupplementalLogging": false}'

注意

如果使用此選項,您仍需要啟用前文所介紹的資料庫層級補充記錄。

AllowSelectNestedTables

將此屬性設定為 true 以啟用包含巢狀資料表或已定義類型欄位的 Oracle 資料表的複寫。如需詳細資訊,請參閱 使用 Oracle 作為來源複製巢狀表格 AWS DMS

預設值:false

有效值:true/false

範例:--oracle-settings '{"AllowSelectNestedTables": true}'

ArchivedLogDestId

指定封存的重做日誌之目的地 ID。此值應該與 v$archived_log 檢視中 dest_id 資料行的數字相同。如果您使用其他還原日誌目的地,建議您使用 AdditionalArchivedLogDestId 屬性指定其他目的地 ID。這樣做可確保一開始就存取正確的日誌,提升效能。

預設值:1

有效值:數值

範例:--oracle-settings '{"ArchivedLogDestId": 1}'

ArchivedLogsOnly

當此欄位設為 Y 時, AWS DMS 只會存取存檔的重做日誌。如果存檔重做日誌只儲存在 Oracle ASM 上,則需要授與 AWS DMS 使用者帳戶的 ASM 權限。

預設值:N

有效值:Y/N

範例:--oracle-settings '{"ArchivedLogsOnly": Y}'

asmUsePLSQLArray (僅 ECA)

使用擷取來源變更時,請使用此額外連線屬性 (ECA) BinaryReader。此設定可讓 DMS 在每個單一讀取執行緒的 ASM 層級緩衝 50 次讀取,同時使用 parallelASMReadThread 屬性控制執行緒數目。當您設定這個屬性時, AWS DMS 二進位讀取器會使用匿名 PL/SQL 區塊擷取重做資料,並以大型緩衝區的形式傳送回複寫執行個體。這樣可以減少往返來源的次數。這可大幅改善來源擷取效能,但會導致 ASM 執行個體上的 PGA 記憶體耗用量升高。如果記憶體目標不夠,則可能會出現穩定性問題。您可以使用下列公式,來預估單一 DMS 任務的 ASM 執行個體 PGA 記憶體使用總量:number_of_redo_threads * parallelASMReadThreads * 7 MB

預設值:false

有效值:true/false

ECA 範例:asmUsePLSQLArray=true;

ConvertTimestampWithZoneToUTC

將此屬性設為 true 可將「TIMESTAMP WITH TIME ZONE」和「TIMESTAMP WITH LOCAL TIME ZONE」資料欄的時間戳記值轉換為 UTC。依預設,此屬性的值為「false」,而且會使用來源資料庫時區複寫資料。

預設值:false

有效值:true/false

範例:--oracle-settings '{"ConvertTimestampWithZoneToUTC": true}'

EnableHomogenousPartitionOps

將此屬性設為 true,可針對 Oracle 同質遷移啟用 Oracle 分割區和子分割區 DDL 操作的複寫。

請注意,此功能和增強功能是在 3.4.7 AWS DMS 版中引入的。

預設值:false

有效值:true/false

範例:--oracle-settings '{"EnableHomogenousPartitionOps": true}'

EnableHomogenousTablespace

設定此屬性可啟用同質資料表空間複寫,並在目標上相同資料表空間下建立現有的資料表或索引。

預設值:false

有效值:true/false

範例:--oracle-settings '{"EnableHomogenousTablespace": true}'

EscapeCharacter

將此屬性設為逸出字元。此逸出字元可讓資料表對應運算式中的單一萬用字元發揮如同一般字元的作用。如需詳細資訊,請參閱 資料表映射中的萬用字元

預設值:Null

有效值:萬用字元以外的任何字元

範例:--oracle-settings '{"EscapeCharacter": "#"}'

注意

您只能針對資料表名稱使用 escapeCharacter。其不會從結構描述名稱或資料欄名稱逸出字元。

ExposeViews

使用此屬性從檢視提取資料一次,但您無法將其用於進行中複寫。當您從檢視擷取資料時,檢視會顯示為目標結構描述上的資料表。

預設值:false

有效值:true/false

範例:--oracle-settings '{"ExposeViews": true}'

ExtraArchivedLogDestIds

為一個或多個封存的重做日誌指定一個或多個目的地的 ID。這些 ID 是 v$archived_log 檢視中 dest_id 資料欄的值。將此設定與設定或 primary-to-single 設定中的 ArchivedLogDestId 額外連線屬性搭配 primary-to-multiple-standby 使用。

使用 Oracle Data Guard 資料庫作為來源時,此設定在切換時很有幫助。在此情況下, AWS DMS 需要取得存檔重做日誌的目的地以讀取變更的相關資訊。 AWS DMS 需要這個,因為在切換之後,先前的主實例是待命實例。

有效值:封存目的地 ID

範例:--oracle-settings '{"ExtraArchivedLogDestIds": 1}'

FailTasksOnLobTruncation

當設為 true 時,如果 LOB 資料行的實際大小大於指定的 LobMaxSize,此屬性會導致任務失敗。

如果任務設為有限 LOB 模式,且此選項設為 true,則任務會失敗,而不是截斷 LOB 資料。

預設值:false

有效值:布林值

範例:--oracle-settings '{"FailTasksOnLobTruncation": true}'

filterTransactionsOfUser (僅 ECA)

使用此額外連線屬性 (ECA) 可讓 DMS 在使用時從 Oracle 複製資料時忽略來自指定使用者的交易。 LogMiner您可以傳遞逗號分隔的使用者名稱值,但這些字母必須是全大寫。

ECA 範例:filterTransactionsOfUser=USERNAME;

NumberDataTypeScale

指定小數位數。您可以選取小數位數上限 38,或者可以針對 FLOAT 選取 -1,或是針對 VARCHAR 選取 -2。根據預設,NUMBER 資料類型會轉換為精確度為 38、小數位數為 10。

預設值:10

有效值:-2 到 38 (VARCHAR 為 -2、FLOAT 為 -1)

範例:--oracle-settings '{"NumberDataTypeScale": 12}'

注意

選取精確度組合 -1 (FLOAT) 或 -2 (VARCHAR)。DMS 支援 Oracle 支援的任何精確度-小數位數組合。如果精確度為 39 或以上,請選取 -2 (VARCHAR)。Oracle 資料庫的 NumberDataTypeScale 設定僅用於 NUMBER 資料類型 (沒有明確的有效位數和小數位數定義)。

OpenTransactionWindow

提供以分鐘為單位的時間範圍,以檢查僅限 CDC 任務的任何開啟交易。

注意

當您設定OpenTransactionWindow為 1 或更高版本時,DMS 會使用將 SCN 值SCN_TO_TIMESTAMP轉換為時間戳記值。由於 Oracle 資料庫的限制,如果您指定的 SCN 太舊為 CDC 起點,則 SCN_TO_TIMESTAMP 將會失敗並顯示ORA-08181錯誤,而且您無法啟動僅限 CDC 的工作。

預設值:0

有效值:從 0 到 240 的整數

範例:openTransactionWindow=15;

OraclePathPrefix 將此字串屬性設定為所需值,以使用 Binary Reader 擷取作為來源之 Amazon RDS for Oracle 的變更資料。這個值會指定存取重做日誌所用的預設 Oracle 根。如需詳細資訊,請參閱 將 CDC 工作設定為使用二進位讀取器搭配使用適用於 Oracle 來源的 RDS AWS DMS

預設值:無

有效值:/rdsdbdata/db/ORCL_A/

範例:--oracle-settings '{"OraclePathPrefix": "/rdsdbdata/db/ORCL_A/"}'

ParallelASMReadThreads

設定此屬性來變更 DMS 為使用 Oracle Automatic Storage Management (ASM) 執行變更資料擷取 (CDC) 而設定的執行緒數目。您可以指定介於 2 (預設值) 與 8 (最大值) 之間的整數值。使用此屬性與 ReadAheadBlocks 屬性搭配。如需詳細資訊,請參閱 將 CDC 工作設定為使用二進位讀取器搭配使用適用於 Oracle 來源的 RDS AWS DMS

預設值:2

有效值:從 2 到 8 的整數

範例:--oracle-settings '{"ParallelASMReadThreads": 6;}'

ReadAheadBlocks

設定此屬性來變更 DMS 為使用 Oracle Automatic Storage Management (ASM) 和非 ASM NAS 儲存體執行 CDC 而設定的預先讀取區塊數目。您可以指定介於 1000 (預設值) 與 200,000 (最大值) 之間的整數值。使用此屬性與 ParallelASMReadThreads 屬性搭配。如需詳細資訊,請參閱 將 CDC 工作設定為使用二進位讀取器搭配使用適用於 Oracle 來源的 RDS AWS DMS

預設值:1000

有效值:從 1000 到 200,000 的整數

範例:--oracle-settings '{"ReadAheadBlocks": 150000}'

ReadTableSpaceName

當設為 true 時,此屬性支援資料表空間複寫。

預設值:false

有效值:布林值

範例:--oracle-settings '{"ReadTableSpaceName": true}'

ReplacePathPrefix 將此屬性設定為 true,以使用 Binary Reader 擷取作為來源之 Amazon RDS for Oracle 的變更資料。此設定會通知 DMS 執行個體使用指定的 UsePathPrefix 設定來取代預設的 Oracle 根,以存取重做日誌。如需詳細資訊,請參閱 將 CDC 工作設定為使用二進位讀取器搭配使用適用於 Oracle 來源的 RDS AWS DMS

預設值:false

有效值:true/false

範例:--oracle-settings '{"ReplacePathPrefix": true}'

RetryInterval

指定重新傳送查詢之前,系統要等待的秒數。

預設值:5

有效值:從 1 開始的數值

範例:--oracle-settings '{"RetryInterval": 6}'

SecurityDbEncryptionName

指定用於 Oracle 來源資料庫中資料行和資料表空間的透明資料加密 (TDE) 的金鑰名稱。如需在 Oracle 來源端點上設定此屬性及其關聯密碼的詳細資訊,請參閱 使用 Oracle 作為下列項目的來源所支援的加密方法 AWS DMS

預設值:””

有效值:字串

範例:--oracle-settings '{"SecurityDbEncryptionName": "ORACLE.SECURITY.DB.ENCRYPTION.Adg8m2dhkU/0v/m5QUaaNJEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"}'

SpatialSdo2GeoJsonFunctionName

針對移轉至 PostgreSQL 目標的 Oracle 版本 12.1 或較早來源,請使用此屬性將 SDO_GEOMETRY 轉換為 GEOJSON 格式。

默認情況下, AWS DMS 調用必須存在並供 AWS DMS 用戶訪問的SDO2GEOJSON自定義函數。或者,您也可以建立自己的自訂函數,模仿 SDOGEOJSON 的操作並設定 SpatialSdo2GeoJsonFunctionName 進行呼叫。

預設值:SDO2GEOJSON

有效值:字串

範例:--oracle-settings '{"SpatialSdo2GeoJsonFunctionName": "myCustomSDO2GEOJSONFunction"}'

StandbyDelayTime

使用此屬性指定以分鐘為單位的備用系統同步延遲時間。如果來源是 Active Data Guard 待命資料庫,請使用此屬性指定主要資料庫和待命資料庫之間的時間延遲。

在中 AWS DMS,您可以建立 Oracle CDC 作業,使用「作用中資料保全」待命執行個體作為複寫進行中變更的來源。這麼做讓您不必再連線到可能負責生產的作用中資料庫。

預設值:0

有效值:數值

範例:--oracle-settings '{"StandbyDelayTime": 1}'

注意:使用 DMS 3.4.6、3.4.7 及更高版本時,可選擇使用此連線設定。在最新版本的 DMS 3.4.6 和 3.4.7 版中,dms_user 應該具有 V_$DATAGUARD_STATSselect 許可,可允許 DMS 計算待命延遲時間。

UseAlternateFolderForOnline 將此屬性設定為 true,以使用 Binary Reader 擷取作為來源之 Amazon RDS for Oracle 的變更資料。這會通知 DMS 執行個體使用任何指定的字首替換來存取所有線上重做日誌。如需詳細資訊,請參閱 將 CDC 工作設定為使用二進位讀取器搭配使用適用於 Oracle 來源的 RDS AWS DMS

預設值:false

有效值:true/false

範例:--oracle-settings '{"UseAlternateFolderForOnline": true}'

UseBfile

將此屬性設定為 Y,以使用 Binary Reader 公用程式擷取變更資料。將 UseLogminerReader 設定為 N 以便將此屬性設定為 Y。若要搭配使用 Binary Reader 和作為來源的 Amazon RDS for Oracle,您需要設定額外屬性。如需此設定和使用 Oracle Automatic Storage Management (ASM) 的詳細資訊,請參閱使用甲骨 AWS DMS 文 LogMiner 或二進制閱讀器進行 CDC

附註:將此值設定為額外連線屬性 (ECA) 時,有效值為「Y」和「N」。將此值設為端點設定時,有效值為 truefalse

預設值:N

有效值:Y/N (將此值設為 ECA 時);true /false (將此值設為端點設定時)。

範例:--oracle-settings '{"UseBfile": Y}'

UseLogminerReader

將此屬性設定為 Y 可使用公用 LogMiner 程式擷取變更資料 (預設值)。如果要 AWS DMS 將重做日誌存取為二進位檔案,請將此選項設為 N。將此選項設為 N 時,請同時新增設定 useBfile =Y。如需此設定值和使用 Oracle Automatic Storage Management (ASM) 的相關資訊,請參閱使用甲骨 AWS DMS 文 LogMiner 或二進制閱讀器進行 CDC

附註:將此值設定為額外連線屬性 (ECA) 時,有效值為「Y」和「N」。將此值設為端點設定時,有效值為 truefalse

預設值:Y

有效值:Y/N (將此值設為 ECA 時);true /false (將此值設為端點設定時)。

範例:--oracle-settings '{"UseLogminerReader": Y}'

UsePathPrefix 將此字串屬性設定為所需值,以使用 Binary Reader 擷取作為來源之 Amazon RDS for Oracle 的變更資料。這個值會指定取代預設 Oracle 根所用的路徑字首,以存取重做日誌。如需詳細資訊,請參閱 將 CDC 工作設定為使用二進位讀取器搭配使用適用於 Oracle 來源的 RDS AWS DMS

預設值:無

有效值:/rdsdbdata/log/

範例:--oracle-settings '{"UsePathPrefix": "/rdsdbdata/log/"}'

Oracle 的來源資料類型

的 Oracle 端點 AWS DMS 支持大多數的 Oracle 數據類型。下表顯示使用時支援的 Oracle 來源資料類型,以 AWS DMS 及預設對映至 AWS DMS 資料類型。

注意

除了 LONG 和 LONG RAW 資料類型之外,從 Oracle 來源複寫到 Oracle 目標 (同質複寫) 時,所有來源和目標資料類型都是相同的。但 LONG 的資料類型將對應到 CLOB,而 LONG RAW 資料類型將對應到 BLOB。

如需如何檢視從目標映射的資料類型資訊,請參閱您要使用的目標端點一節。

如需有關資 AWS DMS 料類型的其他資訊,請參閱AWS Database Migration Service 的資料類型

Oracle 資料類型

AWS DMS 資料類型

BINARY_FLOAT

REAL4

BINARY_DOUBLE

REAL8

BINARY

BYTES

FLOAT (P)

如果精確度小於或等於 24,請使用 REAL4。

如果精確度大於 24,請使用 REAL8。

NUMBER (P,S)

當小數位數大於 0 時,請使用 NUMERIC。

當小數位數為 0 時:

  • 且精確度少於或等於 2 時,請使用 INT1。

  • 且精確度大於 2 及小於或等於 4 時,請使用 INT2。

  • 且精確度大於 4 及小於或等於 9 時,請使用 INT4。

  • 且精確度大於 9 時,請使用 NUMERIC。

  • 且精確度大於或等於小數位數時,請使用 NUMERIC。

當小數位數小於 0 時,請使用 REAL8。

DATE

DATETIME

INTERVAL_YEAR TO MONTH

STRING (使用間隔 year_to_month 指示)

INTERVAL_DAY TO SECOND

STRING (使用間隔 day_to_second 指示)

TIMESTAMP

DATETIME

TIMESTAMP WITH TIME ZONE

STRING (使用 timestamp_with_timezone 指示)

TIMESTAMP WITH LOCAL TIME ZONE

STRING (使用 timestamp_with_local_ timezone 指示)

CHAR

STRING

VARCHAR2

STRING

NCHAR

WSTRING

NVARCHAR2

WSTRING

RAW

BYTES

REAL

REAL8

BLOB

BLOB

若要搭配使用此資料類型 AWS DMS,您必須針對特定工作啟用 BLOB 資料類型的使用。 AWS DMS 僅在包含主索引鍵的資料表中支援 BLOB 資料類型。

CLOB

CLOB

若要搭配使用此資料類型 AWS DMS,您必須針對特定工作啟用 CLOB 資料類型的使用。在 CDC 期間,僅在包含主索引鍵的資料表中 AWS DMS 支援 CLOB 資料類型。

NCLOB

NCLOB

若要搭配使用此資料類型 AWS DMS,您必須針對特定工作啟用 NCLOB 資料類型的使用。在 CDC 期間,僅在包含主索引鍵的資料表中 AWS DMS 支援 NCLOB 資料類型。

LONG

CLOB

在批次最佳化套用模式 (TurboStream CDC 模式) 中不支援 LONG 資料類型。

若要搭配使用此資料類型 AWS DMS,請啟用針對特定工作使用 LOB。

在 CDC 或滿載期間,僅在具有主索引鍵的資料表中 AWS DMS 支援 LOB 資料類型。

此外, AWS DMS 不支援載入 LONG 資料行的完整 LOB 模式。相反地,您可以使用有限 LOB 模式,將 LONG 資料欄遷移至 Oracle 目標。在限制 LOB 模式中, AWS DMS 會將任何資料截斷為 64 KB (長度) 資料行長度超過 64 KB 的資料。如需中 LOB 支援的詳細資訊 AWS DMS,請參閱 設定 AWS DMS 作業中來源資料庫的 LOB 支援

LONG RAW

BLOB

在批次最佳化套用模式 (TurboStream CDC 模式) 中不支援 LONG RAW 資料類型。

若要搭配使用此資料類型 AWS DMS,請啟用針對特定工作使用 LOB。

在 CDC 或滿載期間,僅在具有主索引鍵的資料表中 AWS DMS 支援 LOB 資料類型。

此外, AWS DMS 不支援載入 LONG RAW 資料行的完整 LOB 模式。相反地,您可以使用有限 LOB 模式,將 LONG RAW 資料欄遷移至 Oracle 目標。在限制 LOB 模式中, AWS DMS 會將任何資料截斷為 64 KB (長原始資料行長度超過 64 KB)。如需中 LOB 支援的詳細資訊 AWS DMS,請參閱 設定 AWS DMS 作業中來源資料庫的 LOB 支援

XMLTYPE

CLOB

SDO_GEOMETRY

BLOB (當 Oracle 到 Oracle 移轉時)

CLOB (當 Oracle 到 PostgreSQL 遷移時)

不支援也無法複寫做為有下列資料類型資料行之來源使用的 Oracle 資料表。以這些資料類型複寫資料資料行會產生 null 資料行。

  • BFILE

  • ROWID

  • REF

  • UROWID

  • 使用者定義的資料類型

  • ANYDATA

  • VARRAY

注意

不支援虛擬資料行。

移轉 Oracle 空間資料類型

空間資料可識別空間中,物件或位置的幾何圖形資訊。在 Oracle 資料庫中,空間物件的幾何描述儲存在類型為 SDO_GEOMETRY 的物件中。在此物件中,幾何描述儲存在使用者定義資料表的單一欄中的單一列中。

AWS DMS 支援將甲骨文類型 SDO_Geometry 從甲骨文源遷移到甲骨文或 PostgreSQL 目標。

使用移轉 Oracle 空間資料類型時 AWS DMS,請注意以下考量事項:

  • 移轉至 Oracle 目標時,請務必手動傳輸包含類型資訊的 USER_SDO_GEOM_METADATA 項目。

  • 從 Oracle 來源端點移轉至 PostgreSQL 目標端點時, AWS DMS 會建立目標資料行。這些資料行具有預設幾何圖形和地理類型資訊,資訊中的 2D 維度和空間參考識別碼 (SRID) 等於零 (0)。例如,GEOMETRY, 2, 0

  • 對於遷移至 PostgreSQL 目標的 Oracle 版本 12.1 或更早的來源,請使用 SDO2GEOJSON 函數或 spatialSdo2GeoJsonFunctionName 額外連線屬性,將 SDO_GEOMETRY 物件轉換為 GEOJSON 格式。如需詳細資訊,請參閱 使用 Oracle 作為來源時的端點設定 AWS DMS

  • AWS DMS 僅支援「完整 LOB」模式的「Oracle 空間資料欄」移轉。 AWS DMS 不支援有限 LOB 或內嵌 LOB 模式。如需 LOB 模式的詳細資訊,請參閱設定 AWS DMS 作業中來源資料庫的 LOB 支援

  • 因為 AWS DMS 只支援完整 LOB 模式來移轉 Oracle 空間資料欄,因此資料行的資料表需要主索引鍵和唯一索引鍵。如果資料表沒有主索引鍵和唯一索引鍵,則會將資料表從遷移中略過。