翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
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 '{"
の JSON 構文を指定して EndpointSetting"
:
"value"
, ...
}'create-endpoint
コマンドを使用して設定を指定します。
次の表は、Oracle をターゲットとして使用できるエンドポイント設定を説明しています。
名前 | 説明 |
---|---|
|
この属性はエスケープ文字に設定する。このエスケープ文字を使うと、単一のワイルドカード文字をテーブルマッピング式で通常の文字のように動作させることができる。詳細については、「テーブルマッピングのワイルドカード」を参照してください。 デフォルト値: Null 有効値: ワイルドカード文字以外の任意の文字 例: |
|
デフォルト値: 有効値: 例: |
|
ターゲットテーブルに制約やインデックスを含めることができない点が、この並列ロード設定を指定する場合の制限となる。この制限の詳細については、「Enabling Constraints After a Parallel Direct Path Load デフォルト値: 有効値: 例: |
|
この属性を デフォルト値: 有効値: 例: |
|
文字の列の長さの単位をバイトにするか文字にするかを指定する。文字の列の長さを文字単位で表示するには、この属性を デフォルト値: 有効値: 例: |
|
AWS DMS は、Oracle ターゲットに移行する際に空の文字列をレプリケートするための余分のスペースを追加する。通常、Oracle には空の文字列の表記法はない。varchar2 に空の文字列を挿入すると、空の文字列を NULL としてロードすることになる。Oracle にデータを NULL として挿入する場合は、この属性を 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 データ型として作成される。 |