AWS DMSのソースとしての Oracle データベースの使用 - AWS Database Migration Service

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS DMSのソースとしての Oracle データベースの使用

を使用して 1 つまたは複数の Oracle データベースからデータを移行できます AWS DMS。ソースとして Oracle データベースを使用すると、 AWS DMSが対応しているどのターゲットにもデータを移行できます。

AWS DMS 次の Oracle データベースエディションをサポートします。

  • Oracle Enterprise Edition

  • Oracle Standard Edition

  • Oracle Express Edition

  • Oracle Personal Edition

AWS DMS ソースとしてサポートされている Oracle データベースのバージョンについては、を参照してくださいの情報源 AWS DMS

Secure Sockets Layer (SSL) を使用して、Oracle エンドポイントとレプリケーションインスタンスとの接続を暗号化できます。Oracle エンドポイントで SSL を使用する方法の詳細については、「Oracle エンドポイントでの SSL のサポート」を参照してください。

AWS DMS Oracle の透過的データ暗号化 (TDE) を使用してソースデータベースに保存されているデータを暗号化できます。Oracle ソースエンドポイントで Oracle TDE を使用する方法については、「Oracle をソースとして使用するための暗号化方法がサポートされています。 AWS DMS」をご参照ください。

AWS Oracle エンドポイント (およびその他すべてのエンドポイントタイプ) での TLS バージョン 1.2 以降の使用をサポートしており、TLS バージョン 1.3 以降の使用を推奨しています。

Oracle AWS DMS データベースをソースエンドポイントとして設定するには、次の手順に従います。

  1. Oracle AWS DMS ソースデータベースにアクセスするための適切な権限を持つ Oracle ユーザーを作成します。

  2. 選択した Oracle データベース設定に準拠する Oracle ソース エンドポイントを作成します。 full-load-only タスクを作成するには、これ以上設定する必要はありません。

  3. 変更データキャプチャを処理するタスク (CDC のみのタスク、またはフルロードと CDC のタスク) を作成するには、Oracle LogMiner または AWS DMS Binary Reader を選択してデータ変更をキャプチャします。 LogMiner または Binary Reader を選択すると、後の権限と設定オプションの一部が決まります。 LogMiner とバイナリリーダーの比較については、以下のセクションを参照してください。

注記

全ロードタスク、CDC のみのタスク、および全ロードおよび CDC タスクの詳細については、「[Creating a task] (タスクの作成)」をご参照ください。

Oracle ソースデータベースおよびの操作方法の詳細については AWS DMS、以下のセクションを参照してください。

CDC 用の Oracle LogMiner AWS DMS またはバイナリリーダーの使用

では AWS DMS、Oracle をソースとして変更データキャプチャ (CDC) を行う際に REDO ログを読み取る方法として、Oracle LogMiner と AWS DMS Binary Reader の 2 つの方法があります。 LogMiner は、オンライン REDO ログとアーカイブ REDO ログファイルを読み取る Oracle API です。バイナリリーダーは、未加工の REDO AWS DMS ログファイルを直接読み取って解析するメソッドです。これらのメソッドには次の特徴があります。

機能 LogMiner Binary Reader
設定しやすい Yes No
ソースシステムのI/Oと CPU への影響軽減 No Yes
CDC パフォーマンスの向上 No Yes
Oracle テーブル クラスターのサポート Yes No
すべてのタイプの Oracle ハイブリッド列圧縮(HCC)をサポート Yes

部分的

バイナリリーダーは CDC のタスクでクエリローをサポートしていません。他のすべての HCC タイプが完全にサポートされています。

Oracle 12c でのみ LOB カラムのサポート いいえ (LOB Support は Oracle 12c LogMiner では使用できません) Yes
LOB カラムにのみ影響を与える UPDATE ステートメントに対応 No Yes
Oracle Transparent データ暗号化 (TDE) に対応

部分的

オラクルを使用する場合 LogMiner、Amazon RDS for Oracle の列レベルの TDE AWS DMS 暗号化はサポートされません。

部分的

Binary Reader は、自己管理 Oracle データベースに対してのみ TDE をサポートします。

すべての Oracle 圧縮法に対応 Yes No
XA トランザクションに対応 No Yes
RAC

Yes

非推奨

Yes

強く推奨

注記

デフォルトでは、Oracle LogMiner for (CDC) AWS DMS を使用します。

AWS DMS Oracle ソースデータベースを操作する場合に、透過的データ暗号化 (TDE) メソッドをサポートします。指定した TDE AWS DMS 認証情報が間違っていても移行タスクは失敗せず、暗号化テーブルの継続的なレプリケーションに影響する可能性があります。TDE 認証情報の指定の詳細については、「Oracle をソースとして使用するための暗号化方法がサポートされています。 AWS DMS」を参照してください。

LogMiner AWS DMS とを使用する主な利点は次のとおりです。

  • LogMiner 暗号化オプションや圧縮オプションなど、ほとんどの Oracle オプションをサポートします。Binary Reader では、すべての Oracle オプションがサポートされているわけではありません (特に圧縮とほとんどの暗号化のオプション)。

  • LogMiner 特に Binary Reader のダイレクト・アクセス・セットアップや Oracle 自動ストレージ管理 (ASM) を使用して REDO ログを管理する場合と比べると、構成が簡単になります。

  • LogMiner が使用するテーブルクラスタをサポートします。 AWS DMS Binary Reader はサポートされません。

Binary Reader AWS DMS をとともに使用する主な利点は次のとおりです。

  • 大量の変更を伴う移行では、Oracle ソースデータベースをホストするコンピューターに I/O や CPU LogMiner に何らかの影響を与える可能性があります。Binary Reader では、ログが複数のデータベース クエリを行うのではなく、直接マイニングされるため、I/O や CPU に影響を与える可能性が高くありません。

  • 大量の変更を伴う移行では、通常、Oracle を使用する場合よりも Binary Reader を使用する方が CDC のパフォーマンスがはるかに向上します。 LogMiner

  • バイナリリーダーは Oracle バージョン 12c の LOB 用 CDC をサポートしています。 LogMinerサポートしていません。

一般に、次のいずれかの状況でない限り、Oracle データベースの移行には Oracle を使用してください。 LogMiner

  • ソース Oracle データベースで複数の移行タスクを実行する必要がある。

  • ソース Oracle データベース上の変更のボリュームまたは REDO ログボリュームが多いか、または変更があり、Oracle ASM も使用している場合。

注記

Oracle LogMiner と AWS DMS Binary Reader のどちらを使用するかを切り替える場合は、必ず CDC タスクを再開してください。

Oracle ソース データベースでの CDC の設定

