

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

# のターゲットとしての Oracle データベースの使用 AWS Database Migration Service
<a name="CHAP_Target.Oracle"></a>

別の Oracle データベースまたはサポートされている他のデータベースのいずれかから AWS DMS、 を使用して Oracle データベースターゲットにデータを移行できます。Secure Sockets Layer (SSL) を使用して、Oracle エンドポイントとレプリケーションインスタンスとの接続を暗号化できます。Oracle エンドポイントで SSL を使用する方法の詳細については、「」を参照してください[での SSL の使用 AWS Database Migration Service](CHAP_Security.SSL.md)。また、Oracle TDE はデータベースへの書き込みに暗号化キーまたはパスワードを必要としないため、ターゲットデータベース内の保管中のデータを暗号化するための Oracle 透過的データ暗号化 (TDE) の使用 AWS DMS もサポートしています。

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

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 を使用するテーブル選択および変換を指定する](CHAP_Tasks.CustomizingTasks.TableMapping.SelectionTransformation.md)」をご参照ください。

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

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

**Topics**
+ [のターゲットとしての Oracle の制限 AWS Database Migration Service](#CHAP_Target.Oracle.Limitations)
+ [ターゲットとして Oracle を使用する場合に必要なユーザーアカウント権限](#CHAP_Target.Oracle.Privileges)
+ [のターゲットとしての Oracle データベースの設定 AWS Database Migration Service](#CHAP_Target.Oracle.Configuration)
+ [のターゲットとして Oracle を使用する場合のエンドポイント設定 AWS DMS](#CHAP_Target.Oracle.ConnectionAttrib)
+ [Oracle のターゲットデータ型](#CHAP_Target.Oracle.DataTypes)

## のターゲットとしての Oracle の制限 AWS Database Migration Service
<a name="CHAP_Target.Oracle.Limitations"></a>

データ移行のターゲットとして 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 unreasonable conversion requested」というエラーで失敗します。この問題を解決するには、`BatchApplyEnabled` タスク設定を `true` に設定してバッチ適用機能を有効にする必要があります。バッチ適用によりステートメント全体のサイズが小さくなり、32 KB の制限を回避できます。詳細については、「[ターゲットメタデータのタスク設定](CHAP_Tasks.CustomizingTasks.TaskSettings.TargetMetadata.md)」を参照してください。
+ AWS DMS LOB データの特別な処理要件により、LOB テーブルの直接パスのフルロードがエラー ORA-39777 で失敗することがあります。このエラーは、直接パスのロードプロセス中に発生し、LOB 列を含む移行タスクを中断する可能性があります。これを解決するには、ターゲットエンドポイントの `useDirectPathFullLoad` 設定を無効にし、ロードオペレーションを再試行します。

## ターゲットとして Oracle を使用する場合に必要なユーザーアカウント権限
<a name="CHAP_Target.Oracle.Privileges"></a>

 AWS Database Migration Service タスクで Oracle ターゲットを使用するには、Oracle データベースで次の権限を付与します。 AWS DMSへの Oracle データベース定義で指定されたユーザーアカウントにこの権限を付与します。
+ SELECT ANY TRANSACTION 
+ V\$1NLS\$1PARAMETERS での SELECT 
+ V\$1TIMEZONE\$1NAMES での SELECT 
+ ALL\$1INDEXES での SELECT 
+ ALL\$1OBJECTS での SELECT 
+ DBA\$1OBJECTS での SELECT
+ ALL\$1TABLES での SELECT 
+ ALL\$1USERS での SELECT 
+ ALL\$1CATALOG での SELECT 
+ ALL\$1CONSTRAINTS での SELECT 
+ ALL\$1CONS\$1COLUMNS での SELECT 
+ ALL\$1TAB\$1COLS での SELECT 
+ ALL\$1IND\$1COLUMNS での 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 を付与します。
+ 検証機能を使用して LOB 列を検証するには、`SYS.DBMS_CRYPTO` の EXECUTE 権限を DMS ユーザーに付与します。

### ターゲットデータベース AWS Database Migration Service の に必要な読み取り権限
<a name="CHAP_Target.Oracle.Privileges.Read"></a>

 AWS DMS ユーザーアカウントには、次の DBA テーブルの読み取りアクセス許可が付与されている必要があります。
+ DBA\$1USERS での SELECT
+ DBA\$1TAB\$1PRIVS での SELECT
+ DBA\$1OBJECTS での SELECT
+ DBA\$1SYNONYMS での SELECT
+ DBA\$1SEQUENCES での SELECT
+ DBA\$1TYPES での SELECT
+ DBA\$1INDEXES での SELECT
+ DBA\$1TABLES での SELECT
+ DBA\$1TRIGGERS での SELECT
+ SELECT on SYS.DBA\$1REGISTRY

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

### 移行前評価
<a name="CHAP_Target.Oracle.Privileges.Premigration"></a>

Oracle をターゲットとして [Oracle の評価](CHAP_Tasks.AssessmentReport.Oracle.md) に一覧表示されている移行前評価を使用するには、Oracle データベースターゲットエンドポイントのユーザーアカウントに次のアクセス許可を追加する必要があります。

```
GRANT SELECT ON V_$INSTANCE TO dms_user;
GRANT EXECUTE ON SYS.DBMS_XMLGEN TO dms_user;
```

## のターゲットとしての Oracle データベースの設定 AWS Database Migration Service
<a name="CHAP_Target.Oracle.Configuration"></a>

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

## のターゲットとして Oracle を使用する場合のエンドポイント設定 AWS DMS
<a name="CHAP_Target.Oracle.ConnectionAttrib"></a>

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

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

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/dms/latest/userguide/CHAP_Target.Oracle.html)

## Oracle のターゲットデータ型
<a name="CHAP_Target.Oracle.DataTypes"></a>

で使用されるターゲット 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\$1with\$1timezone を指定: タイムスタンプ時間帯あり  timestamp\$1with\$1local\$1timezone を指定: タイムスタンプ WITH LOCAL TIMEZONE interval\$1year\$1to\$1month を指定: INTERVAL YEAR TO MONTH  interval\$1day\$1to\$1second を指定: 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 データ型として作成されます。  | 