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

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

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

AWS DMS を使用して、1 つ以上の Oracle データベースからデータを移行できます。Oracle データベースをソースとして使用すると、AWS DMS によりサポートされているいずれかのターゲットにデータを移行できます。

DMS では、次の Oracle データベースエディションがサポートされています。

  • Oracle Enterprise Edition

  • Oracle Standard Edition

  • Oracle Express Edition

  • Oracle Personal Edition

自己管理型の Oracle データベースの場合、AWS DMS ではバージョン 10.2 以降 (バージョン 10.x)、11g、12.2、18c、および 19c までのすべての Oracle データベースエディションがサポートされています。AWS が管理する Amazon RDS for Oracle データベースの場合、AWS DMS はバージョン 11g (バージョン 11.2.0.4 以降) および 12.2、18c、19c までのすべての Oracle データベースエディションをサポートしています。

注記
  • ソースとして Oracle バージョン 19c のサポートは、AWS DMS バージョン 3.3.2 以降で利用できます。

  • ソースとして Oracle バージョン 18c のサポートは、AWS DMS バージョン 3.3.1 以降で利用できます。

Secure Sockets Layer (SSL) を使用して、Oracle エンドポイントとレプリケーションインスタンスとの接続を暗号化できます。Oracle エンドポイントでの SSL の使用の詳細については、「AWS Database Migration Service での SSL の使用」を参照してください。AWS DMS では、Oracle 透過的データ暗号化 (TDE) を使用して、ソースデータベースに保存されているデータを暗号化することもできます。Oracle ソースエンドポイントで Oracle TDE を使用する方法については、「AWS DMS のソースとして Oracle を使用するためにサポートされている暗号化方法」を参照してください。

Oracle データベースを AWS DMS ソースエンドポイントとして設定するには、以下のステップに従います。

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

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

  3. 変更データキャプチャを処理するタスク (CDC のみのタスクまたは全ロードと CDC のタスク) を作成するには、Oracle LogMiner または AWS DMS Binary Reader を選択してデータ変更をキャプチャします。または Binary Reader を選択すると、それ以降のアクセス許可と設定オプションのいくつかが決定されます。LogMinerと Binary Reader の比較については、次のセクションを参照してください。LogMiner

注記

全ロードタスク、CDC のみのタスク、全ロードタスクおよび CDC タスクの詳細については、「タスクの作成」を参照してください。

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

CDC での Oracle LogMiner または AWS DMS Binary Reader の使用

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

機能 LogMiner Binary Reader
設定が簡単 はい いいえ
ソースシステムの I/O および CPU への影響を下げる いいえ はい
CDC パフォーマンスの向上 いいえ はい
Oracle テーブルクラスターをサポート はい いいえ
すべてのタイプの Oracle Hybrid Columnar Compression (HCC) をサポートします。 はい

部分的

Binary Reader は、CDC を使用するタスクで QUERY LOW をサポートしていません。他のすべての HCC タイプは完全にサポートされています。

Oracle 12c での LOB 列のサポート いいえ はい
LOB 列にのみ影響を与える UPDATE ステートメントをサポート いいえ はい
Oracle 透過的なデータ暗号化 (TDE) をサポート はい

部分的

Binary Reader は、セルフマネージド型 Oracle データベースに対してのみ TDE をサポートします。

すべての Oracle 圧縮方法をサポートします。 はい いいえ
注記

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

で 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

  • 大量の変更を含む移行の場合、LogMiner は Oracle ソースデータベースをホストしているコンピュータに対して I/O または CPU に影響を及ぼす可能性があります。Binary Reader では、アーカイブログがレプリケーションインスタンスにコピーされてそこでデータマイニングが行われるため、I/O や CPU に影響を与える可能性は高くありません。

  • 大量の変更を含む移行の場合、Oracle LogMiner を使用するより Binary Reader を使用した方が CDC のパフォーマンスが通常ははるかに高くなります。

  • Binary Reader は、Oracle バージョン 12c で LOBs の 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;
注記

3.3.1 より前の AWS DMS バージョンを使用して、Oracle バージョン 11.2.0.4.v11 以降および 12.1.0.2.v7 でのみ AWS マネージド型ソースに Binary Reader を使用するように CDC タスクを設定できます。Oracle バージョン 12.2 以降の AWS マネージドソースに Binary Reader を設定するには、AWS DMS バージョン 3.3.1 以降を使用します。詳細については、「のソースとしての AWS マネージド型 Oracle データベースの使用AWS DMS」を参照してください。

