AWS Database Migration Service のターゲットとしての Oracle データベースの使用 - AWS Database Migration Service

AWS Database Migration Service のターゲットとしての Oracle データベースの使用

AWS DMS を使用して別の Oracle データベースまたはサポートされている他のいずれかのデータベースから、Oracle データベースターゲットにデータを移行できます。Secure Sockets Layer (SSL) を使用して、Oracle エンドポイントとレプリケーションインスタンスとの接続を暗号化できます。Oracle エンドポイントでの SSL を使用する方法の詳細については、「AWS Database Migration Service での SSL の使用」を参照してください。Oracle TDE がデータベースに書き込むために暗号化キーまたはパスワードを必要としないため、AWS DMS はターゲットデータベースに保存されているデータを暗号化するための Oracle 透過的データ暗号化 (TDE) の使用もサポートしています。

AWS DMS​ では、オンプレミスおよび EC2 インスタンスにおいて、Enterprise、Standard、Standard One、および Standard Two エディションの Oracle バージョン 10g、11g、12c、18c、および 19c がターゲットとしてサポートされています。AWS DMS​ では、Amazon RDS インスタンスデータベース用の Enterprise、Standard、Standard One、および Standard Two エディションの Oracle バージョン 11g (バージョン 11.2.0.3.v1 以降) 12c、18c、および 19c がサポートされています。

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

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

Oracle をターゲットとして使用するときは、ターゲット接続に使用されるスキーマまたはユーザーにデータを移行することを前提とします。別のスキーマにデータを移行する場合は、スキーマ変換を使用します。たとえば、ターゲットエンドポイントがユーザー RDSMASTER に接続しており、ユーザー PERFDATA から PERFDATA に移行したいとします。この場合、次のように変換を作成します。

