AWS DMSのソースとしての Oracle データベースの使用 - AWS データベース移行サービス

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

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 またはバイナリリーダーを選択すると、後のアクセス許可と設定オプションの一部が決まります。 LogMiner とバイナリリーダーの比較については、次のセクションを参照してください。

注記

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

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

CDC に Oracle LogMiner または AWS DMS Binary Reader を使用する

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

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

部分的

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

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

部分的

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

部分的

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

すべての Oracle 圧縮法に対応 あり なし
XA トランザクションに対応 なし あり
RAC

あり

パフォーマンス上の理由や内部 DMS の制限により、推奨されません。

あり

強く推奨

注記

デフォルトでは、 は 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 の直接アクセス設定や、REDO ログが Oracle Automatic Storage Management (ASM) を使用して管理されている場合と比較して、設定が簡単になります。

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

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

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

  • 変更量の多い移行では、Oracle を使用するよりも Binary Reader を使用する場合の CDC パフォーマンスが通常はるかに優れています LogMiner。

  • Binary Reader は、Oracle バージョン 12c の LOBs の CDC をサポートしています。 LogMiner はサポートしていません。

通常、次のいずれかの状況がない限り、Oracle データベースの LogMiner 移行に Oracle を使用します。

  • ソース 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 を使用して REDO ログ LogMiner にアクセスするときに必要なアカウント権限」、「AWS DMS Binary Reader を使用して REDO ログにアクセスするときに必要なアカウント権限」や「Oracle ASM で Binary Reader の使用時に必要なアカウント権限」をご参照ください。

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

のセルフマネージド型または AWSマネージド型の Oracle ソースデータベースを設定するためのワークフロー AWS DMS

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

セルフマネージド型のソースデータベースインスタンスを設定するには、CDC の実行方法に応じて、次のワークフローステップを使用します。

このワークフロー ステップの場合 を使用して CDC を実行する場合は LogMiner、これを実行します。 Binary Reader を使用して CDC を実行する場合は、これを行います
Oracle アカウントの特権を付与します。 のセルフマネージド Oracle ソースに必要なユーザーアカウント権限 AWS DMS」を参照してください のセルフマネージド Oracle ソースに必要なユーザーアカウント権限 AWS DMS」を参照してください
CDC を使用してレプリケーション用のソースデータベースを準備します。 を使用した CDC 用の Oracle セルフマネージド型ソースデータベースの準備 AWS DMS」を参照してください を使用した CDC 用の Oracle セルフマネージド型ソースデータベースの準備 AWS DMS」を参照してください
CDC に必要な追加の Oracle ユーザー権限を付与します。 Oracle を使用して REDO ログ LogMiner にアクセスするときに必要なアカウント権限」を参照してください AWS DMS Binary Reader を使用して REDO ログにアクセスするときに必要なアカウント権限」を参照してください
ASM を持つ Oracle インスタンスの場合は、 CDC のために ASM へのアクセスに必要な追加のユーザーアカウント権限を付与します。 追加のアクションはありません。 は、追加のアカウント権限なしで Oracle ASM AWS DMS をサポートします。 Oracle ASM で Binary Reader の使用時に必要なアカウント権限 を参照してください。
まだ行っていない場合は、CDC 用の LogMiner または Binary Reader を使用するようにタスクを設定します。 CDC に Oracle LogMiner または AWS DMS Binary Reader を使用する」を参照してください CDC に Oracle LogMiner または AWS DMS Binary Reader を使用する」を参照してください
Oracle スタンバイを CDC のソースとして設定します。 AWS DMS はソースとして Oracle Standby をサポートしていません。 AWS DMSの CDC 用Binary Reader を使用したソースとしてのセルフ管理 Oracle スタンバイの使用 を参照してください。

AWSマネージド Oracle ソースデータベースインスタンスを設定するには、次のワークフローステップを使用します。