次の追加の接続属性形式を使用して、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;

追加の接続属性がサポートする値の詳細については、「AWS DMS のソースとして Oracle を使用する場合の追加の接続属性」を参照してください。

さらに、ASM を使用する Oracle ソースを使用した CDC タスクのパフォーマンスは、選択した他の設定によって異なります。これらの設定には、AWS DMS の追加の接続属性と Oracle ソースを設定するための SQL 設定が含まれます。ASM を使用した Oracle ソースの追加の接続属性の詳細については、「AWS DMS のソースとして Oracle を使用する場合の追加の接続属性」を参照してください。

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

ソースとしてのセルフマネージド型 Oracle データベースの CDC 設定の詳細については、「Oracle LogMiner を使用して REDO ログにアクセスする場合に必要なアカウント権限」、「AWS DMS Binary Reader を使用して REDO ログにアクセスする場合に必要なアカウント権限」、および「Oracle ASM で Binary Reader を使用する場合に必要な追加のアカウント権限」を参照してください。

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

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

以下のワークフローステップを使用して、セルフマネージド型または AWS マネージド型の Oracle ソースデータベースインスタンスを設定します。

ソースインスタンスとしてセルフマネージド型 Oracle のユーザーアカウントと CDC を設定するには

  1. Oracle アカウント権限を付与します。詳細については、「AWS DMS のセルフマネージド型 Oracle ソースで必要なユーザーアカウント権限」を参照してください。

  2. CDC を使用してレプリケーションのソースデータベースを準備します。詳細については、「を使用した CDC 用の Oracle 自己管理型ソースデータベースの準備AWS DMS」を参照してください。

  3. CDC に必要な追加の Oracle ユーザー権限を付与します。

  4. ASM を使用する Oracle インスタンスの場合、CDC の ASM にアクセスするために必要な追加のユーザーアカウント権限を付与します。

  5. まだ実行していない場合は、CDC に LogMiner または Binary Reader を使用するようにタスクを設定します。詳細については、「CDC での Oracle LogMiner または AWS DMS Binary Reader の使用」を参照してください。

  6. CDC のソースとして Oracle Standby を設定します。

が管理する Oracle のユーザーアカウントと CDC をソースインスタンスとして設定するにはAWS

  1. Oracle アカウント権限を付与します。詳細については、「の AWS マネージド Oracle ソースで必要なユーザーアカウント権限AWS DMS」を参照してください。

  2. CDC を使用してレプリケーションのソースデータベースを準備します。詳細については、「 の AWS マネージド Oracle ソースの設定AWS DMS」を参照してください。

  3. CDC に必要な追加の Oracle ユーザー権限を付与します。

  4. まだ実行していない場合は、CDC に LogMiner または Binary Reader を使用するようにタスクを設定します。詳細については、「CDC での Oracle LogMiner または AWS DMS Binary Reader の使用」を参照してください。

  5. CDC のソースとして Oracle Standby を設定します。

AWS DMS のソースとしてセルフマネージド型 Oracle データベースを使用する

セルフマネージド型データベースは、自分で構成および制御するデータベースで、ローカルのオンプレミスデータベースインスタンスまたは Amazon EC2 上のデータベースのどちらかです。でセルフマネージド型 Oracle データベースを使用する場合に必要な権限と設定を以下に示します。AWS DMS

AWS DMS のセルフマネージド型 Oracle ソースで必要なユーザーアカウント権限

AWS DMS で Oracle データベースをソースとして使用するには、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 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 .

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

SELECT on any-replicated-table;

を使用した 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 モードに設定されていない場合は、次のコマンドを実行して設定します。

ALTER database ARCHIVELOG;

サプリメンタルロギングのセットアップ

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

デフォルトでは、AWS DMS はレプリケートされたすべてのテーブルに PRIMARY KEY サプリメンタルロギングを追加します。が AWS DMS サプリメンタルロギングを追加できるようにするには、レプリケートされたテーブルごとに次の権限を付与します。PRIMARY KEY

ALTER on any-replicated-table;

追加の接続属性 PRIMARY KEY を使用して、AWS DMS によって追加されたデフォルトの addSupplementalLogging サプリメンタルロギングを無効にすることができます。 詳細については、「AWS DMS のソースとして Oracle を使用する場合の追加の接続属性」を参照してください。