Oracle ソース エンドポイントが変更データ キャプチャ (CDC) タスクでデータベースに接続するには、特に追加の接続属性を指定する必要があります。これは、全ロードタスクと CDC タスク、または CDC のみのタスクに当てはまります。指定する追加の接続属性は、REDO ログへのアクセスに使用する方法 (Oracle LogMiner または AWS DMS Binary Reader) によって異なります。

ソース エンドポイントを作成するときに追加の接続属性を指定します。接続属性の設定が複数ある場合は、空白を追加せずにそれぞれをセミコロンで区切ります (例: oneSetting;thenAnother)。

AWS DMS LogMiner がデフォルトで使用されます。これを使用するために、追加の接続属性を指定する必要はありません。

Binary Reader を使用してREDO ログにアクセスするには、以下の追加の接続属性を加えます。

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 設定が含まれます。ASM を使用した Oracle ソースの追加接続属性の詳細については、「Oracle をソースとして使用する場合のエンドポイント設定 AWS DMS」をご参照ください。

また、適切な CDC スタートポイントを選択する必要があります。通常、これを行う場合、CDC を開始する最も早いオープントランザクションをキャプチャするトランザクション処理点を特定します。そうしないと、CDC タスクは以前のオープントランザクションを見逃す可能性があります。Oracle ソースデータベースの場合、Oracle システム変更番号 (SCN) に基づいて CDC ネイティブのスタートポイントを選択して、この最も早いオープントランザクションを識別できます。詳細については、「CDC 開始点を起点とするレプリケーションの実行」を参照してください。

自己管理型 Oracle データベースをソースとして使用するための CDC 設定の詳細については、「Oracle LogMiner を使用して REDO ログにアクセスする場合に必要なアカウント権限」、「AWS DMS Binary Reader を使用して REDO ログにアクセスする場合に必要なアカウント権限」や「Oracle ASM で Binary Reader の使用時に必要なアカウント権限」をご参照ください。

AWS管理対象の Oracle データベースの CDC をソースとして設定する方法の詳細については、「」と「」を参照してください RDS for Oracle ソースでバイナリリーダーを使用するように CDC タスクを設定する AWS DMSAWS DMSの CDC 用 Binary Reader を使用したソースとして Amazon RDS Oracle スタンバイ(リードレプリカ)を使用する

AWS自己管理型または管理型の Oracle ソースデータベースを設定するためのワークフロー 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 を使用して REDO ログにアクセスする場合に必要なアカウント権限」を参照してください AWS DMS Binary Reader を使用して REDO ログにアクセスする場合に必要なアカウント権限」を参照してください
ASM を持つ Oracle インスタンスの場合は、 CDC のために ASM へのアクセスに必要な追加のユーザーアカウント権限を付与します。 追加のアクションはありません。 AWS DMS 追加のアカウント権限なしで Oracle ASM をサポートします。 Oracle ASM で Binary Reader の使用時に必要なアカウント権限 を参照してください。
まだ設定していない場合は、CDC 用の Binary Reader LogMiner を使用するようにタスクを設定します。 CDC 用の Oracle LogMiner AWS DMS またはバイナリリーダーの使用」を参照してください CDC 用の Oracle LogMiner AWS DMS またはバイナリリーダーの使用」を参照してください
Oracle スタンバイを CDC のソースとして設定します。 AWS DMS Oracle スタンバイをソースとしてサポートしていません。 AWS DMSの CDC 用Binary Reader を使用したソースとしてのセルフ管理 Oracle スタンバイの使用 を参照してください。

以下のワークフローステップを使用して、 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 ユーザー権限を付与します。 追加のアカウント権限は必要ありません。 詳細については、「 RDS for Oracle ソースでバイナリリーダーを使用するように CDC タスクを設定する AWS DMS」を参照してください。
まだ行っていない場合は、CDC LogMiner 用バイナリリーダーを使用するようにタスクを設定します。 詳細については、「CDC 用の Oracle LogMiner AWS DMS またはバイナリリーダーの使用」を参照してください。 詳細については、「CDC 用の Oracle LogMiner AWS DMS またはバイナリリーダーの使用」を参照してください。
Oracle スタンバイを CDC のソースとして設定します。 AWS DMS Oracle スタンバイをソースとしてサポートしていません。 詳細については、「AWS DMSの CDC 用 Binary Reader を使用したソースとして Amazon RDS Oracle スタンバイ(リードレプリカ)を使用する」を参照してください。

自己管理型の Oracle データベースをソースとして使用する AWS DMS

セルフ管理データベースは自分で構成および制御するデータベースで、ローカルのオンプレミス データベース インスタンスまたは Amazon EC2 上のデータベースのいずれかです。以下では、自己管理型の Oracle データベースをと共に使用する場合に必要な権限と構成について説明します。 AWS DMS

自己管理型の 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;

サーバーレスレプリケーションの詳細については、「Serverless 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;

Oracle 独自の移行前評価の詳細については、「オラクル・アセスメント」を参照してください。

Oracle スタンバイのオープントランザクションを処理するための前提条件

AWS DMS バージョン 3.4.6 以降を使用している場合は、次の手順を実行して Oracle Standby のオープントランザクションを処理してください。

  1. プライマリデータベースに AWSDMS_DBLINK という名前のデータベースリンクを作成します。 DMS_USER は、データベースリンクを使用してプライマリデータベースに接続します。このデータベースリンクは、プライマリデータベースで実行されるオープントランザクションをクエリするためにスタンバイインスタンスから実行されることに注意します。次の例を参照してください。

    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

次の手順を実行して、CDC タスクを実行するソースとして自己管理型 Oracle データベースを準備します:

AWS DMS ソースデータベースのバージョンをサポートしているかどうかの検証

以下のようなクエリを実行して、現在のバージョンの Oracle ソースデータベースが AWS DMSでサポートされていることを確認します。

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

ここで namevalue、および descriptionname の値に基づいてクエリされるデータベース内の任意の列です。このクエリがエラーなく実行されれば、 AWS DMS 現在のバージョンのデータベースがサポートされ、移行を続行できます。クエリでエラーが発生した場合、 AWS DMS は現在のバージョンのデータベースをサポートしていません。移行を続行するには、まず Oracle AWS DMSデータベースをでサポートされているバージョンに変換してください。

ARCHIVELOG モードがオンになっていることを確認する

Oracle は、ARCHIVELOG モードと NOARCHIVELOG モードの 2 つの異なるモードで実行できます。CDC タスクを実行するには、ARCHIVELOG モードでデータベースを実行します。データベースが ARCHIVELOG モードにあるかどうかを確認するため、次のクエリを実行します。

