翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWS Database Migration Serviceのターゲットとしての Oracle データベースの使用
別の Oracle データベースまたはサポートされている他のデータベースのいずれかから AWS DMS、 を使用して Oracle データベースターゲットにデータを移行できます。Secure Sockets Layer (SSL) を使用して、Oracle エンドポイントとレプリケーションインスタンスとの接続を暗号化できます。Oracle エンドポイントで SSL を使用する方法の詳細については、「」を参照してくださいSSL で を使用する AWS Database Migration Service。Oracle TDE はデータベースへの書き込みに暗号化キーまたはパスワードを必要としないため、 はターゲットデータベースに保管中のデータを暗号化するための Oracle 透過的データ暗号化 (TDE) の使用 AWS DMS もサポートしています。
がターゲットとして 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 になります。テーブルがサポートされている列数を超える場合、すべての変更が個別処理モードで適用されます。
-
AWS DMS は、Oracle Cloud Infrastructure (OCI) 上の Autonomous DB をサポートしていません。
-
トランザクション適用モードでは、Oracle ターゲットは最大 32 KB のサイズの DML ステートメントを処理できます。この制限は多くのユースケースで十分ですが、32 KB を超える DML ステートメントは「ORA-01460: unimplemented or unforsonable conversion requested」というエラーで失敗します。この問題を解決するには、
BatchApplyEnabled
タスク設定を に設定してバッチ適用機能を有効にする必要がありますtrue
。バッチ適用によりステートメント全体のサイズが小さくなり、32 KB の制限を回避できます。詳細については、「ターゲットメタデータのタスク設定」を参照してください。
ターゲットとして Oracle を使用する場合に必要なユーザーアカウント権限
AWS Database Migration Service タスクで Oracle ターゲットを使用するには、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; GRANT EXECUTE ON SYS.DBMS_XMLGEN TO dms_user;
のターゲットとしての Oracle データベースの設定 AWS Database Migration Service
Oracle データベースをデータ移行ターゲットとして使用する前に、Oracle ユーザーアカウントを提供する必要があります AWS DMS。ユーザーアカウントには、ターゲットとして Oracle を使用する場合に必要なユーザーアカウント権限 で指定されているように、Oracle データベースでの読み取り/書き込み権限が必要です。
のターゲットとして Oracle を使用する場合のエンドポイント設定 AWS DMS
エンドポイントの設定を使用して、追加の接続属性の使用する場合と同様に、ターゲットの Oracle のデータベースを設定できます。 AWS DMS コンソールを使用するか、 の create-endpoint
コマンドを JSON --oracle-settings '{"
構文で使用してAWS CLI、ターゲットエンドポイントを作成するときに設定を指定します。EndpointSetting"
: "value"
, ...
}'
次の表は、Oracle をターゲットとして使用できるエンドポイント設定を説明しています。
名前 | 説明 |
---|---|
|
この属性はエスケープ文字に設定する。このエスケープ文字を使うと、単一のワイルドカード文字をテーブルマッピング式で通常の文字のように動作させることができる。詳細については、「テーブルマッピングのワイルドカード」を参照してください。 デフォルト値: Null 有効値: ワイルドカード文字以外の任意の文字 例: |
|
に設定すると デフォルト値: 有効な値: 例: |
|
この並列ロード設定を指定するとき、ターゲットテーブルに制約やインデックスを設定できないという制限があります。この制限の詳細については、「Enabling Constraints After a Parallel Direct Path Load デフォルト値: 有効な値: 例: |
|
この属性を デフォルト値: 有効な値: 例: |
|
文字の列の長さをバイト単位または文字単位で指定します。文字の列の長さが文字単位であることを示すには、この属性を デフォルト値: 有効な値: 例: |
|
AWS DMS は、Oracle ターゲットに移行するときに空の文字列をレプリケートするためのスペースを追加します。一般に、Oracle には空の文字列の表記はありません。varchar2 に空の文字列を挿入すると、空の文字列を NULL としてロードします。Oracle にデータを NULL として挿入する場合は、この属性を 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、特定のタスクで BLOBs の使用を有効にする必要があります。BLOB データ型は、プライマリキーを含むテーブルでのみサポートされます。 |
CLOB |
CLOB でこのデータ型を使用するには AWS DMS、特定のタスクで CLOBsの使用を有効にする必要があります。変更データキャプチャ (CDC) 中は、プライマリキーを含むテーブルでのみ CLOB データ型がサポートされます。 STRING 宣言されたサイズが 4000 バイトを超えるソース上の Oracle VARCHAR2 データ型は、 AWS DMS CLOB を介して Oracle ターゲット上の STRING にマッピングされます。 |
NCLOB |
NCLOB でこのデータ型を使用するには AWS DMS、特定のタスクで NCLOBsの使用を有効にする必要があります。CDC 中、プライマリキーを含むテーブルでのみ NCLOB データ型がサポートされます。 WSTRING 宣言されたサイズが 4000 バイトを超えるソース上の Oracle VARCHAR2 データ型は、NCLOB を介して Oracle ターゲット上の WSTRING AWS DMS にマッピングされます。 |
XMLTYPE |
XMLTYPE ターゲットデータ型は、Oracle 間レプリケーションタスクにのみ関連しています。 ソースデータベースが Oracle の場合、ソースデータ型はそのままの状態で Oracle ターゲットにレプリケートされます。たとえば、ソースにおける XMLTYPE データ型は、ターゲットでは XMLTYPE データ型として作成されます。 |