サプリメンタルロギングを手動でセットアップするには

  1. 次のクエリを実行して、データベースのサプリメンタルロギングがすでに有効になっているかどうかを確認します。

    SELECT supplemental_log_data_min FROM v$database;

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

    有効になっていない場合は、次のコマンドを実行して、データベースのサプリメンタルロギングを有効にします。

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
  2. レプリケートされたテーブルごとに必要なサプリメンタルロギングが追加されていることを確認します。

    以下の点を考慮します。

    • サプリメンタルロギングがテーブルに追加されている場合は、さらにロギングを追加する必要はありません。ALL 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 の場合は、列 A と列 B の両方にサプリメンタルロギングを追加します。 ただし、変換 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 LogMiner を使用して REDO ログにアクセスするには、Oracle エンドポイント接続設定で指定された Oracle ユーザーに次の権限を付与します。

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

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

Binary Reader を使用して REDO ログにアクセスするには、Oracle エンドポイント接続設定で指定された Oracle ユーザーに次の権限を付与します。AWS DMS

SELECT on v_$transportable_platform -– Grant this privilege if the redo logs are stored in Oracle Automatic Storage Management (ASM) and AWS DMS accesses them from ASM. CREATE ANY DIRECTORY -– 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. EXECUTE on DBMS_FILE_TRANSFER package -– Grant this privilege to copy the redo log files to a temporary folder using the CopyToTempFolder method. EXECUTE on DBMS_FILE_GROUP

Binary Reader は、Oracle ディレクトリを含む Oracle ファイル機能で動作します。各 Oracle ディレクトリオブジェクトには、処理する REDO ログファイルが格納されているフォルダの名前が含まれます。これらの Oracle ディレクトリは、ファイルシステムレベルでは表されません。代わりに、これらは Oracle データベースレベルで作成される論理ディレクトリとなります。これらのビューは、Oracle ALL_DIRECTORIES ビューで表示できます。

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

Oracle ソースエンドポイントが Active Dataguard Standby (ADG) にある場合は、AWS データベースブログの「ADG で Binary Reader を使用する方法」の投稿を参照してください。

注記

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 later, 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

の CDC 用 Binary Reader でソースとしてセルフマネージド型 Oracle スタンバイを使用するAWS DMS

CDC に Binary Reader を使用する場合に Oracle Standby インスタンスをソースとして設定するには、次の前提条件を参照してください。

  • AWS DMS は現在、Oracle Active Data Guard スタンバイのみをサポートしています。

  • Oracle Data Guard 設定で以下が使用されていることを確認します。

    • REDO データ転送の自動転送のための REDO 転送サービス。

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

CDC に Binary Reader を使用する場合に Oracle Standby インスタンスをソースとして設定するには

  1. スタンバイログファイルにアクセスするために必要な追加の権限を付与します。

    GRANT SELECT ON v_$standby_log TO db_user;
  2. または AWS マネジメントコンソール を使用して、Oracle Standby のソースエンドポイントを作成します。AWS CLIエンドポイントを作成するときは、以下の追加の接続属性を指定します。

    useLogminerReader=N;useBfile=Y
注記

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

のソースとしての AWS マネージド型 Oracle データベースの使用AWS DMS

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

の AWS マネージド Oracle ソースで必要なユーザーアカウント権限AWS DMS

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

重要

db_user などのすべてのパラメータ値では、大文字と小文字を区別する識別子で値を指定しない限り、Oracle はこの値をすべて大文字と見なします。any-replicated-tableたとえば、db_user または CREATE USER myuser のように、引用符を使用せずに CREATE USER MYUSER 値を作成したとします。 この場合、Oracle は値をすべての大文字 (MYUSER) として識別して保存します。や CREATE USER "MyUser" のように引用符を使用する場合、Oracle は大文字と小文字を区別する値 (CREATE USER 'MyUser') を識別して保存します。MyUser

GRANT CREATE SESSION to db_user; GRANT SELECT ANY TRANSACTION to db_user; GRANT SELECT on DBA_TABLESPACES to db_user; GRANT LOGMINING to db_user; (for Oracle 12c only) GRANT SELECT ON any-replicated-table to db_user;

さらに、次に示すように SELECT プロシージャ EXECUTE を使用して、SYS オブジェクトに対する Amazon RDS および rdsadmin.rdsadmin_util.grant_sys_object アクセス許可を付与します。詳細については、「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('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 AWS DMS versions 3.3.1 and later and as of Oracle versions 12.1 and later) 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');

AWS DMS で Amazon RDS Active Dataguard Standby (ADG) を使用する方法の詳細については、「で CDC の Binary Reader でソースとして Amazon RDS Oracle Standby (リードレプリカ) を使用するAWS DMS」を参照してください。

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

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

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

  • 自動バックアップを有効化します。

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

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