SQL> SELECT log_mode FROM v$database;

もし NOARCHIVELOG mode が返されれば、オラクルの命令に従ってデータベースを 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;

    返される結果が YES または IMPLICIT の場合は、データベースのサプリメンタル ログは有効です。

    そうなっていなければ、次のコマンドを実行して、データベースのサプリメンタル ログを有効にします。

    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;
    • プライマリキーが存在せず、テーブルに一意のインデックスが 1 つある場合、一意のインデックスのすべての列をサプリメンタルログに追加します。

      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 サプリメンタル ログがテーブルに追加済みなら、その追加は不要です。

  • テーブルに一意のインデックスやプライマリ キーがある場合、フィルターまたは変換に関係する列ごとにサプリメンタル ログを追加します。ただし、これらの列がプライマリ キーまたは一意のインデックス列と異なる場合にのみ行ってください。

  • 変換で列が 1 つしか使用されない場合は、この列をサプリメンタル ログ グループに追加しないでください。たとえば、変換 A+B の場合は、列 AB の両方にサプリメンタルロギングを追加します。ただし、変換 substring(A,10) の場合、列 A にサプリメンタルロギングを追加しないでください。

  • プライマリ キーや一意のインデックス列、フィルタリングまたは変換されるその他の列の両方にサプリメンタル ログを設定するには、USER_LOG_GROUP サプリメンタル ログを追加できます。プライマリ キー/一意のインデックス列、フィルタリングまたは変換されるその他の特定の列の両方にこのサプリメンタル ログを追加します。

    たとえば、TEST.LOGGING という名前のテーブルをプライマリ キー ID と列 NAME によるフィルターでレプリケーションするには、次のようなコマンドを実行して、ロググループのサプリメンタル ログを作成します。

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

Oracle LogMiner を使用して REDO ログにアクセスする場合に必要なアカウント権限

Oracle を使用して REDO ログにアクセスするには 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 Binary Reader を使用して REDO ログにアクセスする場合に必要なアカウント権限

AWS DMS Binary Reader を使用して REDO ログにアクセスするには、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 ディレクトリオブジェクトには、処理する REDO ログファイルが格納されているフォルダの名前が含まれます。これらの Oracle ディレクトリは、ファイルシステムレベルでは表されません。代わりに、これらは Oracle データベースレベルで作成される論理ディレクトリとなります。これらのビューは、Oracle ALL_DIRECTORIES ビューで表示できます。

これらの Oracle AWS DMS ディレクトリを作成する場合は、CREATE ANY DIRECTORY前述の権限を付与してください。 AWS DMS DMS_プレフィックスを付けたディレクトリ名を作成します。CREATE ANY DIRECTORY 権限を付与しない場合は、対応するディレクトリを手動で作成します。このような場合、Oracle ディレクトリを手動で作成すると、Oracle ソースエンドポイントで指定された Oracle ユーザーがこれらのディレクトリを作成したユーザーではない場合があります。このような場合は、READ on DIRECTORY 権限も付与します。

Oracle ソースエンドポイントがアクティブデータガードスタンバイ (ADG) になっている場合は、データベースブログの「ADG でバイナリリーダーを使用する方法」の投稿を参照してください。 AWS

注記

AWS DMS CDC は、自動 REDO 転送サービスを使用するように構成されていないアクティブデータガードスタンバイをサポートしていません。

このような場合、Oracle 管理ファイル (OMF) を使用してログを保存することがあります。または、ソース エンドポイントは ADG にあり、CREATE ANY DIRECTORY 権限を付与できません。このような場合は、レプリケーションタスクを開始する前に、考えられるすべてのログの場所を含むディレクトリを手動で作成してください。 AWS DMS AWS DMS が予期した事前に作成されたディレクトリを見つけられない場合、タスクは停止します。また、 AWS DMS は ALL_DIRECTORIES ビューに作成したエントリを削除しないため、手動で削除します。

Oracle ASM で Binary Reader の使用時に必要なアカウント権限

Binary Reader を使用して Automatic Storage Management (ASM) の REDO ログにアクセスするには、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の CDC 用Binary Reader を使用したソースとしてのセルフ管理 Oracle スタンバイの使用

CDC 用 Binary Reader を使用するときにソースとして Oracle Standby インスタンスを構成するには、次の前提条件からスタートします:

  • AWS DMS 現在、Oracle アクティブ・データガード・スタンバイのみをサポートしています。

  • Oracle Data Guard の構成で次のものが使用されていることを確認します:

    • REDO データの自動転送用 REDO トランスポート サービス。

    • サービスを適用して、スタンバイデータベースに REDO を自動的に適用します。

上記の要件が満たされていることを確認するには、次のクエリを実行します。

SQL> select open_mode, database_role from v$database;

クエリの出力で、スタンバイデータベースが読み取り専用モードで開かれており、REDO が自動的に適用されていることを確認します。例:

OPEN_MODE DATABASE_ROLE -------------------- ---------------- READ ONLY WITH APPLY PHYSICAL STANDBY
CDC 用 Binary Reader を使用するときにソースとして Oracle スタンバイインスタンスを設定するには
  1. スタンバイ ログファイルへのアクセスに必要な追加の権限を付与します。

    GRANT SELECT ON v_$standby_log TO db_user;
  2. AWS Management Console または AWS CLIを使用して、Oracle スタンバイのソースエンドポイントを作成します。エンドポイントを作成する場合、次の追加の接続属性を指定します。

    useLogminerReader=N;useBfile=Y;
    注記

    では AWS DMS、追加の接続属性を使用して、REDO ログではなくアーカイブログから移行するかどうかを指定できます。詳細については、「Oracle をソースとして使用する場合のエンドポイント設定 AWS DMS」を参照してください。

  3. アーカイブログの保存先を設定します。

    ASM を使用しない Oracle ソースの DMS Binary Reader は、Oracle ディレクトリを使用してアーカイブの REDO ログにアクセスします。データベースがアーカイブログの宛先として高速リカバリ領域 (FRA) を使用するように設定されている場合、アーカイブ REDO ファイルの場所は一定ではありません。アーカイブ REDO ログが毎日生成されると、YYYY_MM_DD 形式のディレクトリ名を使用して、FRA に新しいディレクトリが作成されます。例:

    DB_RECOVERY_FILE_DEST/SID/archivelog/YYYY_MM_DD

    DMS が新しく作成された FRA ディレクトリ内のアーカイブ REDOファイルにアクセスする必要があり、プライマリの読み取り/書き込みデータベースがソースとして使用されている場合、DMS は次のとおり新しい Oracle ディレクトリを作成するか、既存の Oracle ディレクトリを置き換えます。

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

    スタンバイデータベースがソースとして使用されている場合、データベースは読み取り専用モードであるため、DMS は Oracle ディレクトリを作成または置換できません。ただし、次の追加手順のいずれかを実行できます。

    1. Oracle が毎日サブディレクトリを作成しない設定の場合、FRA の代わりに実際のパスを使用するように log_archive_dest_id_1 を変更します。

      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の CDC のソースとしての Oracle Cloud Infrastructure (OCI) 上のユーザー管理データベースの使用

