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

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

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

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

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

Oracle をターゲットとする場合の制限事項 AWS Database Migration Service

データ移行のターゲットとして 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 になります。テーブルがサポートされている列数を超えると、 one-by-one すべての変更がモードで適用されます。

  • AWS DMS オラクル・クラウド・インフラストラクチャ (OCI) 上のAutonomous DBをサポートしていません。

ターゲットとして 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 権限を付与します。

  • 直接パス (全ロードのデフォルト) 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 テーブルに対する読み取り権限が付与されている必要があります。

  • 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

  • SELECT on SYS.DBA_REGISTRY

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

移行前評価

Oracle の評価に記載されている移行前評価を Oracle を対象として使用するには、dms_userターゲットデータベースのデータベースユーザーに次の権限を追加する必要があります。

GRANT SELECT ON V_$INSTANCE TO dms_user;

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

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

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

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

次の表は、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 ロード機能を使用する場合のみ適用されます。詳細については、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 のターゲットデータ型

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

AWS DMS データ型

Oracle のデータ型

BOOLEAN

NUMBER (1)

BYTES

RAW (長さ)

DATE

DATETIME

TIME

タイムスタンプ (0)

DATETIME

タイムスタンプ (スケール)

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_with_timezone を指定: タイムスタンプ時間帯あり

timestamp_with_local_timezone を指定: タイムスタンプ 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

宣言されたサイズが 4000 バイトを超えるソースの Oracle VARCHAR2 データ型は、 AWS DMS CLOB を介して Oracle ターゲットの文字列にマップされます。

NCLOB

NCLOB

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

WSTRING

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

XMLTYPE

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

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