前述の各ステップについては、以下で詳しく説明します。

自動バックアップの有効化

  1. AWS マネジメントコンソールにサインインし、Amazon RDS コンソール (https://console.aws.amazon.com/rds/) を開きます。

  2. for Oracle データベースインスタンスの [Management Settings (管理設定)] セクションで、[Amazon RDSEnabled Automatic Backups (有効な自動バックアップ)] オプションを [Yes (はい)] に設定します。

アーカイブを設定するには

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

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

    exec rdsadmin.rdsadmin_util.set_configuration('archivelog retention hours',24);
  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 を使用して、ソースの AWS DMS for Oracle インスタンスの REDO ログにアクセスするように Amazon RDS を設定できます。

注記

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

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

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

  • Oracle 11.2 – バージョン 11.2.0.4V11 以降。

  • Oracle 12.1 – バージョン 12.1.0.2.V7 以降。

  • Oracle 12.2 – すべてのバージョン

  • Oracle 18.0 – すべてのバージョン

  • Oracle 19.0 – すべてのバージョン

Binary Reader を使用して CDC を設定するには

  1. for Oracle ソースデータベースにマスターユーザーとしてログインし、次のストアドプロシージャを実行してサーバーレベルのディレクトリを作成します。Amazon RDS

    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. Oracle ソースエンドポイントで、次の追加の接続属性を設定します。Amazon RDS

    • 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 の設定」を参照してください。

で CDC の Binary Reader でソースとして Amazon RDS Oracle Standby (リードレプリカ) を使用するAWS DMS

で CDC に Binary Reader を使用する場合の、ソースとして Amazon RDS for Oracle Standby を使用するための前提条件は次のとおりです。AWS DMS

  • Oracle マスターユーザーを使用して Binary Reader をセットアップします。

  • 現在、AWS DMS が Oracle Active Data Guard スタンバイの使用のみをサポートしていることを確認します。

その後、CDC に Binary Reader を使用する場合、以下の手順を使用して、ソースとして RDS for Oracle Standby を使用します。

CDC に Binary Reader を使用する場合に、RDS for Oracle Standby をソースとして設定するには

  1. マスターユーザーとして RDS for Oracle プライマリレプリカにサインインします。

  2. 次の「Amazon RDS ユーザーガイド」に記載されているようにストアドプロシージャを実行して、サーバーレベルのディレクトリを作成します。

    exec rdsadmin.rdsadmin_master_util.create_archivelog_dir; exec rdsadmin.rdsadmin_master_util.create_onlinelog_dir;
  3. ステップ 2 で作成したディレクトリを特定します。

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

    たとえば、前述のコードは、次のようなディレクトリのリストを表示します。

  4. 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 Standby に移植されます。

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

  7. マネジメントコンソールまたは AWS DMS (AWS Command Line Interface) を使用して、Oracle Standby のソースエンドポイントを作成します。AWS CLIエンドポイントの作成中に、以下の追加の接続属性を指定します。

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

Oracle を AWS DMS のソースとして使用する場合の制限

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

  • AWS DMS は、Oracle DB バージョン 12.1 以前の長いオブジェクト名 (30 バイト以上) をサポートしていません。ただし、AWS DMS では、バージョン 12.2 の長いオブジェクト名(最大 128 バイト)がサポートされています。

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

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

  • AWS DMS は、マルチテナントコンテナデータベース (CDB) をサポートしていません。

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

  • AWS DMS は、サポートされているすべての Oracle バージョン 11 以降の rename table table-name to new-table-name 構文をサポートしています。この構文は、Oracle バージョン 10 のソースデータベースではサポートされません。

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

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

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

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

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

  • AWS DMS は、ソースで 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 は、64 KB より長い LONG または LONG RAW 列のデータを 64 KB に切り捨てます。

  • AWS DMS は、名前にアポストロフィを含むテーブルをレプリケートしません。

  • AWS DMS は動的ビューからの CDC をサポートしていません。

  • AWS DMS Binary Reader を使用して REDO ログにアクセスする場合、AWS DMS では、オーバーフローセグメントを持つインデックス構成表の CDC はサポートされません。または、そのようなテーブルには、LogMiner の使用を検討することもできます。

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

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

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

    • AWS DMS は DDL ステートメント ALTER TABLE ADD column data_type DEFAULT default_value の結果をレプリケートしません。 をターゲットにレプリケートする代わりに、新しい列を default_value に設定します。NULL このような結果は、新しい列を追加した DDL ステートメントが前のタスクで実行された場合でも発生する可能性があります。

      新しい列で NULL が許容される場合、Oracle は DDL 自体を記録する前にすべてのテーブル行を更新します。その結果、AWS DMS は列の変更をキャプチャしますが、ターゲットは更新しません。新しい列を NULL に設定して、ターゲットテーブルにプライマリキーまたは一意のインデックスがない場合、その後の更新では「影響を受ける行は 0 です」というメッセージが表示されます。

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

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

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

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

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

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

  • AWS DMS では、Oracle Automatic Storage Management (ASM) を使用した Amazon RDS Oracle ソースへの接続はサポートされません。

  • AWS DMS では仮想列がサポートされていません。

  • AWS DMS では、ROWID データ型または ROWID 列に基づくマテリアライズドビューはサポートされていません。

  • AWS DMS はグローバル一時テーブルをロードまたはキャプチャしません。

  • レプリケーションを使用する S3 ターゲットの場合、ソース行の更新がすべての列の値をキャプチャできるように、各列でサプリメンタルロギングを有効にします。以下に例を示します。alter table yourtablename add supplemental log data (all) columns;

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

AWS DMS Oracle エンドポイントは、none および verify-ca SSL モードの SSL V3 をサポートします。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 証明書ファイルをダウンロードできます。このファイルのダウンロードの詳細については、https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html の「SSL/TLS を使用した DB インスタンスへの接続の暗号化Amazon RDS ユーザーガイド」を参照してください。

  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 に自己署名証明書を使用するには、以下の手順を実行します。

AWS DMS で Oracle SSL に自己署名証明書を使用するには

  1. 自己署名証明書で使用するディレクトリを作成します。

    mkdir SELF_SIGNED_CERT_DIRECTORY
  2. 前の手順で作成したディレクトリに移動します。

    cd SELF_SIGNED_CERT_DIRECTORY
  3. ルートキーを作成します。

    openssl genrsa -out self-rootCA.key 2048
  4. 前の手順で作成したルートキーを使用して、ルート証明書に自己署名します。

    openssl req -x509 -new -nodes -key self-rootCA.key -sha256 -days 1024 -out self-rootCA.pem
  5. Oracle データベース用の Oracle ウォレットディレクトリを作成します。

    mkdir $ORACLE_HOME/self_signed_ssl_wallet
  6. 新しい Oracle ウォレットを作成します。

    orapki wallet create -wallet $ORACLE_HOME/self_signed_ssl_wallet -pwd password -auto_login_local
  7. Oracle ウォレットにルート証明書を追加します。

    orapki wallet add -wallet $ORACLE_HOME/self_signed_ssl_wallet -trusted_cert -cert self-rootCA.pem -pwd password
  8. Oracle ウォレットの内容のリストを表示します。リストにはルート証明書が含まれます。

    orapki wallet display -wallet $ORACLE_HOME/self_signed_ssl_wallet
  9. ORAPKI ユーティリティを使用して証明書署名リクエスト (CSR) を生成します。

    orapki wallet add -wallet $ORACLE_HOME/self_signed_ssl_wallet -dn "CN=dms" -keysize 2048 -sign_alg sha256 -pwd password
  10. 次のコマンドを実行します。

    openssl pkcs12 -in $ORACLE_HOME/self_signed_ssl_wallet/ewallet.p12 -nodes -out nonoracle_wallet.pem
  11. 共通名として「dms」を指定します。

    openssl req -new -key nonoracle_wallet.pem -out self-signed-oracle.csr
  12. 証明書の署名を取得します。

    openssl req -noout -text -in self-signed-oracle.csr | grep -i signature
  13. ステップ 12 の出力が sha1WithRSAEncryption または sha256WithRSAEncryption の場合は、次のコードを実行します。

    openssl x509 -req -in self-signed-oracle.csr -CA self-rootCA.pem -CAkey self-rootCA.key -CAcreateserial -out self-signed-oracle.crt -days 365 -sha256
  14. ステップ 12 が md5WithRSAEncryption の場合は、以下のコードを実行します。

    openssl x509 -req -in self-signed-oracle.csr -CA self-rootCA.pem -CAkey self-rootCA.key -CAcreateserial -out self-signed-oracle.crt -days 365 -sha256
  15. 証明書をウォレットに追加します。

    orapki wallet add -wallet $ORACLE_HOME/self_signed_ssl_wallet -user_cert -cert self-signed-oracle.crt -pwd password
  16. sqlnet.ora ファイル ($ORACLE_HOME/network/admin/sqlnet.ora) を設定します。

    WALLET_LOCATION = (SOURCE = (METHOD = FILE) (METHOD_DATA = (DIRECTORY = ORACLE_HOME/self_signed_ssl_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 = ORACLE_HOME/self_signed_ssl_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 SELF_SIGNED_CERT_DIRECTORY
  25. AWS DMS で使用される新しいクライアント Oracle ウォレットを作成します。

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

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

    orapki wallet display -wallet ./
  28. 作成した Oracle ウォレットを AWS DMS にアップロードします。

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

次の表に、Oracle ソースデータベースの操作時に AWS DMS がサポートする透過的データ暗号化 (TDE) 方法を示します。

REDO ログのアクセス方法 TDE テーブルスペース TDE 列
OracleLogMiner はい はい
Binary Reader はい はい (AWS DMS バージョン 3.x 以降)

バージョン 3.x では、AWS DMS は、Binary Reader を使用する際、列レベルとテーブルスペースレベルの両方で Oracle TDE をサポートします。で TDE 暗号化を使用するには、最初に TDE 暗号化キーと TDE パスワードが保存される Oracle ウォレットの場所を特定します。AWS DMS次に、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) です。の値を取得した場合は、ステップ 3 に進むことができます。MKEYIDそれ以外の場合は、ステップ 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 ソースの [Password] 値の一部として、コンソールのこのキーに関連付けられた 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 暗号化キー名が含まれます。新しい値を指定してタスクを再起動するには、前述の手順を使用します。

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

次の表に、Oracle ソースデータベースの操作時に AWS DMS がサポートする圧縮方法を示します。表に示すように、圧縮のサポートは、Oracle データベースのバージョンと、Oracle LogMiner を使用して REDO ログにアクセスするように DMS が設定されているかどうかによって異なります。

バージョン 基本 OLTP

HCC (Oracle 11g R2 以降より)

その他
Oracle 10 いいえ 該当なし 該当なし いいえ
Oracle 11 以降 – Oracle LogMiner はい はい はい はい – Oracle LogMiner でサポートされている任意の圧縮方法。
Oracle 11 以降 – Binary Reader はい はい はい – 詳細については、次の注記を参照してください。 はい
注記

Oracle ソースエンドポイントが Binary Reader を使用するように設定されている場合、HCC 圧縮方法の Query Low レベルは、全ロードタスクに対してのみサポートされます。

Oracle を AWS DMS のソースとして使用するネストされたテーブルのレプリケート

バージョン 3.3.1 では、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;

AWS DMS のソースとして Oracle を使用する場合の追加の接続属性

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

次の表に、AWS DMS のソースとして Oracle データベースを設定するために使用できる追加の接続属性を示します。

名前 説明

addSupplementalLogging

Oracle データベースにテーブルレベルのサプリメンタルロギングをセットアップするには、この属性を設定します。この属性により、移行タスクで選択されたすべてのテーブルで PRIMARY KEY サプリメンタルロギングが有効になります。

デフォルト値: N

有効な値: Y/N

例: addSupplementalLogging=Y;

注記

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

additionalArchivedLogDestId

プライマリスタンバイセットアップでこの属性を archivedLogDestId に設定します。この属性は、スイッチオーバーで役立ちます。この場合、AWS DMS は変更を読み取るためにアーカイブ REDO ログを取得する取得元を知る必要があります。これは、切り替え後、前のプライマリがスタンバイインスタンスになったためです。

は、Oracle の AWS DMS オプションを使用してデータベースを開くことができますが、必要でない限り RESETLOGS は使用しないでください。RESETLOGSの詳細については、RESETLOGSOracle® Database Backup and Recovery ユーザーガイドの「RMAN データ修復の概念」を参照してください。

allowSelectNestedTables

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

デフォルト値: false

有効な値: true/false

例: allowSelectNestedTables=true;

useLogminerReader

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

デフォルト値: Y

有効な値: Y/N

例: useLogminerReader=N;useBfile=Y;

useBfile

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

デフォルト値: N

有効な値: Y/N

例: useLogminerReader=N;useBfile=Y;

parallelASMReadThreads

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

デフォルト値: 2

有効な値: 2~8 の整数

例: parallelASMReadThreads=6;readAheadBlocks=150000;

readAheadBlocks

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

デフォルト値: 1,000

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

例: parallelASMReadThreads=6;readAheadBlocks=150000;

accessAlternateDirectly

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

デフォルト値: true

有効な値: true/false

例: useLogminerReader=N;useBfile=Y;accessAlternateDirectly=false;

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

デフォルト値: false

有効な値: true/false

例: useLogminerReader=N;useBfile=Y;accessAlternateDirectly=false; useAlternateFolderForOnline=true;

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

デフォルト値: なし

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

例: useLogminerReader=N;useBfile=Y;accessAlternateDirectly=false; useAlternateFolderForOnline=true;oraclePathPrefix=/rdsdbdata/db/ORCL_A/;

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

デフォルト値: なし

有効な値: /rdsdbdata/log/

例: useLogminerReader=N;useBfile=Y;accessAlternateDirectly=false; useAlternateFolderForOnline=true;oraclePathPrefix=/rdsdbdata/db/ORCL_A/; usePathPrefix=/rdsdbdata/log/;

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

デフォルト値: false

有効な値: true/false

例: useLogminerReader=N;useBfile=Y;accessAlternateDirectly=false; useAlternateFolderForOnline=true;oraclePathPrefix=/rdsdbdata/db/ORCL_A/; usePathPrefix=/rdsdbdata/log/;replacePathPrefix=true;

retryInterval

システムがクエリを再送するまで待機する時間の秒数を指定します。

デフォルト値: 5

有効な値: 1 で始まる数値

例: retryInterval=6;

archivedLogDestId

アーカイブされた REDO ログの宛先を指定します。値は、v$archived_log テーブル内の DEST_ID 値と同じにする必要があります。複数のログ宛先 (DEST_ID) を使用する場合は、アーカイブされた REDO ログの場所の識別子を指定することをお勧めします。これにより、最初から適切なログにアクセスされるため、パフォーマンスが向上します。

デフォルト値: 0

有効な値: 数値

例: archivedLogDestId=1;

archivedLogsOnly

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

デフォルト値: N

有効な値: Y/N

例: archivedLogsOnly=Y;

numberDataTypeScale

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

デフォルト値: 10

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

例: numberDataTypeScale=12

afterConnectScript

AWS DMS がエンドポイントに接続した直後に実行するスクリプトを指定します。

有効な値: セミコロンで区切った SQL ステートメント。すべての SQL ステートメントがサポートされているわけではありません。

例: afterConnectScript=ALTER SESSION SET CURRENT_SCHEMA = system;

failTasksOnLobTruncation

true に設定されると、LOB 列の実際のサイズが指定された LobMaxSize よりも大きい場合、この属性によりタスクは失敗します。

タスクが制限付き LOB モードに設定され、このオプションが true に設定されている場合、LOB データを切り捨てるのではなくタスクが失敗します。

デフォルト値: false

有効な値: ブール値

例: failTasksOnLobTruncation=true;

readTableSpaceName

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

デフォルト値: false

有効な値: ブール値

例: readTableSpaceName=true;

standbyDelayTime

この属性を使用して、スタンバイ同期の遅延時間を分単位で指定します。

では、継続的な変更をレプリケートするためのソースとして Active Data Guard スタンバイインスタンスを使用する Oracle CDC タスクを作成できます。AWS DMSこれにより、運用中のアクティブなデータベースに接続する必要がなくなります。

デフォルト値: 0

有効な値: 数値

例: standbyDelayTime=1;

securityDbEncryptionName

Oracle ソースデータベースの列およびテーブルスペースの透過的データ暗号化 (TDE) に使用されるキーの名前を指定します。Oracle ソースエンドポイントでのこの属性とそれに関連付けられたパスワードの設定の詳細については、「AWS DMS のソースとして Oracle を使用するためにサポートされている暗号化方法」を参照してください。

デフォルト値: ""

有効な値: 文字列

securityDbEncryptionName=ORACLE.SECURITY.DB.ENCRYPTION.Adg8m2dhkU/0v/m5QUaaNJEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

spatialSdo2GeoJsonFunctionName

ターゲットに移行する Oracle バージョン 12.1 以前のソースの場合、この属性を使用して SDO_GEOMETRY 形式を GEOJSON 形式に変換します。PostgreSQL

デフォルトでは、AWS DMS は存在し、AWS DMS ユーザーにアクセスできる必要がある SDO2GEOJSON カスタム関数 を呼び出します。または、SDOGEOJSON のオペレーションを模倣する独自のカスタム関数を作成し、代わりにそれを呼び出すように spatialSdo2GeoJsonFunctionName を設定することもできます。

デフォルト値: SDO2GEOJSON

有効な値: 文字列

例: spatialSdo2GeoJsonFunctionName=myCustomSDO2GEOJSONFunction;

enableHomogenousTablespace

同種のテーブルスペースのレプリケーションを有効にし、ターゲットの同じテーブルスペースで既存のテーブルまたはインデックスを作成するには、この属性を設定します。

デフォルト値: false

有効な値: true/false

例: enableHomogenousTablespace=true

Oracle のソースデータ型

AWS DMS の Oracle エンドポイントでは、Oracle のほとんどのデータ型がサポートされます。次の表に、AWS DMS を使用する場合にサポートされる Oracle のソースデータ型と、AWS DMS のデータ型とのデフォルトマッピングを示します。

ターゲットにマッピングされるデータ型を表示する方法については、使用しているターゲットエンドポイントのセクションを参照してください。

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 未満の場合、REAL8 を使用します。

Oracle のソースデータベース設定の「Expose number as」プロパティに従った NUMBER。

スケールが 0 の場合

  • 精度が 0 の場合、REAL8 を使用します。

  • 精度が 2 以上の場合、INT1 を使用します。

  • 精度が 2 より大きく 4 以下の場合、INT2 を使用します。

  • 精度が 4 より大きく 9 以下の場合、INT4 を使用します。

  • 精度が 9 より大きい場合、NUMERIC を使用します。

  • 精度がスケール以上の場合、NUMERIC を使用します。

他のいずれの場合も、REAL8 を使用します。

DATE

DATETIME

INTERVAL_YEAR TO MONTH

STRING (間隔 year_to_month を指定)

INTERVAL_DAY TO SECOND

STRING (間隔 day_to_second を指定)

TIME

DATETIME

TIMESTAMP

DATETIME

TIMESTAMP WITH TIME ZONE

STRING (timestamp_with_timezone を指定)

TIMESTAMP WITH LOCAL TIME ZONE

STRING (timestamp_with_local_ timezone を指定)

CHAR

STRING

VARCHAR2

STRING

CLOB

バージョン 3.3.3 以降、宣言されたサイズが 4,000 バイトを超える Oracle AWS DMS データ型は、VARCHAR2 データ型にマッピングされます。CLOB詳細については、「Oracle 拡張データ型の移行」を参照してください。

NCHAR

WSTRING

NVARCHAR2

WSTRING

CLOB

バージョン 3.3.3 以降、宣言されたサイズが 4,000 バイトを超える Oracle AWS DMS データ型は、NVARCHAR2 データ型にマッピングされます。CLOB詳細については、「Oracle 拡張データ型の移行」を参照してください。

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 データ型は、最適化バッチ適用モード (TurboStream CDC モード) ではサポートされません。でこのデータ型を使用するには、特定のタスク用に AWS DMS の使用を有効にする必要があります。LOBsCDC 中、AWS DMS はプライマリキーを持つテーブルでのみ LOB データ型をサポートします。

LONG RAW

BLOB

LONG RAW データ型は、最適化バッチ適用モード (TurboStream CDC モード) ではサポートされません。でこのデータ型を使用するには、特定のタスク用に AWS DMS の使用を有効にする必要があります。LOBsCDC 中、AWS DMS はプライマリキーを持つテーブルでのみ LOB データ型をサポートします。

XMLTYPE

CLOB

XMLTYPE データ型のサポートには、(Oracle Instant Client ではなく) フル Oracle クライアントが必要です。ターゲット列が CLOB の場合、フル LOB モードと制限付き LOB モードの両方がサポートされます (ターゲットによって異なります)。

SDO_GEOMETRY

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

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

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

  • BFILE

  • ROWID

  • REF

  • UROWID

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

  • ANYDATA

注記

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

Oracle 拡張データ型の移行

3.3.3 のリリースから、ソースとターゲットの両方の Oracle 拡張データ型がサポートされています。AWS DMS宣言されたサイズが 4,000 バイトを超える Oracle VARCHAR2 または NVARCHAR2 データ型は、拡張データ型です。

Oracle 初期化パラメータ MAX_STRING_SIZE は、Oracle データベース内の文字列の最大サイズを制御します。MAX_STRING_SIZE = EXTENDED の場合、AWS DMS は移行中に Oracle の VARCHAR2 および NVARCHAR2 データ型を CLOB データ型にマッピングします。同様に、宣言されたサイズが 4,000 バイトを超える Oracle VARCHAR2 または NVARCHAR2 データ型は、移行中に AWS DMS CLOB データ型にマッピングされます。

Oracle 空間データ型の移行

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

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

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

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

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

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