ユーザー管理データベースとは、仮想マシン (VM)、ベアメタル、または Exadata サーバー上に作成された Oracle データベースなど、ユーザーが設定して管理するデータベースです。または、Oracle Cloud Infrastructure (OCI) などの専用インフラストラクチャ上で実行される、ユーザーが設定して管理するデータベースもあります。次の情報は、 AWS DMSの変更データキャプチャ (CDC) のソースとして OCI 上の Oracle ユーザー管理データベースを使用する際に必要なアクセス権限と設定について説明しています。

OCI でホストされるユーザー管理の Oracleデータベースを変更データキャプチャのソースとして設定するには
  1. OCI 上のユーザーマネージドの Oracle ソースデータベースに必要なユーザーアカウントアクセス権限を付与します。詳細については、「Account privileges for a self-managed Oracle source endpoint」を参照してください。

  2. Binary Reader を使用して REDO ログにアクセスする際に必要なアカウントアクセス権限を付与します。詳細については、「Account privileges required when using Binary Reader」を参照してください。

  3. Oracle Automatic Storage Management (ASM)で Binary Reader を使用する場合に必要なアカウントアクセス権限を追加します。詳細については、「Additional account privileges required when using Binary Reader with Oracle ASM」を参照してください。

  4. サプリメンタルロギングをセットアップします。詳細については、「Setting up supplemental logging」を参照してください。

  5. TDE 暗号化を設定します。詳細については、「Encryption methods when using an Oracle database as a source endpoint」を参照してください。

Oracle Cloud Infrastructure (OCI) 上の Oracle ソースデータベースからデータをレプリケートする場合、次の制限が適用されます。

制限事項
  • DMS は Oracle を使用して REDO LogMiner ログにアクセスすることをサポートしていません。

  • DMS は Autonomous DB をサポートしていません。

AWS管理対象の Oracle データベースをソースとして使用する AWS DMS

AWSマネージド型データベースは、Amazon RDS、Amazon Aurora、Amazon S3 などのアマゾンサービス上にあるデータベースです。以下に、 AWSマネージド Oracle データベースをと共に使用する場合にセットアップする必要がある権限と設定を示します。 AWS DMS

AWS管理対象の Oracle ソースに必要なユーザーアカウント権限 AWS DMS

Oracle ソース エンドポイント定義で指定された Oracle ユーザーアカウントに、以下の権限を付与します。

重要

db_userany-replicated-table などすべてのパラメータ値では、大文字と小文字を区別する識別子を使用して値を指定しない限り、Oracle は値をすべて大文字と見なします。たとえば、CREATE USER myuser または CREATE USER MYUSER のように引用符を使用しない db_user の値を作成するとします。この場合、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.

さらに、SELECTEXECUTE のアクセス許可を次のように Amazon RDS 手順 rdsadmin.rdsadmin_util.grant_sys_object を使用して SYS オブジェクトに付与します。詳細については、「SYS オブジェクトへの SELECT または EXECUTE 権限の付与」をご参照ください。

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');

AWS DMS で Amazon RDS アクティブデータガードスタンバイ (ADG) の使用の詳細については、「AWS DMSの CDC 用 Binary Reader を使用したソースとして Amazon RDS Oracle スタンバイ(リードレプリカ)を使用する」をご参照ください。

Oracle TDE をとともに使用する方法の詳細については AWS DMS、を参照してください。Oracle をソースとして使用するための暗号化方法がサポートされています。 AWS DMS

Oracle スタンバイのオープントランザクションを処理するための前提条件

AWS DMS バージョン 3.4.6 以降を使用している場合は、次の手順を実行して Oracle Standby のオープントランザクションを処理してください。

  1. プライマリデータベースに AWSDMS_DBLINK という名前のデータベースリンクを作成します。 DMS_USER は、データベースリンクを使用してプライマリデータベースに接続します。このデータベースリンクは、プライマリデータベースで実行されるオープントランザクションをクエリするためにスタンバイインスタンスから実行されることに注意します。次の例を参照してください。

    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 DB インスタンスの REDO ログをアーカイブすると、Oracle LogMiner またはバイナリリーダーを使用してログ情報を取得できます AWS DMS 。

アーカイブを設定するには
  1. rdsadmin.rdsadmin_util.set_configuration コマンドを実行してアーカイブをセットアップします。

    たとえば、アーカイブされた REDO ログを 24 時間保持するには、次のコマンドを実行します。

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

    変更を反映するにはコミットが必要です。

  2. 指定された保持期間中、アーカイブされた REDO ログのための十分な容量がストレージにあることを確認します。たとえば、保持期間が 24 時間の場合は、通常のトランザクション処理時間における累積アーカイブ REDO ログの合計サイズを計算し、その合計に 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;

RDS for Oracle ソースでバイナリリーダーを使用するように CDC タスクを設定する AWS DMS

CDC 用バイナリリーダーを使用して、Amazon RDS for Oracle インスタンスのソース REDO ログにアクセスするように設定できます AWS DMS 。

注記

Oracle を使用するには LogMiner、最低限必要なユーザーアカウント権限で十分です。詳細については、「AWS管理対象の Oracle ソースに必要なユーザーアカウント権限 AWS DMS」を参照してください。

AWS DMS Binary Reader を使用するには、 AWS DMS バージョンに応じて Oracle ソースエンドポイントに追加の設定と接続属性を指定します。

Binary Reader のサポートは、Amazon RDS for Oracle の次のバージョンで利用できます。

  • Oracle バージョン 12.1.0.2.v11 以降

  • Oracle バージョン 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の CDC 用 Binary Reader を使用したソースとして Amazon RDS Oracle スタンバイ(リードレプリカ)を使用する

AWS DMSで CDC 用 Binary Reader を使用する場合は、ソースとして Amazon RDS for Oracle スタンバイを使用するための次の前提条件を確認します:

  • Oracle マスターユーザーを使用して、 Binary Reader を設定します。

  • AWS DMS 現在 Oracle Active Data Guard Standby の使用のみをサポートしていることを確認してください。

その後、CDC 用 Binary Reader を使用するときに、次の手順に従ってソースとして RDS for Oracle スタンバイを使用します。

