選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

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

焦點模式
使用 Oracle 資料庫做為 AWS DMS的來源 - AWS 資料庫遷移服務

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

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

您可以使用 從一或多個 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 支援搭配 Oracle 端點 (和所有其他端點類型) 使用 TLS 1.2 版和更新版本,並建議使用 TLS 1.3 版或更新版本。

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

  1. 建立具有適當許可的 Oracle 使用者 AWS DMS ,以存取您的 Oracle 來源資料庫。

  2. 建立符合您選擇之 Oracle 資料庫組態的 Oracle 來源端點。若要建立僅完全載入的任務,則不需要任何進一步的組態。

  3. 若要建立處理變更資料擷取的任務 (僅限 CDC 或完全載入和 CDC 任務),請選擇 Oracle LogMiner 或 AWS DMS Binary Reader 來擷取資料變更。選擇 LogMiner 或 Binary Reader 會決定一些後續許可和組態選項。如要比較 LogMiner 和 Binary Reader,請參閱下一節。

注意

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

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

使用 Oracle LogMiner 或 AWS DMS Binary Reader for CDC

在 中 AWS DMS,有兩種方法可在執行 Oracle 的變更資料擷取 (CDC) 作為來源時讀取重做日誌:Oracle LogMiner 和 AWS DMS Binary Reader。LogMiner 是一個 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 支援。)
支援僅影響 LOB 資料欄的 UPDATE 陳述式
支援 Oracle 透明資料加密 (TDE)

部分

使用 Oracle LogMiner 時, AWS DMS 不支援 Amazon RDS for Oracle 資料欄層級的 TDE 加密。

部分

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

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

不建議,因為效能原因和一些內部 DMS 限制。

強烈建議使用

注意

根據預設, AWS DMS 會使用 Oracle LogMiner for (CDC)。

AWS DMS 使用 Oracle 來源資料庫時, 支援透明資料加密 (TDE) 方法。如果您指定的 TDE 登入資料不正確, AWS DMS 遷移任務不會失敗,這可能會影響加密資料表的持續複寫。如需指定 TDE 憑證的詳細資訊,請參閱支援使用 Oracle 做為 來源的加密方法 AWS DMS

搭配 LogMiner 使用的主要優點 AWS DMS 包括:

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

  • 如果還原日誌使用 Oracle Automatic Storage Management (ASM) 來管理,LogMiner 提供的組態較為簡單,尤其是相較於 Binary Reader 的直接存取設定而言。

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

搭配 使用 Binary Reader 的主要優點 AWS DMS 包括:

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

  • 針對有大量變更的遷移,CDC 效能在使用 Binary Reader 時通常會比使用 Oracle LogMiner 時更好。

  • Binary Reader 在 Oracle 12c 版中支援 LOB 的 CDC。但 LogMiner 不支援。

一般而言,除非您有以下其中一種情況,否則都是使用 Oracle LogMiner 遷移您的 Oracle 資料庫:

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

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

注意

如果您在使用 Oracle LogMiner 和 AWS DMS Binary Reader 之間變更,請務必重新啟動 CDC 任務。

Oracle 來源資料庫的 CDC 組態

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