このワークフロー ステップの場合 を使用して CDC を実行する場合は LogMiner、これを実行します。 Binary Reader を使用して CDC を実行する場合は、これを行います
Oracle アカウントの特権を付与します。 詳細については、「の AWSマネージド Oracle ソースに必要なユーザーアカウント権限 AWS DMS」を参照してください。 詳細については、「の AWSマネージド Oracle ソースに必要なユーザーアカウント権限 AWS DMS」を参照してください。
CDC を使用してレプリケーション用のソースデータベースを準備します。 詳細については、「 の マネージド Oracle AWSソースの設定 AWS DMS」を参照してください。 詳細については、「 の マネージド Oracle AWSソースの設定 AWS DMS」を参照してください。
CDC に必要な追加の Oracle ユーザー権限を付与します。 追加のアカウント権限は必要ありません。 詳細については、「 の RDS for Oracle ソースで Binary Reader を使用するように CDC タスクを設定する AWS DMS」を参照してください。
まだ行っていない場合は、CDC 用の LogMiner または Binary Reader を使用するようにタスクを設定します。 詳細については、「CDC に Oracle LogMiner または AWS DMS Binary Reader を使用する」を参照してください。 詳細については、「CDC に Oracle LogMiner または AWS DMS Binary Reader を使用する」を参照してください。
Oracle スタンバイを CDC のソースとして設定します。 AWS DMS はソースとして Oracle Standby をサポートしていません。 詳細については、「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 V$DATABASE_INCARNATION TO db_user;

特定のテーブルリストを使用する場合は、レプリケーションテーブルごとに次の追加権限を付与します。

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; GRANT SELECT ON DBA_USERS to dms_user; GRANT SELECT ON DBA_DIRECTORIES to dms_user;

Oracle 独自の移行前評価の詳細については、「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 に設定します。

サプリメンタル ロギングの設定

進行中の変更をキャプチャするには、Oracle ソースデータベースで最小限のサプリメンタルログを有効にする AWS DMS 必要があります。さらに、データベース内のレプリケーションされた各テーブルでサプリメンタル ロギングを有効にする必要があります。

デフォルトでは、 はレプリケートされたすべてのテーブルにPRIMARY KEYサプリメンタルログ AWS DMS を追加します。 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 を使用して REDO ログ LogMiner にアクセスするときに必要なアカウント権限

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

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

注記

AWS DMS CDC は、自動 REDO トランスポートサービスを使用するように設定されていない Active Dataguard Standby をサポートしていません。

このような場合、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 Active Data Guard スタンバイのみをサポートしています。

  • 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 などの Amazon サービス上にあるデータベースです。で 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

の マネージド Oracle AWSソースの設定 AWS DMS

AWSマネージド Oracle データベースを のソースとして使用する前に AWS DMS、Oracle データベースに対して次のタスクを実行します。

  • 自動バックアップを有効化します。自動バックアップの有効化の詳細については、Amazon RDS ユーザーガイド の「自動バックアップの有効化」をご参照ください。

  • サプリメンタルロギングをセットアップします。

  • アーカイブを設定します。Amazon RDS for Oracle DB インスタンスの REDO ログをアーカイブすると AWS DMS 、 は Oracle LogMiner または Binary Reader を使用してログ情報を取得できます。

アーカイブを設定するには
  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 ソースで Binary Reader を使用するように CDC タスクを設定する AWS DMS

CDC 用 Binary Reader を使用して、ソース 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 を設定します。

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

その後、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_%' )

    たとえば、前述のコードでは、次のようなディレクトリの一覧が表示されます。

    Table showing directory names and their corresponding paths for archive and online logs.
  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 Command Line Interface () を使用して、Oracle スタンバイの AWS DMS ソースエンドポイントを作成しますAWS CLI。エンドポイントの作成時に、次の追加の接続属性を指定します。

    useLogminerReader=N;useBfile=Y;archivedLogDestId=1;additionalArchivedLogDestId=2
  8. エンドポイントを作成したら、コンソールのエンドポイントの作成ページでエンドポイント接続のテストを使用するか、 AWS CLI test-connection コマンドを使用して接続が確立されていることを確認します。