CDC 用 Binary Reader を使用するときにソースとして RDS for Oracle スタンバイを設定するには
  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. Oracle スタンバイにアクセスするために使用する Oracle ユーザーアカウントに対する前述のディレクトリに対する Read の権限を許可します。

    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 スタンバイにも移植されることを確認します。

  6. ALL_DIRECTORIES Oracle Standby でクエリを実行して、変更が適用されたことを確認します。

  7. AWS DMS 管理コンソールまたは AWS Command Line Interface (AWS CLI) を使用して Oracle スタンバイのソースエンドポイントを作成します。エンドポイントの作成時に、次の追加の接続属性を指定します。

    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 ディファード制約はサポートされていません。

  • 完全 LOB モードでのセキュア 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 に設定します。

  • AWS DMS バージョン 3.4.7 以降を使用している場合、パーティション操作またはサブパーティション操作による変更を複製するには、DMS タスクを開始する前に次の操作を行います。

    • パーティション分割されたテーブル構造 (DDL) を手動で作成します。

    • DDL が Oracle ソースと Oracle ターゲットの両方で同じであることを確認します。

    • 追加の接続属性 enableHomogenousPartitionOps=true を設定します。

    enableHomogenousPartitionOps の詳細については、「Oracle をソースとして使用する場合のエンドポイント設定 AWS DMS」を参照してください。また、フルと CDC タスクでは、DMS はキャッシュした変更の一部としてキャプチャしたデータ変更をレプリケートしないことにも注意します。このようなユースケースでは、Oracle ターゲットでテーブル構造を再作成して、該当テーブルをもう一度ロードします。

    バージョン 3.4.7 より前: AWS DMS

    DMS は、パーティション操作またはサブパーティション操作 (ADDDROPEXCHANGETRUNCATE) によるデータ変更をレプリケートしません。このような更新により、レプリケーション中に次のエラーが発生する可能性があります:

    • ADD オペレーションの場合、追加されたデータの更新と削除により、「影響を受ける行は 0 です」という警告が表示されることがあります。

    • DROP および TRUNCATE オペレーションの場合、新しい挿入によって「重複」エラーが発生する可能性があります。

    • 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 LONG 列と LONG RAW 列をロードするための完全な LOB モードはサポートされていません。この代わりに、制限付き LOB モードを使用してこのようなデータ型を Oracle ターゲットに移行できます。制限付き LOB モードでは、64 KB AWS DMS を超える LONG 列または LONG RAW 列に設定したデータを 64 KB に切り捨てます。

  • AWS DMS XMLTYPE 列を読み込むための完全な LOB モードはサポートしていません。この代わりに、制限付き LOB モードを使用して XMLTYPE 列を Oracle ターゲットに移行できます。制限付き LOB モードでは、DMS はユーザー定義の「最大 LOB サイズ」変数以上のデータは切り捨てます。「最大 LOB サイズ」の最大推奨値は 100 MB です。

  • AWS DMS 名前にアポストロフィが含まれるテーブルは複製されません。

  • AWS DMS マテリアライズドビューから CDC をサポートします。ただし、DMS はその他のビューからの CDC はサポートしていません。

  • AWS DMS オーバーフローセグメントのある索引構成テーブルの CDC はサポートされていません。

  • AWS DMS set to Drop Partition を使用して参照によって分割されたテーブルの操作はサポートされていません。enableHomogenousPartitionOps true

  • Oracle LogMiner を使用して REDO ログにアクセスする場合、 AWS DMS 以下の制限があります。

    • Oracle 12 の場合のみ、LOB AWS DMS 列への変更はレプリケートされません。

    • Oracle のすべてのバージョンで、および LOB AWS DMS UPDATE XMLTYPE 列に対する操作の結果は複製されません。

    • AWS DMS Oracle を使用している間は、レプリケーション中の XA トランザクションはサポートされません。 LogMiner

    • Oracle LogMiner はプラガブルデータベース (PDB) への接続をサポートしていません。PDB に接続するには、Binary Reader を使用して REDO ログにアクセスします。

    • SHRINK SPACE 操作はサポートされていません。

  • バイナリリーダーを使用する場合、 AWS DMS 次の制限があります。

    • テーブルクラスターはサポートされていません。

    • テーブルレベルでの SHRINK SPACE オペレーションのみがサポートされます。このレベルには、テーブル全体、パーティション、サブパーティションが含まれます。

    • キー圧縮によるインデックス構成表への変更はサポートされません。

    • RAW デバイスでのオンライン REDO ログの実装はサポートされていません。

    • RDS for Oracle では、TDE 暗号化キーのウォレットパスワードの取得がサポートされていないため、Binary Reader は、セルフマネージド型 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」に対して属性を 1 つ、またこのキーの TDE パスワードが 1 つ持つことができます。

  • Amazon RDS for Oracle からレプリケーションする場合、TDE は暗号化されたテーブルスペースと Oracle を使用する場合にのみサポートされます。 LogMiner

  • AWS DMS 複数のテーブル名変更操作を連続して実行することはできません。

  • Oracle 19.0 をソースとして使用する場合、 AWS DMS 次の機能はサポートされません。

    • データガード DML リダイレクト

    • パーティション分割されたハイブリッドテーブル

    • スキーマのみの Oracle アカウント

  • AWS DMS BIN$またはタイプのテーブルまたはビューの移行はサポートされていません。DR$

  • Oracle 18.x 以降では、Oracle Express Edition (Oracle Database XE) からの変更データキャプチャ (CDC) AWS DMS はサポートされていません。

  • CHAR 列からデータを移行する場合、DMS は末尾のスペースをすべて切り捨てます。

  • AWS DMS アプリケーションコンテナからのレプリケーションはサポートされていません。

  • AWS DMS Oracle フラッシュバックデータベースと復元ポイントの実行はサポートされていません。これらの操作は Oracle REDO ログファイルの一貫性に影響するためです。

  • 並列実行オプションを使用したダイレクトロードの INSERT プロシージャは、次の場合にはサポートされません。

    • 255 列を超える非圧縮テーブル

    • 行サイズが 8K 以上

    • Exadata HCC テーブル

    • ビッグエンディアンプラットフォーム上で稼働するデータベース

  • プライマリキーも一意キーもないソーステーブルでは、ALL COLUMN サプリメンタルロギングを有効にする必要があります。これにより、さらに多くの REDO ログアクティビティが作成され、DMS CDC のレイテンシーが増加する可能性があります。

  • AWS DMS ソースデータベースの非表示列からデータを移行しません。このような列を移行の範囲に含めるには、ALTER TABLE ステートメントを使用して列を表示します。