您可在建立來源端點時,指定額外的連線屬性。如果您有多個連線屬性設定,請使用分號 (無額外空格) 分隔這些設定 (如 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 存取重做日誌時所需的帳戶權限使用 Binary Reader 搭配 Oracle ASM 時所需的其他帳戶權限

如需將 AWS受管 Oracle 資料庫的 CDC 設定為來源的詳細資訊,請參閱 設定 CDC 任務以將 Binary Reader 與 RDS for Oracle 來源搭配使用 AWS DMS在 AWS DMS中使用 Amazon RDS Oracle Standby (僅供讀取複本) 作為使用 Binary Reader 的來源以進行 CDC

為 設定自我管理或受管 Oracle AWS來源資料庫的工作流程 AWS DMS

設定 Oracle 來源資料庫

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

針對此工作流程步驟 如果您使用 LogMiner 執行 CDC,請執行此操作 如果您使用 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 Binary Reader 存取重做日誌時所需的帳戶權限
對於具有 ASM 的 Oracle 執行個體,授予存取 ASM 進行 CDC 所需的其他使用者帳戶權限。 沒有其他動作。 AWS DMS 支援 Oracle ASM 而沒有其他帳戶權限。 請參閱 使用 Binary Reader 搭配 Oracle ASM 時所需的其他帳戶權限
如果您尚未這麼做,請將任務設定為使用 LogMiner 或 Binary Reader 進行 CDC。 請參閱 使用 Oracle LogMiner 或 AWS DMS Binary Reader for CDC 請參閱 使用 Oracle LogMiner 或 AWS DMS Binary Reader for CDC
將 Oracle Standby 設為 CDC 的來源。 AWS DMS 不支援 Oracle Standby 做為來源。 請參閱 在 AWS DMS中使用自我管理的 Oracle Standby 作為使用 Binary Reader 的來源進行 CDC

使用下列工作流程步驟來設定受管 Oracle AWS來源資料庫執行個體。

針對此工作流程步驟 如果您使用 LogMiner 執行 CDC,請執行此操作 如果您使用 Binary Reader 執行 CDC,請執行此操作
授予 Oracle 帳戶權限。 如需詳細資訊,請參閱受管 Oracle AWS來源上所需的使用者帳戶權限 AWS DMS 如需詳細資訊,請參閱受管 Oracle AWS來源上所需的使用者帳戶權限 AWS DMS
使用 CDC 為複寫準備來源資料庫。 如需詳細資訊,請參閱 設定 的 AWS受管 Oracle 來源 AWS DMS 如需詳細資訊,請參閱 設定 的 AWS受管 Oracle 來源 AWS DMS
授予 CDC 所需的其他 Oracle 使用者權限。 不需額外的帳戶權限。 如需詳細資訊,請參閱 設定 CDC 任務以將 Binary Reader 與 RDS for Oracle 來源搭配使用 AWS DMS
如果您尚未這麼做,請將任務設定為使用 LogMiner 或 Binary Reader 進行 CDC。 如需詳細資訊,請參閱使用 Oracle LogMiner 或 AWS DMS Binary Reader for CDC 如需詳細資訊,請參閱使用 Oracle LogMiner 或 AWS DMS Binary Reader for CDC
將 Oracle Standby 設為 CDC 的來源。 AWS DMS 不支援 Oracle Standby 做為來源。 如需詳細資訊,請參閱在 AWS DMS中使用 Amazon RDS Oracle Standby (僅供讀取複本) 作為使用 Binary Reader 的來源以進行 CDC

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

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

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

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

注意

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

GRANT CREATE SESSION TO dms_user; GRANT SELECT ANY TRANSACTION TO dms_user; GRANT SELECT ON V_$ARCHIVED_LOG TO dms_user; GRANT SELECT ON V_$LOG TO dms_user; GRANT SELECT ON V_$LOGFILE TO dms_user; GRANT SELECT ON V_$LOGMNR_LOGS TO dms_user; GRANT SELECT ON V_$LOGMNR_CONTENTS TO dms_user; GRANT SELECT ON V_$DATABASE TO dms_user; GRANT SELECT ON V_$THREAD TO dms_user; GRANT SELECT ON V_$PARAMETER TO dms_user; GRANT SELECT ON V_$NLS_PARAMETERS TO dms_user; GRANT SELECT ON V_$TIMEZONE_NAMES TO dms_user; GRANT SELECT ON V_$TRANSACTION TO dms_user; GRANT SELECT ON V_$CONTAINERS TO dms_user; GRANT SELECT ON ALL_INDEXES TO dms_user; GRANT SELECT ON ALL_OBJECTS TO dms_user; GRANT SELECT ON ALL_TABLES TO dms_user; GRANT SELECT ON ALL_USERS TO dms_user; GRANT SELECT ON ALL_CATALOG TO dms_user; GRANT SELECT ON ALL_CONSTRAINTS TO dms_user; GRANT SELECT ON ALL_CONS_COLUMNS TO dms_user; GRANT SELECT ON ALL_TAB_COLS TO dms_user; GRANT SELECT ON ALL_IND_COLUMNS TO dms_user; GRANT SELECT ON ALL_ENCRYPTED_COLUMNS TO dms_user; GRANT SELECT ON ALL_LOG_GROUPS TO dms_user; GRANT SELECT ON ALL_TAB_PARTITIONS TO dms_user; GRANT SELECT ON SYS.DBA_REGISTRY TO dms_user; GRANT SELECT ON SYS.OBJ$ TO dms_user; GRANT SELECT ON DBA_TABLESPACES TO dms_user; GRANT SELECT ON DBA_OBJECTS TO dms_user; -– Required if the Oracle version is earlier than 11.2.0.3. GRANT SELECT ON SYS.ENC$ TO dms_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 dms_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 dms_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 V$DATABASE_INCARNATION TO dms_user;

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

GRANT SELECT on any-replicated-table to dms_user;

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

GRANT EXECUTE ON SYS.DBMS_CRYPTO TO dms_user;

如果您使用 Binary Reader 而不是 LogMiner,請授予其他以下權限。

GRANT SELECT ON SYS.DBA_DIRECTORIES TO dms_user;

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

GRANT SELECT on ALL_VIEWS to dms_user;

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

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

GRANT SELECT on dba_segments to dms_user; GRANT SELECT on v_$tablespace to dms_user; GRANT SELECT on dba_tab_subpartitions to dms_user; GRANT SELECT on dba_extents to dms_user;

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

使用 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 dms_user; GRANT SELECT ON DBA_USERS to dms_user; GRANT SELECT ON DBA_DIRECTORIES to dms_user; GRANT EXECUTE ON SYS.DBMS_XMLGEN TO dms_user;

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

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

使用 3.4.6 版和更新 AWS DMS 版本時,請執行下列步驟來處理 Oracle Standby 的開啟交易。

  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

設定補充記錄

若要擷取持續變更, 會要求您在 Oracle AWS DMS 來源資料庫上啟用最少的補充記錄。此外,您還需要啟用資料庫中每個複寫資料表的補充記錄。

根據預設, 會在所有複寫的資料表上 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 dms_user; GRANT SELECT on V_$LOGMNR_LOGS to dms_user; GRANT SELECT on V_$LOGMNR_CONTENTS to dms_user; GRANT LOGMINING to dms_user; -– Required only if the Oracle version is 12c or higher.

使用 AWS DMS Binary Reader 存取重做日誌時所需的帳戶權限

若要使用 AWS DMS Binary Reader 存取重做日誌,請將下列權限授予 Oracle 端點連線設定中指定的 Oracle 使用者。

GRANT SELECT on v_$transportable_platform to dms_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 dms_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 dms_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 dms_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 來源端點位於 Active Dataguard Standby (ADG),請參閱 AWS 資料庫部落格上的如何將 Binary Reader 與 ADG 搭配使用文章。

注意

AWS DMS CDC 不支援未設定為使用自動重做傳輸服務的 Active Dataguard Standby。

在某些情況下,您可以使用 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 Active Data Guard Standby。

  • 請確定 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 dms_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 排程器作業。

  4. 設定線上日誌目的地。

    使用待命重做日誌建立指向作業系統目錄的 Oracle 目錄:

    CREATE OR REPLACE DIRECTORY STANDBY_REDO_DIR AS '<full directory path>'; GRANT READ ON DIRECTORY STANDBY_REDO_DIR TO <dms_user>;

在 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 RDS、Amazon Aurora 或 Amazon S3 等 Amazon 服務的資料庫。接下來,您可以找到使用 AWS受管 Oracle 資料庫時需要設定的權限和組態 AWS DMS。

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

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

重要

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

GRANT CREATE SESSION to dms_user; GRANT SELECT ANY TRANSACTION to dms_user; GRANT SELECT on DBA_TABLESPACES to dms_user; GRANT SELECT ON any-replicated-table to dms_user; GRANT EXECUTE on rdsadmin.rdsadmin_util to dms_user; -- For Oracle 12c or higher: GRANT LOGMINING to dms_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', 'dms_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_TAB_PARTITIONS', 'dms_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_INDEXES', 'dms_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_OBJECTS', 'dms_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_TABLES', 'dms_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_USERS', 'dms_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_CATALOG', 'dms_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_CONSTRAINTS', 'dms_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_CONS_COLUMNS', 'dms_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_TAB_COLS', 'dms_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_IND_COLUMNS', 'dms_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_LOG_GROUPS', 'dms_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('V_$ARCHIVED_LOG', 'dms_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOG', 'dms_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOGFILE', 'dms_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('V_$DATABASE', 'dms_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('V_$THREAD', 'dms_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('V_$PARAMETER', 'dms_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('V_$NLS_PARAMETERS', 'dms_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('V_$TIMEZONE_NAMES', 'dms_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('V_$TRANSACTION', 'dms_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('V_$CONTAINERS', 'dms_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_REGISTRY', 'dms_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('OBJ$', 'dms_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_ENCRYPTED_COLUMNS', 'dms_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOGMNR_LOGS', 'dms_user', 'SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOGMNR_CONTENTS','dms_user','SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_LOGMNR', 'dms_user', 'EXECUTE'); -- (as of Oracle versions 12.1 and higher) exec rdsadmin.rdsadmin_util.grant_sys_object('REGISTRY$SQLPATCH', 'dms_user', 'SELECT'); -- (for Amazon RDS Active Dataguard Standby (ADG)) exec rdsadmin.rdsadmin_util.grant_sys_object('V_$STANDBY_LOG', 'dms_user', 'SELECT'); -- (for transparent data encryption (TDE)) exec rdsadmin.rdsadmin_util.grant_sys_object('ENC$', 'dms_user', 'SELECT'); -- (for validation with LOB columns) exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_CRYPTO', 'dms_user', 'EXECUTE'); -- (for binary reader) exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_DIRECTORIES','dms_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', 'dms_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 Standby 的開啟交易。

  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 或 Binary Reader 擷取日誌資訊。

若要設定封存
  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 任務以將 Binary Reader 與 RDS for Oracle 來源搭配使用 AWS DMS

您可以設定 AWS DMS 使用 CDC 的 Binary Reader 存取來源 Amazon RDS for Oracle 執行個體重做日誌。

注意

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

若要使用 AWS DMS Binary Reader,請 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 dms_user; GRANT READ ON DIRECTORY ARCHIVELOG_DIR TO dms_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 Active Data Guard Standby。

執行此作業之後,請使用下列程序,在使用 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_%' )

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

    Table showing directory names and their corresponding paths for archive and online logs.
  4. 將先前目錄的 Read 權限授予用來存取 Oracle Standby 的 Oracle 使用者帳戶。

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

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

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

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

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

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

  • AWS DMS 支援 3.5.0 版和更新 AWS DMS 版本的 Oracle Extended 資料類型。

  • AWS DMS 不支援長物件名稱 (超過 30 個位元組)。

  • AWS DMS 不支援以函數為基礎的索引。

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

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

  • AWS DMS 不支援延遲限制。

  • 在 3.5.1 版和更新 AWS DMS 版本中,只有執行 LOBs 查詢才支援安全 LOB。

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

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

  • 使用 3 AWS DMS .4.7 版或更新版本時,若要複寫分割區或子分割區操作所產生的變更,請在啟動 DMS 任務之前執行下列動作。

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

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

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

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

    3.4.7 AWS DMS 版之前:

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

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

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

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

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

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

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

  • AWS DMS 會將目標NULL上的空白 BLOB 和 CLOB 資料欄映射到 。

  • 使用 Oracle 11 LogMiner 擷取變更時,字符串長度大於 1982 的 CLOB 資料行上的更新將遺失,且不會更新目標。

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

  • AWS DMS 不支援特定UPDATE命令。下列範例是不支援的 UPDATE 命令。

    UPDATE TEST_TABLE SET KEY=KEY+1;

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

  • AWS DMS 不支援載入 LONG 和 LONG RAW 資料欄的完整 LOB 模式。相反地,您可以使用有限 LOB 模式,將這些資料類型遷移至 Oracle 目標。在有限的 LOB 模式中,會將任何資料 AWS DMS 截斷為 64 KB,而您設定為長或長 RAW 資料欄超過 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 不支援將 enableHomogenousPartitionOps 設為 的參考分割之資料表Drop Partition的操作true

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

    • 僅限 Oracle 12, AWS DMS 不會將任何變更複寫至 LOB 資料欄。

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

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

    • Oracle LogMiner 不支援連線到插入式資料庫 (PDB)。若要連線到 PDB,請使用 Binary Reader 存取重做日誌。

    • 不支援 SHRINK SPACE 操作。

  • 當您使用 Binary Reader 時, AWS DMS 具有下列限制:

    • 不支援資料表叢集。

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

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

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

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

  • AWS DMS 不支援使用 Oracle Automatic Storage Management (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 LogMiner 時才支援 TDE。

  • AWS DMS 不支援快速連續的多個資料表重新命名操作。

  • 使用 Oracle 19.0 做為來源時, AWS DMS 不支援下列功能:

    • 資料保護 DML 重新導向

    • 分割混合式資料表

    • 僅限結構描述的 Oracle 帳戶

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

  • 從 Oracle 18.x 開始, AWS DMS 不支援從 Oracle Express Edition (Oracle Database XE) 進行變更資料擷取 (CDC)。

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

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

  • AWS DMS 不支援執行 Oracle Flashback Database 和還原點,因為這些操作會影響 Oracle Redo Log 檔案的一致性。

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

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

    • 資料列大小超過 8K

    • Exadata HCC 資料表

    • 在 Big Endian 平台上執行的資料庫

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

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

Oracle 端點的 SSL 支援

AWS DMS Oracle 端點支援 none和 SSL 模式的 verify-ca SSL V3。若要搭配 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. 如果您的 CA 憑證包含多個 PEM 檔案 (例如 Amazon RDS 全域或區域套件),您必須將其分割為不同的檔案,並使用下列 bash 指令碼將其新增至 Oracle 錢包。此指令碼需要兩個參數輸入:CA 憑證的路徑和先前建立的 Oracle 錢包資料夾的路徑。

    #!/usr/bin/env bash certnum=$(grep -c BEGIN <(cat $1)) cnt=0 temp_cert="" while read line do if [ -n "$temp_cert" -a "$line" == "-----BEGIN CERTIFICATE-----" ] then cnt=$(expr $cnt + 1) printf "\rImporting certificate # $cnt of $certnum" orapki wallet add -wallet "$2" -trusted_cert -cert <(echo -n "${temp_cert}") -auto_login_only 1>/dev/null 2>/dev/null temp_cert="" fi temp_cert+="$line"$'\n' done < <(cat $1) cnt=$(expr $cnt + 1) printf "\rImporting certificate # $cnt of $certnum" orapki wallet add -wallet "$2" -trusted_cert -cert <(echo -n "${temp_cert}") -auto_login_only 1>/dev/null 2>/dev/null echo ""

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

注意

Oracle 錢包是二進位檔案。 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. 建立新的用戶端 Oracle 錢包 AWS DMS 供 使用。

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

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

    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 資料行
Oracle LogMiner
Binary Reader

AWS DMS 在資料欄層級和資料表空間層級上使用 Binary Reader 時, 支援 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 不適用
Oracle 11 或更新版本:Oracle 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

    SELECTFROM NESTED_PARENT_TEST PARENT, NAME_KEY CHILD WHERE CHILD.NESTED_ TABLE_ID = PARENT.NAME;

使用 Oracle 做為 的來源時,在 Oracle ASM 上存放 REDO 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 任務以將 Binary Reader 與 RDS for Oracle 來源搭配使用 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)

使用 BinaryReader 擷取來源變更時,請使用此額外連線屬性 (ECA)。此設定可讓 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 資料欄的值。在主要到單一設定或主要到多個待命設定中,搭配使用此設定和 ArchivedLogDestId 額外連線屬性。

使用 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 在使用 LogMiner 複寫 Oracle 中的資料時,忽略來自指定使用者的交易。您可以傳遞逗號分隔的使用者名稱值,但這些字母必須是全大寫。

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_TO_TIMESTAMP將 SCN 值轉換為時間戳記值。由於 Oracle 資料庫限制,如果您指定太舊的 SCN 做為 CDC 起點,SCN_TO_TIMESTAMP 會失敗並發生錯誤ORA-08181,而且您無法啟動僅限 CDC 的任務。

預設值:0

有效值:從 0 到 240 的整數

範例:openTransactionWindow=15;

OraclePathPrefix 將此字串屬性設定為所需值,以使用 Binary Reader 擷取作為來源之 Amazon RDS for Oracle 的變更資料。這個值會指定存取重做日誌所用的預設 Oracle 根。如需詳細資訊,請參閱 設定 CDC 任務以將 Binary Reader 與 RDS for Oracle 來源搭配使用 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 任務以將 Binary Reader 與 RDS for Oracle 來源搭配使用 AWS DMS

預設值:2

有效值:從 2 到 8 的整數

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

ReadAheadBlocks

設定此屬性來變更 DMS 為使用 Oracle Automatic Storage Management (ASM) 和非 ASM NAS 儲存體執行 CDC 而設定的預先讀取區塊數目。您可以指定介於 1000 (預設值) 與 200,000 (最大值) 之間的整數值。使用此屬性與 ParallelASMReadThreads 屬性搭配。如需詳細資訊,請參閱 設定 CDC 任務以將 Binary Reader 與 RDS for Oracle 來源搭配使用 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 任務以將 Binary Reader 與 RDS for Oracle 來源搭配使用 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 呼叫使用者必須存在且可存取的SDO2GEOJSON自訂函數 AWS DMS 。或者,您也可以建立自己的自訂函數,模仿 SDOGEOJSON 的操作並設定 SpatialSdo2GeoJsonFunctionName 進行呼叫。

預設值:SDO2GEOJSON

有效值:字串

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

StandbyDelayTime

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

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

預設值: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 任務以將 Binary Reader 與 RDS for Oracle 來源搭配使用 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) 的詳細資訊,請參閱使用 Oracle LogMiner 或 AWS DMS Binary Reader for 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) 的相關資訊,請參閱使用 Oracle LogMiner 或 AWS DMS Binary Reader for CDC

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

預設值:Y

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

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

UsePathPrefix 將此字串屬性設定為所需值,以使用 Binary Reader 擷取作為來源之 Amazon RDS for Oracle 的變更資料。這個值會指定取代預設 Oracle 根所用的路徑字首,以存取重做日誌。如需詳細資訊,請參閱 設定 CDC 任務以將 Binary Reader 與 RDS for Oracle 來源搭配使用 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

  • 當長度大於 4,000 個位元組時,CLOB

  • 當長度為 4,000 個位元組或更少時 STRING

NCHAR

WSTRING

NVARCHAR2

  • 當長度大於 4,000 個位元組時,NCLOB

  • 當長度為 4,000 個位元組或更少時寫入

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,請為特定任務啟用 LOBs。

在 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,請為特定任務啟用 LOBs。

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

此外, AWS DMS 不支援載入 LONG RAW 資料欄的完整 LOB 模式。相反地,您可以使用有限 LOB 模式,將 LONG RAW 資料欄遷移至 Oracle 目標。在有限的 LOB 模式中, 會將任何資料 AWS DMS 截斷為 64 KB,而您設定為長於 64 KB 的長 RAW 資料欄。如需 中 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 支援將 Oracle 類型 SDO_GEOMETRY 從 Oracle 來源遷移至 Oracle 或 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 僅支援遷移 Oracle 空間資料欄的完整 LOB 模式,資料欄的資料表需要主索引鍵和唯一索引鍵。如果資料表沒有主索引鍵和唯一索引鍵,則會將資料表從遷移中略過。

隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。