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 Transparent Data Encryption (TDE) のデータベースへの書き込みでは暗号化キーまたはパスワードを必要としないため、AWS DMS は、Oracle TDE を使用したターゲットデータベースに保管中のデータの暗号化もサポートしています。

AWS DMS がターゲットとしてサポートする Oracle のバージョンについては、「のターゲット AWS DMS」を参照してください。

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

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

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 を設定すると、既存のテーブルやインデックスのテーブルスペースの割り当てを保持できます。詳細については、「Oracle をソースとして使用する場合のエンドポイント設定 AWS DMS」を参照してください。

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

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

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

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

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

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

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

  • 次の式を使用して、バッチ最適化の適用モードでサポートされるテーブルごとの列の合計数を表すことができます。

    2 * columns_in_original_table + columns_in_primary_key <= 999

    例えば、元のテーブルに 25 列があり、そのプライマリキーが 5 列で構成されている場合、列の合計数は 55 になります。テーブルがサポートされている列数を超える場合、すべての変更が個別処理モードで適用されます。

  • AWS DMS は、Oracle Cloud Infrastructure (OCI) 上の Autonomous DB をサポートしていません。

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

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

  • SELECT ANY TRANSACTION

  • SELECT on V$NLS_PARAMETERS

  • SELECT on V$TIMEZONE_NAMES

  • SELECT on ALL_INDEXES

  • SELECT on ALL_OBJECTS

  • SELECT on DBA_OBJECTS

  • SELECT on ALL_TABLES

  • SELECT on ALL_USERS

  • SELECT on ALL_CATALOG

  • SELECT on ALL_CONSTRAINTS

  • SELECT on ALL_CONS_COLUMNS

  • SELECT on ALL_TAB_COLS

  • SELECT on ALL_IND_COLUMNS

  • 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

  • DELETE ANY TABLE

次の要件については、次のとおりの追加の権限を付与します。

  • 特定のテーブルリストを使用するには、すべてのレプリケート済みテーブルに対する SELECT 権限と ALTER 権限を付与します。

  • ユーザーがデフォルトのテーブルスペースにテーブルを作成できるようにするには、 GRANT UNLIMITED TABLESPACE 権限を付与します。

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

  • ダイレクトパス (フルロードのデフォルト) を使用している場合は、GRANT LOCK ANY TABLE to dms_user;

  • 「DROP and CREATE」のテーブル作成モードの使用時にスキーマが異なる場合、GRANT CREATE ANY INDEX to dms_user;

  • フルロードのシナリオによっては、ターゲット テーブルのスキーマが 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 テーブルに対する読み取り権限を付与する必要があります。

  • SELECT on DBA_USERS

  • SELECT on DBA_TAB_PRIVS

  • SELECT on DBA_OBJECTS

  • SELECT on DBA_SYNONYMS

  • SELECT on DBA_SEQUENCES

  • SELECT on DBA_TYPES

  • SELECT on DBA_INDEXES

  • SELECT on DBA_TABLES

  • SELECT on DBA_TRIGGERS

  • SELECT on SYS.DBA_REGISTRY

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

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

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

AWS DMS のターゲットとして Oracle を使用する場合のエンドポイントの設定

エンドポイントの設定を使用して、追加の接続属性の使用する場合と同様に、ターゲットの Oracle のデータベースを設定できます。ターゲットエンドポイントを作成する際に、AWS DMS コンソールを使用するか、AWS CLI--oracle-settings '{"EndpointSetting": "value", ...}' の JSON 構文を指定して create-endpoint コマンドを使用して設定を指定します。

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

名前 説明

EscapeCharacter

この属性はエスケープ文字に設定する。このエスケープ文字を使うと、単一のワイルドカード文字をテーブルマッピング式で通常の文字のように動作させることができる。詳細については、「テーブルマッピングのワイルドカード」を参照してください。

デフォルト値: Null

有効値: ワイルドカード文字以外の任意の文字

例: --oracle-settings '{"EscapeCharacter": "#"}'

UseDirectPathFullLoad

Y に設定すると、AWS DMS はダイレクトパスのフルロードを使用する。Oracle Call Interface (OCI) でダイレクトパスプロトコルを有効にするには、この値を指定する。この OCI プロトコルを使用すると、フルロード中に Oracle ターゲットテーブルを一括ロードできる。

デフォルト値: true

有効値: true/false

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

DirectPathParallelLoad

true に設定した場合、この属性は、UseDirectPathFullLoadY に設定されている場合に並列ロードを指定する。この属性は、AWS DMS 並列ロード機能を使用する場合にのみ適用される。詳細については、「テーブルとコレクション設定のルールとオペレーション」の parallel-load オペレーションの説明を参照。

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

デフォルト値: false

有効値: true/false

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

DirectPathNoLog

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

デフォルト値: false

有効値: true/false

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

CharLengthSemantics

文字の列の長さの単位をバイトにするか文字にするかを指定する。文字の列の長さを文字単位で表示するには、この属性を CHAR に設定する。それ以外の場合、文字の列の長さはバイト単位となる。

デフォルト値: CHAR に設定されていない

有効値: CHAR

例: --oracle-settings '{"CharLengthSemantics": "CHAR"}'

AlwaysReplaceEmptyString

AWS DMS は、Oracle ターゲットに移行する際に空の文字列をレプリケートするための余分のスペースを追加する。通常、Oracle には空の文字列の表記法はない。varchar2 に空の文字列を挿入すると、空の文字列を NULL としてロードすることになる。Oracle にデータを NULL として挿入する場合は、この属性を FALSE に設定する。

デフォルト値: true

有効値: true/false

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

ターゲットの 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 With interval_year_to_month 指定の場合: INTERVAL YEAR TO MONTH

interval_day_to_second 指定の場合: INTERVAL DAY TO SECOND

length > 4000 の場合: CLOB

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

UINT1

NUMBER (3)

UINT2

NUMBER (5)

UINT4

NUMBER (10)

UINT8

NUMBER (19)

WSTRING

length > 2000 の場合: NCLOB

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

BLOB

BLOB

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

CLOB

CLOB

AWS DMS でこのデータ型を使用するには、特定のタスクで CLOB の使用を有効にする必要がある。CLOB データ型は、変更データキャプチャ (CDC) 中はプライマリキーがあるテーブルでのみサポートされる。

STRING

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

NCLOB

NCLOB

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

WSTRING

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

XMLTYPE

XMLTYPE ターゲットデータ型は、Oracle 間のレプリケーションタスクでのみ対処される。

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