Oracle エンドポイントでの SSL のサポート

AWS DMS Oracle エンドポイントは、および SSL モードで none SSL V3 をサポートしています。verify-caOracle エンドポイントで SSL を使用するには、.pem 証明書ファイルの代わりにエンドポイント用の Oracle ウォレットをアップロードします。

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 Wallet のディレクトリを作成します。

    prompt>mkdir $ORACLE_HOME/ssl_wallet
  4. CA 証明書ファイル .pemssl_wallet ディレクトリに配置します。Amazon RDS を使用する場合は、Amazon RDS によってホストされる rds-ca-2015-root.pem ルート CA 証明書ファイルをダウンロードできます。このファイルのダウンロード方法については、Amazon RDS ユーザーガイド‭ の「SSL/TLS を使用した DB インスタンス接続の暗号化」をご参照ください。

  5. 以下のコマンドを実行して Oracle Wallet を作成します。

    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

ここまでの手順を完了したら、ImportCertificate API コールで certificate-wallet パラメータを指定してウォレットファイルをインポートできます。Oracle エンドポイントの作成または変更時に SSL モードとして verify-ca を選択すると、インポートされたウォレット証明書を使用できます。

注記

Oracle ウォレットはバイナリファイルです。 AWS DMS はこれらのファイルをそのまま受け入れます。

Oracle SSL への自己署名証明書の使用

Oracle SSL に自己署名証明書を使用するには、oracle123 の Oracle ウォレットパスワードを次のように仮定して、次のステップを実行します。

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. ウォレットを見る。エントリが 2 つあるはずです。次のコードが表示されます。

    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) メソッドを示しています。

REDO ログのアクセス方法 TDE テーブルスペース TDE 列
オラクル LogMiner はい Yes
Binary Reader はい Yes

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. Oracle ソース エンドポイントの TDE 暗号化キー名を指定するには、securityDbEncryptionName 追加の接続属性を設定します。

    securityDbEncryptionName=ORACLE.SECURITY.DB.ENCRYPTION.AWGDC9glSk8Xv+3bVveiVSgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  6. Oracle ソースパスワード値の一部としてコンソールでこのキーに関連付けられた TDE パスワードを入力します。パスワード値。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 暗号化キー名が含まれています。新しい値を指定してタスクを再開するには、前の手順を使用します。

重要

OS レベルのcpmvorapkimkstoreなどのコマンドではASM の場所に保存されているウォレットファイルが破損するため、Oracle 自動ストレージ管理(ASM)の場所で作成された TDE ウォレットを操作することはできません。この制限は、ASM の場所に格納された TDE ウォレット ファイルにのみに固有であり、ローカル OS ディレクトリに格納されている TDE ウォレット ファイルは対象外です。

ASM に格納されている TDE ウォレットを OS レベルのコマンドで操作するには、ローカル キーストアを作成し、次のように 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 を使用して REDO LogMiner ログにアクセスするように設定されているかどうかによって異なります。

バージョン Basic (ベーシック) OLTP

HCC (Oracle 11g R2 より)

その他
Oracle 10 No 該当なし 該当なし No
Oracle 11 以降 — オラクル LogMiner はい はい Yes はい — Oracle がサポートしているすべての圧縮方法 LogMiner。
オラクル 11 以降 — Binary Reader はい Yes [Yes](はい) - 詳細については、次の注をご参照ください。 Yes
注記

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 1 レベルのテーブルネストのみをサポートします。

  • 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. CHILD.NESTED_TABLE_IDPARENT.NAME と一致する NAME_KEY 子テーブルとの結合を使用してテーブル NESTED_PARENT_TEST を平坦化します。

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

Oracle をソースとして使用しているときに REDO を Oracle ASM に保存する AWS DMS

REDO 生成が多い Oracle ソースの場合、REDO を Oracle ASM に保存すると、ASM REDO 読み取りをすべての ASM ノードに分散するように DMS を設定できるため、特に RAC 構成の場合にパフォーマンスが向上します。

この構成を利用するには、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 に対処するパッチが適用されていることを確認することが重要です。詳細については、Direct NFS クライアント関連のパッチに関する「Recommended Patches for Direct NFS Client」を参照してください。

さらに、NFS の読み取りパフォーマンスを向上するには、次の例のとおり NFS fstab ボリュームの rsizewsize in の値を増やすことをお勧めします。

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 コンソールを使用するか、--oracle-settings '{"EndpointSetting": "value", ...}' JSON create-endpoint AWS CLI構文のコマンドを使用して設定を指定します。

次の表は、Oracle をソースとして使用できるエンドポイント設定を説明しています。

名前 説明
AccessAlternateDirectly

ソースとして Amazon RDS for Oracle の変更データを Binary Reader でキャプチャするには、この属性を false に設定します。この設定は、DMS インスタンスに対して、指定されたパスプレフィックス置換を使用してファイルへの直接アクセスで REDO ログにアクセスしないように指示します。詳細については、「 RDS for Oracle ソースでバイナリリーダーを使用するように CDC タスクを設定する AWS DMS」を参照してください。

デフォルト値: true

有効な値: true/false

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

AdditionalArchivedLogDestId

この属性を、プライマリ スタンバイ セットアップで ArchivedLogDestId と設定します。この属性は、Oracle Data Guard データベースをソースとして使用する場合のスイッチオーバーに役立ちます。この場合、 AWS DMS 変更内容を読み取るために、アーカイブ REDO ログの取得先を知る必要があります。これは、スイッチオーバー後、前のプライマリがスタンバイインスタンスになるためです。

Oracle AWS DMS RESETLOGS オプションを使用してデータベースを開くことはサポートしていますが、RESETLOGS必要でない限り使用しないでください。RESETLOGS に関する追加情報については Oracle® データベース Backup およびリカバリ ユーザーガイドの「RMANデータ修復の概念」をご参照ください。

有効値: アーカイブ先 ID

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

AddSupplementalLogging

Oracle データベースにテーブルレベルのサプリメンタルロギングをセットアップするには、この属性を設定します。この属性は、テーブルのメタデータに応じて、移行タスク用に選択したすべてのテーブルで次のいずれかを有効にします。

  • PRIMARY KEY COLUMNS サプリメンタルロギング

  • UNIQUE KEY COLUMNS サプリメンタルロギング

  • ALL COLUMNS サプリメンタルロギング

デフォルト値: false

有効な値: true/false

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

注記

このオプションを使用する場合でも、前述のようにデータベースレベルサプリメンタルロギングを有効にする必要があります。

AllowSelectNestedTables

