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 ユーザーから移行し、 PERFDATAPERFDATA。 この場合、次のようなトランスフォーメーションを作成します。

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

Oracle をターゲットとして使用する場合、AWS DMS はすべてのテーブルとインデックスを、ターゲットのデフォルトのテーブルとインデックステーブルスペースに移行します。テーブルとインデックスを別のテーブルとインデックスの名前空間に移行する場合は、テーブルスペース変換を使用してこれを実行します。たとえば、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 を使用するテーブルマッピングによりテーブル選択および変換を指定する」を参照してください。

Oracleがソースとターゲットの両方の場合、Oracleソースの追加接続属性を設定することで、既存のテーブルまたはインデックス テーブルスペースの割り当てを保持できます。 enableHomogenousTablespace=true。 詳細については、以下を参照してください。 AWS DMS のソースとして Oracle を使用する場合の追加の接続属性

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 権限を付与します。

  • 一部の全ロードシナリオでは、ターゲットテーブルスキーマが DMS ユーザーとは異なる場合、「DROP and CREATE table」または「TRUNCATE before loading」オプションを選択できます。この場合、DROP ANY TABLE を付与します。

  • ターゲットテーブルスキーマが 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 をターゲットとして使用するときに利用できる追加の接続属性を示します。

Name 説明:

useDirectPathFullLoad

Y に設定すると、AWS DMS により直接パスの完全ロードが使用されます。Oracle Call Interface (OCI) で直接パスプロトコルを使用可能にするには、この値を指定します。この OCI プロトコルを使用すると、完全ロード時に Oracle ターゲットテーブルを一括ロードできます。

デフォルト値: Y

有効な値 Y/N

例: useDirectPathFullLoad=N;

directPathParallelLoad

に設定した場合 true、この属性は、次の場合に並列負荷を指定します。 useDirectPathFullLoad は に設定されます Y。 この属性は、 AWS DMS 並列負荷機能。詳細については、「テーブル設定のルールとオペレーション」にある parallel-load オペレーションの説明を参照してください。

この並列ロード設定を指定するとき、ターゲットテーブルに制約やインデックスを設定できないという制限があります。この制限の詳細については、「Enabling Constraints After a Parallel Direct Path Load」を参照してください。制約またはインデックスが有効になっている場合、この属性を true に設定しても効果はありません。

デフォルト値: false

有効な値 true/false

例: directPathParallelLoad=true;

directPathNoLog

この属性を true に設定すると、データベースログに証跡を書き込まずにテーブルに直接書き込むことで、Oracle ターゲットデータベースのコミットレートを上げることができます。詳細については、「Direct-Load INSERT」を参照してください。この属性は、useDirectPathFullLoadY に設定した場合のみ適用されます。

デフォルト値: false

有効な値 true/false

例: directPathNoLog=true;

charLengthSemantics

文字の列の長さをバイト単位または文字単位で指定します。文字列の長さが文字であることを示すには、この属性を CHAR。 それ以外の場合は、文字列の長さはバイト単位です。

デフォルト値 に設定されていません CHAR

有効な値: 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

時間表示あり: TIMESTAMP

タイムスタンプ表示あり: TIMESTAMP

timestamp_with_timezone表示あり: 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 データ型がサポートされます。

STRING

AWS DMS 3.3.3 以降、宣言されたサイズが 4000 バイトを超えるソース上の Oracle VARCHAR2 データ型は、AWS DMS CLOB を介して Oracle ターゲット上の STRING にマッピングされます。

NCLOB

NCLOB

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

WSTRING

AWS DMS 3.3.3 以降、宣言されたサイズが 4000 バイトを超えるソース上の Oracle VARCHAR2 データ型は、AWS DMS NCLOB を介して Oracle ターゲット上の WSTRING にマッピングされます。

XMLTYPE

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

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