のソースとしての Oracle の使用に関する制限 AWS DMS

Oracle データベースを AWS DMSのソースとして使用する場合は、以下の制限が適用されます。

  • AWS DMS は、 AWS DMS バージョン 3.5.0 以降の Oracle 拡張データ型をサポートしています。

  • AWS DMS は長いオブジェクト名 (30 バイト以上) をサポートしていません。

  • AWS DMS は関数ベースのインデックスをサポートしていません。

  • サプリメンタル ログを管理し、いずれかの列で変換を実行する場合は、すべてのフィールドと列でサプリメンタル ログが有効になっていることを確認してください。サプリメンタル ログの設定の詳細については、以下のトピックをご参照ください:

  • AWS DMS は、マルチテナントコンテナルートデータベース (CDB$ROOT) をサポートしていません。しかし、Binary Reader を使用した PDB をサポートしています。

  • AWS DMS は遅延制約をサポートしていません。

  • AWS DMS バージョン 3.5.1 以降では、安全な LOBs は 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 ターゲットでテーブル構造を再作成して、該当テーブルをもう一度ロードします。

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

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

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

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

    • EXCHANGE オペレーションは、「影響を受ける行は 0 です」警告と「重複」エラーの両方が発生する可能性があります。

    パーティションオペレーションまたはサブパーティションオペレーションによる変更をレプリケートするには、対象のテーブルをリロードします。新しい空のパーティションを追加した後、新しく追加されたテーブルに対するオペレーションは、通常どおりターゲットへのレプリケーションとなります。

  • AWS DMS 3.4 より前のバージョンでは、ソースで CREATE TABLE ASステートメントを実行した結果生じるターゲットのデータ変更をサポートしていません。ただし、新しいテーブルがターゲットで作成されます。

  • AWS DMS は、テーブルメタデータや OBJECT_IDフィールドなど、Oracle DBMS_REDEFINITIONパッケージによって行われた変更をキャプチャしません。

  • 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 を超える LONG または LONG RAW 列に設定したデータを 64 KB に AWS DMS 切り捨てます。

  • 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 は、 を enableHomogenousPartitionOpsに設定して参照によってパーティション分割されたテーブルの Drop Partitionオペレーションをサポートしていませんtrue

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

    • Oracle 12 のみの場合、LOB 列に変更をレプリケー AWS DMS トしません。

    • すべての Oracle バージョンで、 AWS DMS XMLTYPEおよび LOB 列に対するUPDATEオペレーションの結果をレプリケートしません。

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

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

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

  • Binary Reader を使用する場合、 AWS DMS には次の制限があります。

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

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

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

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

    • RDS for Oracle では、TDE 暗号化キーのウォレットパスワードの取得がサポートされていないため、Binary Reader は、セルフマネージド型 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」に対して属性を 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 以降、 AWS DMS Oracle Express Edition (Oracle Database XE) からの変更データキャプチャ (CDC) はサポートされていません。

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

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

  • AWS DMS では、Oracle Flashback Database と復元ポイントの実行はサポートされていません。これらのオペレーションは Oracle Redo ログファイルの整合性に影響するためです。

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

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

    • 行サイズが 8K 以上

    • Exadata HCC テーブル

    • Big Endian プラットフォームで実行されているデータベース

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

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

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

AWS DMS Oracle エンドポイントは、 noneおよび SSL モードの SSL V3 verify-ca をサポートします。Oracle エンドポイントで 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. AWS DMS が使用する新しいクライアント Oracle ウォレットを作成します。

    orapki wallet create -wallet ./ -auto_login_only
  26. Oracle ウォレットに自己署名証明書を追加します。

    orapki wallet add -wallet ./ -trusted_cert -cert self-rootCA.pem -auto_login_only
  27. AWS DMS が使用する Oracle ウォレットの内容を一覧表示します。リストには自己署名証明書が含まれます。

    orapki wallet display -wallet ./

    これにより次のような出力が生成されます。

    Trusted Certificates: Subject: CN=aws,OU=DBeng,O=AmazonWebService,L=Sydney,ST=NSW,C=AU
  28. 先ほど作成した Oracle ウォレットを にアップロードします AWS DMS。