ネストされたテーブルまたは定義された型である列を含む Oracle テーブルのレプリケーションを有効にするには、この属性を true に設定します。詳細については、「Oracle をソースとして使用してネストされたテーブルをレプリケートします。 AWS DMS」を参照してください。

デフォルト値: false

有効な値: true/false

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

ArchivedLogDestId

アーカイブされた REDO ログの宛先 ID を指定します。この値は、v$archived_log ビューの dest_id 列の数値と同じにする必要があります。追加の REDO ログの保存先を使用する場合は、AdditionalArchivedLogDestId 属性を使用して、追加の宛先 ID を指定するようお勧めします。これにより、最初から適切なログにアクセスされるため、パフォーマンスが向上します。

デフォルト値: 1

有効な値: 数値

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

ArchivedLogsOnly

このフィールドを Y に設定すると、アーカイブされた REDO AWS DMS ログにのみアクセスします。アーカイブされた REDO ログが Oracle ASM にのみ保存される場合は、 AWS DMS ユーザーアカウントに ASM 権限を付与する必要があります。

デフォルト値: N

有効な値: Y/N

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

asmUsePLSQLArray (ECA のみ)

を使用してソースの変更をキャプチャする場合は、この追加の接続属性 (ECA) を使用してください。 BinaryReaderこの設定により、DMS は parallelASMReadThread 属性を使用してスレッド数を制御しながら、単一の読み取りスレッドごとに ASM レベルで 50 件の読み取りをバッファできるようになる。この属性を設定すると、 AWS DMS バイナリリーダーは匿名の PL/SQL ブロックを使用して REDO データをキャプチャし、それを大きなバッファとしてレプリケーションインスタンスに送り返します。これにより、ソースへの往復回数が低減する。これにより、ソースキャプチャのパフォーマンスは大幅に向上するとはいえ、ASM インスタンスの PGA メモリ消費量が増える。メモリターゲットが十分でない場合、安定性の問題が発生する可能性がある。次の式を使用して、単一の DMS タスクによる ASM インスタンスの PGA メモリの使用量合計を見積もることができる。number_of_redo_threads * parallelASMReadThreads * 7 MB

デフォルト値: false

有効な値: true/false

ECA の例:asmUsePLSQLArray=true;

ConvertTimestampWithZoneToUTC

TIMESTAMP WITH TIME ZONE 列と TIMESTAMP WITH LOCAL TIME ZONE 列のタイムスタンプ値を UTC に変換するには、この属性を true に設定する。デフォルトでは、この属性の値は「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

この属性を使ってビューからデータを 1 回プルできます。これを継続的なレプリケーションに使用することはできません。ビューからデータを抽出すると、そのビューはターゲットスキーマのテーブルとして表示されます。

デフォルト値: false

有効な値: true/false

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

ExtraArchivedLogDestIds

1 つ以上のアーカイブされた REDO ログに対する 1 つ以上の送信先の ID を指定します。このような ID は、v$archived_log ビューの dest_id 列の値である。この設定は、 ArchivedLogDestId primary-to-single セットアップまたはセットアップで追加の接続属性と一緒に使用してください。 primary-to-multiple-standby

この属性は、Oracle Data Guard データベースをソースとして使用するときの切り替えに役立ちます。この場合、変更内容を読み取るためにアーカイブ REDO 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 のみのタスクでオープントランザクションを確認する時間枠を分単位で指定する。

デフォルト値: 0

有効値: 0~240 の整数

例: openTransactionWindow=15;

OraclePathPrefix Amazon RDS for Oracle をソースとして Binary Reader で変更データをキャプチャするには、この文字列属性を必要な値に設定します。この値は、REDO ログにアクセスするために使用されるデフォルトの Oracle ルートを指定します。詳細については、「 RDS for Oracle ソースでバイナリリーダーを使用するように CDC タスクを設定する AWS DMS」を参照してください。

デフォルト値: なし

有効な値: /rdsdbdata/db/ORCL_A/

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

ParallelASMReadThreads

この属性を設定して、DMS が Oracle 自動ストレージ管理 (ASM) を使用して変更データ キャプチャ (CDC) を実行するように設定するスレッドの数を変更します。2 (デフォルト) から 8 (最大) までの整数値を指定できます。この属性は ReadAheadBlocks 属性とともに使用します。詳細については、「 RDS for Oracle ソースでバイナリリーダーを使用するように CDC タスクを設定する AWS DMS」を参照してください。

デフォルト値: 2

有効な値: 2~8 の整数

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

ReadAheadBlocks

この属性を設定して、 Oracle Automatic Storage Management (ASM) と ASM 以外の NAS ストレージを使用して CDC を実行するように DMS が設定する先読みブロック数を変更する。1,000 (デフォルト) から 200,000 (最大) までの整数値を指定できます。この属性は ParallelASMReadThreads 属性とともに使用します。詳細については、「 RDS for Oracle ソースでバイナリリーダーを使用するように CDC タスクを設定する AWS DMS」を参照してください。

デフォルト値: 1000

有効な値: 1,000~200,000 の整数

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

ReadTableSpaceName

true に設定すると、この属性はテーブルスペースのレプリケーションをサポートします。

デフォルト値: false

有効な値: ブール値

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

ReplacePathPrefix Amazon RDS for Oracle をソースとして Binary Reader で変更データをキャプチャするには、この属性を true に設定します。この設定は、DMS インスタンスに対して、デフォルトの Oracle ルートを UsePathPrefix の設定に置換して REDO ログにアクセスするように指示します。詳細については、「 RDS for Oracle ソースでバイナリリーダーを使用するように CDC タスクを設定する 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、Active Data Guard スタンバイインスタンスをソースとして使用して、進行中の変更をレプリケートする Oracle CDC タスクを作成できます。これにより、運用中のアクティブなデータベースに接続する必要がなくなります。

デフォルト値: 0

有効な値: 数値

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

注: DMS 3.4.6、3.4.7 以降を使用している場合、この接続設定の使用は任意となる。DMS 3.4.6 とバージョン 3.4.7 の最新バージョンでは、DMS がスタンバイ遅延時間を計算できるようにdms_userV_$DATAGUARD_STATS に対する select アクセス権限が必要となる。

UseAlternateFolderForOnline Amazon RDS for Oracle をソースとして Binary Reader で変更データをキャプチャするには、この属性を true に設定します。この設定は、DMS インスタンスに対して、指定されたプレフィックス置換を使用してすべてのオンライン REDO ログにアクセスするように指示します。詳細については、「 RDS for Oracle ソースでバイナリリーダーを使用するように CDC タスクを設定する AWS DMS」を参照してください。

デフォルト値: false

有効な値: true/false

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

