プライマリ・コンテンツに移動

Oracle® Data Provider for .NET開発者ガイド ODAC 12.2c リリース1 (12.2.0.1) for Microsoft Windows E88311-03 |
| 目次 | 索引

前 | 次 |

# 一括コピー

ODP.NETは、アプリケーションが1つのデータベースの表から同一または異なるデータベースの表へ大量のデータを効率よくロードできる一括コピー機能を提供します。

ODP.NETの一括コピー機能では、ダイレクト・パス・ロード方法を使用します(これはOracle SQL*Loaderと類似していますが異なります)。ダイレクト・パス・ロードを使用すると、SQL `INSERT`文を使用する従来のロードより早く処理できます。従来のロードでは、Oracleのデータ・ブロックをフォーマットしてデータ・ブロックをデータ・ファイルに直接書き込みます。一括コピーにより、処理中のオーバーヘッドが大幅に削減されます。

ODP.NETの一括コピー機能では旧リリースのOracle Databaseにデータをロードできます。

注意:

ODP.NET管理対象ドライバは、一括コピーをサポートしていません。

ODP.NETの一括コピー機能は、次の項で説明するように、ダイレクト・パス・ロードと同一の基本制限および整合性制約に従います。

関連項目:

ODP.NETと相互運用可能なOracle Databaseのリリースについては、システム要件を参照してください

## 一括コピーでサポートされているデータ型

一括コピーは、Oracle Databaseの次のデータ型をサポートしています。

- `NUMBER`

- `BINARY_DOUBLE`

- `BINARY_FLOAT`

- `CHAR`

- `NCHAR`

- `VARCHAR2`

- `NVARCHAR2`

- `LONG`

- `CLOB`

- `BLOB`

- `DATE`

- `TIMESTAMP`

- `TIMESTAMPWITHTIMEZONE`

- `TIMESTAMPWITHLOCALTIMEZONE`

- `INTERVALYEARTOMONTH`

- `INTERVALDAYTOSECOND`

一括コピーでは上書きはサポートされていません。

## 単一パーティションのOracle一括コピーの制限

- パーティションを含む表には、表で定義済のグローバル索引を含めることはできません。

- パーティションがメンバーの表には、有効な参照制約およびチェック制約を含めることはできません。

- トリガーが使用禁止であること。

## Oracle一括コピーに影響する整合性制約

Oracle一括コピー中、次の場合にいくつかの整合性制約は自動的に有効または無効になります。

使用可能な制約

Oracle一括コピー中、次の制約はデフォルトで自動的に有効になります。

- `NOT` `NULL`

- `UNIQUE`

- `主キー制約```(NOT NULL列における一意制約)

`NOT` `NULL`制約は列配列の作成時にチェックされます。`NOT` `NULL`制約に違反する行はすべて拒否されます。

`UNIQUE`制約はロードの最後で索引が再構築されるときに検証されます。この索引は`UNIQUE`制約に違反すると、索引使用禁止状態のままになります。

使用禁止の制約

Oracle一括コピー中、次の制約はデフォルトで自動的に無効になります。

- `CHECK`制約

- 参照制約(`外部キー```)

`EVALUATE` `CHECK_CONSTRAINTS`句を指定する場合、`CHECK`制約は自動的には無効になりません。`CHECK`制約はダイレクト・パス・ロード中に評価され、`CHECK`制約に違反する行はすべて拒否されます。

## データベース挿入トリガー

ダイレクト・パス・ロードが始まると、表挿入トリガーも使用禁止になります。行のロードおよび索引の再作成が完了すると、使用禁止になっていたトリガーはすべて使用可能に戻されます。ログ・ファイルには、ロード時に使用禁止になっていたすべてのトリガーのリストが示されます。トリガーを使用可能に戻すときに1つでもエラーがあると、再使用できません。

整合性制約と異なり、挿入トリガーは、使用可能に戻っても表全体に対して再び適用されません。つまり、ダイレクト・パスでロードされた行に対しては、挿入トリガーは起動しません。ダイレクト・パスでロードした場合は、新しい行への挿入トリガーに相当する処理はすべて、アプリケーション側で実行する必要があります。

## フィールドのデフォルト値

データベースで定義されたデフォルト列の仕様はダイレクト・パス・ロードを使用できません。デフォルト値を設定するフィールドに対しては、`DEFAULTIF`句を使用して指定する必要があります。`DEFAULTIF`句が指定されておらず、フィールドが`NULL`である場合は、NULL値がデータベースに挿入されます。

関連項目:

Oracle Data Provider for .NETの一括コピー・クラス