のソースとして Oracle を使用するためのサポートされている暗号化方法 AWS DMS

次の表に、Oracle ソースデータベースを使用する際に が AWS DMS サポートする透過的データ暗号化 (TDE) メソッドを示します。

REDO ログのアクセス方法 TDE テーブルスペース TDE 列
Oracle LogMiner はい あり
Binary Reader はい あり

AWS DMS は、バイナリリーダーを使用する場合、列レベルとテーブルスペースレベルの両方で Oracle TDE をサポートします。で TDE 暗号化を使用するには AWS DMS、まず TDE 暗号化キーと TDE パスワードが保存されている Oracle ウォレットの場所を特定します。次に、Oracle ソース エンドポイントの正しい TDE 暗号化キーとパスワードを特定します。

TDE 暗号化の暗号化キーとパスワードを識別して指定するには
  1. 次のクエリを実行して、Oracle データベースホスト上の Oracle 暗号化ウォレットを検索します。

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

    ここでは /u01/oracle/product/12.2.0/dbhome_1/data/wallet/ がウォレットの場所です。

  2. この値を返すものに応じて、次のいずれかの暗号化オプションを使用してマスター キー ID を取得します。

    1. テーブルレベルまたは列レベルの暗号化の場合は、次のクエリを実行します。

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

      ここでは AWGDC9glSk8Xv+3bVveiVSg がマスターキー ID (MKEYID) です。MKEYID の値が得られたら、ステップ 3 に進むことができます。それ以外の場合は、ステップ 2.2 に進みます。

      注記

      末尾の文字列 'A' 文字 (AAA...) は値の一部ではありません。

    2. テーブルスペース レベルの暗号化の場合は、次のクエリを実行します。

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

      ここでは AWGDC9glSk8Xv+3bVveiVSg がマスターキー ID (TEST_ENCRYT) です。ステップ 2.1 と 2.2 の両方が値を返す場合、それらは常に同一です。

      末尾の '='文 字は値の一部ではありません。

  3. コマンド・ラインから、ソース Oracle データベース ホスト上の暗号化ウォレット エントリをリストします。

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

    ステップ 2 (AWGDC9glSk8Xv+3bVveiVSg) で確認したマスター キー ID を含むエントリを検索します。このエントリは TDE 暗号化キー名です。

  4. 前のステップで検索したエントリの詳細を表示します。

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

    ウォレット パスワードを入力して結果を確認します。

    ここで、'=' の右にある値は TDE パスワードです。

  5. 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 にアクセスするように設定されているかどうかの両方によって異なります。

Version Basic (ベーシック) OLTP

HCC (Oracle 11g R2 より)

その他
Oracle 10 なし 該当なし 該当なし なし
Oracle 11 以降 – Oracle LogMiner はい はい あり はい — Oracle でサポートされている圧縮方法 LogMiner。
オラクル 11 以降 — Binary Reader はい あり [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 を使用する場合の Oracle ASM への REDO の保存 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 CLI、 AWS DMS コンソールを使用するか、--oracle-settings '{"EndpointSetting": "value", ...}'JSON 構文で の create-endpoint コマンドを使用して設定を指定します。

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

名前 説明
AccessAlternateDirectly

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

デフォルト値: true

有効な値: true/false

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

AdditionalArchivedLogDestId

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

AWS DMS では Oracle 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 AWS DMS .4.7 で導入されたことに注意してください。

デフォルト値: 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 列の値である。この設定は、セットアップまたは primary-to-single セットアップの追加 ArchivedLogDestId 接続属性で使用します 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) を使用して、 を使用するときに Oracle からデータをレプリケートするときに、DMS が指定されたユーザーからのトランザクションを無視できるようにします LogMiner。カンマ区切りのユーザー名の値を渡すことができる。ただし、すべて大文字にする必要がある。