UseBfile

Binary Reader ユーティリティを使用して変更データをキャプチャするには、この属性を Y に設定します。この属性を Y に設定するため、UseLogminerReader を N に設定します。また、 Amazon RDS for Oracle でソースとして Binary Reader を使用するには、追加の属性を設定します。この設定および Oracle 自動ストレージ管理 (ASM) の使用の詳細については、CDC 用の Oracle LogMiner AWS DMS またはバイナリリーダーの使用 を参照してください

注: この値を追加の接続属性 (ECA) として設定する場合の有効な値は「Y」と「N」となる。この値をエンドポイント設定として設定する場合、有効な値は truefalse となる。

デフォルト値: N

有効値: Y または N (この値を ECA として設定する場合)、true または false (この値をエンドポイント設定として設定する場合)

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

UseLogminerReader

この属性を Y に設定すると、 LogMiner ユーティリティ (デフォルト) を使用して変更データをキャプチャできます。 AWS DMS がバイナリファイルとして REDO ログにアクセスするようにする場合は、このオプションを N に設定します。このオプションを N に設定すると、useBfile=Y という設定も追加されます。この設定および Oracle 自動ストレージ管理 (ASM) の使用の詳細については、「CDC 用の Oracle LogMiner AWS DMS またはバイナリリーダーの使用」をご参照ください。

注: この値を追加の接続属性 (ECA) として設定する場合の有効な値は「Y」と「N」となる。この値をエンドポイント設定として設定する場合、有効な値は truefalse となる。

デフォルト値: Y

有効値: Y または N (この値を ECA として設定する場合)、true または false (この値をエンドポイント設定として設定する場合)

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

UsePathPrefix Amazon RDS for Oracle をソースとして Binary Reader で変更データをキャプチャするには、この文字列属性を必要な値に設定します。この値は、デフォルトの Oracle ルートを置換して REDO ログにアクセスするために使用されるパスプレフィックスを指定します。詳細については、「 RDS for Oracle ソースでバイナリリーダーを使用するように CDC タスクを設定する AWS DMS」を参照してください。

デフォルト値: なし

有効な値: /rdsdbdata/log/

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

Oracle のソースデータ型

の Oracle エンドポイントは、ほとんどの Oracle AWS DMS データ型をサポートしています。次の表は、を使用するときにサポートされる 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

タイムスタンプ時間帯あり

STRING (timestamp_with_timezone を指定)

タイムスタンプ現地時間帯あり

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

LONG データ型はバッチ最適化適用モード (CDC モード) ではサポートされません。TurboStream

このデータ型を使用するには AWS DMS、特定のタスクで LOB の使用を有効にしてください。

CDC または全ロード中は、 AWS DMS 主キーを持つテーブルの LOB データ型のみをサポートします。

また、LONG AWS DMS 列のロードではフル LOB モードはサポートされていません。この代わりに、制限付き LOB モードを使用して LONG 列を Oracle ターゲットに移行できる。制限付き LOB モードでは、64 KB AWS DMS を超える LONG 列に設定したデータを 64 KB に切り捨てます。での LOB サポートの詳細については、を参照してください。 AWS DMSタスク内のソースデータベースの LOB サポートの設定 AWS DMS

LONG RAW

BLOB

LONG RAW データ型はバッチ最適化適用モード (TurboStream CDC モード) ではサポートされていません。

このデータ型を使用するには AWS DMS、特定のタスクで LOB の使用を有効にしてください。

CDC または全ロード中は、 AWS DMS 主キーを持つテーブルの LOB データ型のみをサポートします。

また、LONG RAW AWS DMS 列のロードではフル LOB モードはサポートされていません。この代わりに、制限付き LOB モードを使用して LONG RAW 列を Oracle ターゲットに移行できる。制限付き LOB モードでは、64 KB AWS DMS を超える LONG RAW 列に設定したデータを 64 KB に切り捨てます。での LOB サポートの詳細については、を参照してください。 AWS DMSタスク内のソースデータベースの LOB サポートの設定 AWS DMS

XMLTYPE

CLOB

SDO_GEOMETRY

BLOB (Oracle から Oracle への移行の場合)

CLOB (Oracle から PostgreSQL への移行の場合)

以下のデータ型の列とともにソースとして使用されている Oracle テーブルはサポートされておらず、レプリケートすることができません。これらのデータ型の列をレプリケートすると NULL 列が発生します。

  • BFILE

  • ROWID

  • REF

  • UROWID

  • ユーザー定義のデータ型

  • ANYDATA

  • VARRAY

注記

仮想列はサポートされていません。

Oracle 空間データ型の移行

空間データは、空間内のオブジェクトまたは場所のジオメトリ情報を識別します。Oracle データベースでは、空間オブジェクトのジオメトリ説明は型 SDO_GEOMETRY のオブジェクトに保存されます。このオブジェクト内では、ジオメトリ説明は、ユーザー定義テーブルの 1 つの列の 1 つの行に格納されます。

AWS DMS は、Oracle タイプ SDO_GEOMETRY を Oracle ソースから Oracle ターゲットまたは PostgreSQL ターゲットのいずれかに移行することをサポートします。

を使用して Oracle 空間データ型を移行する場合は AWS DMS、次の考慮事項に注意してください。

  • Oracle ターゲットに移行する場合は、型情報を含む USER_SDO_GEOM_METADATA エントリを手動で転送してください。

  • Oracle ソースエンドポイントから PostgreSQL ターゲットエンドポイントに移行すると、 AWS DMS ターゲット列が作成されます。これらの列には、2D ディメンションとゼロ (0) に等しい空間参照識別子 (SRID) を持つデフォルトのジオメトリおよび地理的型情報があります。例: GEOMETRY, 2, 0

  • PostgreSQL ターゲットに移行する Oracle バージョン 12.1 以前のソースの場合、SDO2GEOJSON 関数または spatialSdo2GeoJsonFunctionName 追加の接続属性を使用して SDO_GEOMETRY オブジェクトを GEOJSON 形式に変換します。詳細については、「Oracle をソースとして使用する場合のエンドポイント設定 AWS DMS」を参照してください。

  • AWS DMS フル LOB モードでのみ Oracle 空間列の移行をサポートします。 AWS DMS 制限付き LOB モードまたはインライン LOB モードはサポートしていません。LOB モードの詳細については、「タスク内のソースデータベースの LOB サポートの設定 AWS DMS」を参照。

  • Oracle Spatial Columns の移行ではフル LOB AWS DMS モードのみをサポートしているため、列のテーブルには主キーとユニークキーが必要です。プライマリキーと一意のキーがないテーブルは移行でスキップされる。