{ "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "rename", "rule-target": "schema", "object-locator": { "schema-name": "PERFDATA" }, "value": "PERFDATA" }

また、ソースのエンドポイントも Oracle である場合、すべての既存のテーブルあるいはインデックステーブルスペースの割り当てはターゲットで保持されます。ソースのエンドポイントが Oracle 以外の場合には、デフォルトのテーブルおよびインデックステーブルスペースがターゲットで使用されます。テーブルとインデックスを別のテーブルとインデックスの名前空間に移行する場合は、テーブルスペース変換を使用してこれを実行します。たとえば、Oracle ソース内の一部のテーブルスペースに割り当てられた INVENTORY スキーマに一連のテーブルがあるとします。移行については、このすべてのテーブルをターゲットの単一の INVENTORYSPACE テーブルスペースに割り当てるとします。この場合、次のように変換を作成します。

{ "rule-type": "transformation", "rule-id": "3", "rule-name": "3", "rule-action": "rename", "rule-target": "table-tablespace", "object-locator": { "schema-name": "INVENTORY", "table-name": "%", "table-tablespace-name": "%" }, "value": "INVENTORYSPACE" }

変換の詳細については、「 JSON を使用するテーブルマッピングによりテーブル選択および変換を指定する」を参照してください。

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

AWS Database Migration Service のターゲットとして Oracle を使用する場合の制限

データ移行のターゲットとして Oracle を使用する場合の制限は、以下のとおりです。

  • AWS DMS は、ターゲット Oracle データベースにスキーマを作成しません。必要なすべてのスキーマをターゲット Oracle データベースで作成する必要があります。Oracle ターゲットのスキーマ名がすでに存在している必要があります。ソーススキーマのテーブルは、AWS DMS がターゲットインスタンスへの接続に使用するユーザーまたはスキーマにインポートされます。複数のスキーマを移行するには、複数のレプリケーションタスクを作成します。

  • AWS DMS では、テーブルに INDEXTYPE CONTEXT を使用する場合に Use direct path full load オプションがサポートされていません。回避策として、配列ロードを使用できます。

  • バッチ最適化適用オプションでは、差分変更テーブルへのロードに直接パスが使用されるため、XML タイプはサポートされていません。回避策として、トランザクション適用モードを使用できます。

  • ソースデータベースから移行された空の文字列は、Oracle ターゲットによって異なる方法で処理できます (たとえば、1 つのスペース文字列に変換されます)。これにより、AWS DMS 検証で不一致が報告される可能性があります。

ターゲットとして Oracle を使用する場合に必要なユーザーアカウント権限

Oracle ターゲットを AWS Database Migration Service タスクで使用するには、Oracle データベースに次の権限を付与します。AWS DMS への Oracle データベース定義で指定されたユーザーアカウントにこの権限を付与します。

  • SELECT ANY TRANSACTION

  • V$NLS_PARAMETERS での SELECT

  • V$TIMEZONE_NAMES での SELECT

  • ALL_INDEXES での SELECT

  • ALL_OBJECTS での SELECT

  • DBA_OBJECTS での SELECT

  • ALL_TABLES での SELECT

  • ALL_USERS での SELECT

  • ALL_CATALOG での SELECT

  • ALL_CONSTRAINTS での SELECT

  • ALL_CONS_COLUMNS での SELECT

  • ALL_TAB_COLS での SELECT

  • ALL_IND_COLUMNS での SELECT

  • DROP ANY TABLE

  • SELECT ANY TABLE

  • INSERT ANY TABLE

  • UPDATE ANY TABLE

  • CREATE ANY VIEW

  • DROP ANY VIEW

  • CREATE ANY PROCEDURE

  • ALTER ANY PROCEDURE

  • DROP ANY PROCEDURE

  • CREATE ANY SEQUENCE

  • ALTER ANY SEQUENCE

  • DROP ANY SEQUENCE

以下に指定された要件を満たすために、追加で権限を付与します。

  • 特定のテーブルリストを使用するには、レプリケートされたすべてのテーブルに SELECT を付与し、ALTER も付与します。

  • ユーザーがデフォルトテーブルスペースにテーブルを作成することを許可するには、GRANT UNLIMITED TABLESPACE 権限を付与します。

  • ログオンのために、CREATE SESSION 権限を付与します。

  • 直接パスを使用している場合、LOCK ANY TABLE 権限を付与します。

  • 全ロード設定で [DROP and CREATE table] オプションまたは [TRUNCATE before loading] オプションが選択されており、ターゲットテーブルスキーマが AWS DMS ユーザーのものと異なる場合、DROP ANY TABLE 権限を付与します。

  • ターゲットテーブルスキーマが AWS DMS ユーザーのものと異なる場合に変更を変更テーブルまたは監査テーブルに保存するには、CREATE ANY TABLE 権限と CREATE ANY INDEX 権限を付与します。

ターゲットデータベース上の AWS Database Migration Service に必要な読み取り権限

AWS DMS ユーザーアカウントには、以下の DBA テーブルの読み取り権限を付与する必要があります。

  • DBA_USERS での SELECT

  • DBA_TAB_PRIVS での SELECT

  • DBA_OBJECTS での SELECT

  • DBA_SYNONYMS での SELECT

  • DBA_SEQUENCES での SELECT

  • DBA_TYPES での SELECT

  • DBA_INDEXES での SELECT

  • DBA_TABLES での SELECT

  • DBA_TRIGGERS での SELECT

必要な権限のいずれかを V$xxx に付与できない場合は、V_$xxx に付与します。

AWS Database Migration Service のターゲットとしての Oracle データベースの設定

データ移行ターゲットとして Oracle データベースを使用するには、AWS DMS に Oracle ユーザーアカウントを提供する必要があります。ユーザーアカウントには、「ターゲットとして Oracle を使用する場合に必要なユーザーアカウント権限」で指定されているように、Oracle データベースでの読み取り/書き込み権限が必要です。

AWS DMS のターゲットとして Oracle を使用する場合の追加の接続属性

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

次の表に、Oracle をターゲットとして使用するときに利用できる追加の接続属性を示します。

名前 説明

useDirectPathFullLoad

直接パスの完全ロードを使用します。これを指定して Oracle テーブルを一括ロードするための Oracle Call Interface (OCI) 直接パスプロトコルを有効あるいは無効にします。

デフォルト値: Y

有効な値: Y/N

例: useDirectPathFullLoad=N

charLengthSemantics

列の長さのセマンティクスは、列の長さがバイト単位であるか文字数単位であるかを指定します。この値は CHAR に設定します。

例: charLengthSemantics=CHAR

Oracle のターゲットデータ型

AWS DMS で使用されるターゲット Oracle データベースでは、Oracle のほとんどのデータ型がサポートされます。以下の表に、AWS DMS を使用する場合にサポートされる Oracle のターゲットデータ型と、AWS DMS のデータ型からのデフォルトマッピングを示します。ソースからマッピングされるデータ型を表示する方法の詳細については、使用しているソースのセクションを参照してください。

AWS DMS データ型

Oracle のデータ型

BOOLEAN

NUMBER (1)

BYTES

RAW (長さ)

DATE

DATETIME

TIME

TIMESTAMP (0)

DATETIME

TIMESTAMP (スケール)

INT1

NUMBER (3)

INT2

NUMBER (5)

INT4

NUMBER (10)

INT8

NUMBER (19)

NUMERIC

NUMBER (p,s)

REAL4

FLOAT

REAL8

FLOAT

STRING

date を指定: DATE

time を指定: TIMESTAMP

timestamp を指定: TIMESTAMP

timestamp_with_timezone を指定: TIMESTAMP WITH TIMEZONE

timestamp_with_local_timezone を指定: TIMESTAMP WITH LOCAL TIMEZONE interval_year_to_month を指定: INTERVAL YEAR TO MONTH

interval_day_to_second を指定: INTERVAL DAY TO SECOND

長さ > 4000 の場合: CLOB

他のすべての場合: VARCHAR2 (長さ)

UINT1

NUMBER (3)

UINT2

NUMBER (5)

UINT4

NUMBER (10)

UINT8

NUMBER (19)

WSTRING

長さ > 2000 の場合: NCLOB

他のすべての場合: NVARCHAR2 (長さ)

BLOB

BLOB

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

CLOB

CLOB

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

NCLOB

NCLOB

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

XMLTYPE

XMLTYPE ターゲットデータ型は、Oracle 間レプリケーションタスクにのみ関連しています。

ソースデータベースが Oracle の場合、ソースデータ型はそのままの状態で Oracle ターゲットにレプリケートされます。たとえば、ソースにおける XMLTYPE データ型は、ターゲットでは XMLTYPE データ型として作成されます。