ECA の例:filterTransactionsOfUser=USERNAME;

NumberDataTypeScale

数値のスケールを指定します。最大 38 のスケールを選択するか、FLOAT には -1、VARCHAR には -2 を選択できます。デフォルトでは、NUMBER データ型が精度 38、スケール 10 に変換されます。

デフォルト値: 10

有効な値: -2〜38 (VARCHAR では -2、FLOAT の場合は -1)

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

注記

精度スケールの組み合わせ、-1 (FLOAT) または -2 (VARCHAR) を選択します。DMS は、Oracle がサポートする精度スケールの組み合わせをサポートします。精度が 39 以上の場合は、-2 (VARCHAR) を選択します。Oracle データベースの NumberDataTypeScale 設定は、NUMBER データ型にのみ使用されます (明示的な精度とスケール定義なし)。

OpenTransactionWindow

CDC のみのタスクでオープントランザクションを確認する時間枠を分単位で指定する。

注記

OpenTransactionWindow を 1 以上に設定した場合、DMS は SCN_TO_TIMESTAMPを使用して SCN 値をタイムスタンプ値に変換します。Oracle Database の制限により、CDC 開始点として古すぎる SCN を指定すると、SCN_TO_TIMESTAMP はORA-08181エラーで失敗し、CDC のみのタスクを開始することはできません。

デフォルト値: 0

有効値: 0~240 の整数

例: openTransactionWindow=15;

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

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

デフォルト値: N

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

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

UseLogminerReader

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

注: この値を追加の接続属性 (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 ソースで Binary Reader を使用するように 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

  • 長さが 4,000 バイトを超える場合の CLOB

  • 長さが 4,000 バイト以下の場合の STRING

NCHAR

WSTRING

NVARCHAR2

  • 長さが 4,000 バイトを超える場合の NCLOB

  • 長さが 4,000 バイト以下の場合の WSTRING

RAW

BYTES

REAL

REAL8

BLOB

BLOB

このデータ型を で使用するには AWS DMS、特定のタスクで BLOB データ型の使用を有効にする必要があります。 は、プライマリキーを含むテーブルでのみ BLOB データ型 AWS DMS をサポートします。

CLOB

CLOB

このデータ型を で使用するには AWS DMS、特定のタスクで CLOB データ型の使用を有効にする必要があります。CDC 中、 はプライマリキーを含むテーブルでのみ CLOB データ型 AWS DMS をサポートします。

NCLOB

NCLOB

このデータ型を で使用するには AWS DMS、特定のタスクで NCLOB データ型の使用を有効にする必要があります。CDC 中、 はプライマリキーを含むテーブルでのみ NCLOB データ型 AWS DMS をサポートします。

LONG

CLOB

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

このデータ型を で使用するには AWS DMS、特定のタスクで LOBsの使用を有効にします。

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

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

LONG RAW

BLOB

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

このデータ型を で使用するには AWS DMS、特定のタスクで LOBsの使用を有効にします。

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

また、LONG RAW 列をロードするためのフル LOB モードは AWS DMS サポートされていません。この代わりに、制限付き LOB モードを使用して LONG RAW 列を Oracle ターゲットに移行できる。限定 LOB モードでは、 は、64 KB を超える LONG RAW 列に設定したデータを 64 KB に AWS DMS 切り捨てます。での 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 のオブジェクトに保存されます。このオブジェクト内では、ジオメトリ説明は、ユーザー定義テーブルの 1 つの列の 1 つの行に格納されます。

AWS DMS は、Oracle ソースから Oracle または PostgreSQL ターゲットへの Oracle タイプ SDO_GEOMETRY の移行をサポートします。

を使用して 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 空間列移行のみをサポートします。制限付き LOB モードまたはインライン LOB モードは AWS DMS サポートされていません。LOB モードの詳細については、「AWS DMS タスクでのソースデータベースLOBのサポートの設定」を参照。

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