ODP.NETは、アプリケーションが1つのデータベースの表から同一または異なるデータベースの表へ大量のデータを効率よくロードできる一括コピー機能を提供します。
ODP.NETの一括コピー機能では、ダイレクト・パス・ロード方法を使用します(これはOracle SQL*Loaderと類似していますが異なります)。ダイレクト・パス・ロードを使用すると、SQL INSERT文を使用する従来のロードより早く処理できます。従来のロードでは、Oracleのデータ・ブロックをフォーマットしてデータ・ブロックをデータ・ファイルに直接書き込みます。一括コピーにより、処理中のオーバーヘッドが大幅に削減されます。
ODP.NETの一括コピー機能では旧リリースのOracle Databaseにデータをロードできます。
|
注意: ODP.NET管理対象ドライバは、一括コピーをサポートしていません。 |
ODP.NETの一括コピー機能は、次の項で説明するように、ダイレクト・パス・ロードと同一の基本制限および整合性制約に従います。
一括コピーは、Oracle Databaseの次のデータ型をサポートしています。
NUMBER
BINARY_DOUBLE
BINARY_FLOAT
CHAR
NCHAR
VARCHAR2
NVARCHAR2
LONG
CLOB
BLOB
DATE
TIMESTAMP
TIMESTAMPWITHTIMEZONE
TIMESTAMPWITHLOCALTIMEZONE
INTERVALYEARTOMONTH
INTERVALDAYTOSECOND
一括コピーでは上書きはサポートされていません。
パーティションを含む表には、表で定義済のグローバル索引を含めることはできません。
パーティションがメンバーの表には、有効な参照制約およびチェック制約を含めることはできません。
トリガーが使用禁止であること。
Oracle一括コピー中、次の場合にいくつかの整合性制約は自動的に有効または無効になります。
使用可能な制約
Oracle一括コピー中、次の制約はデフォルトで自動的に有効になります。
NOT NULL
UNIQUE
主キー制約(NOT NULL列における一意制約)
NOT NULL制約は列配列の作成時にチェックされます。NOT NULL制約に違反する行はすべて拒否されます。
UNIQUE制約はロードの最後で索引が再構築されるときに検証されます。この索引はUNIQUE制約に違反すると、索引使用禁止状態のままになります。
使用禁止の制約
Oracle一括コピー中、次の制約はデフォルトで自動的に無効になります。
CHECK制約
参照制約(外部キー)
EVALUATE CHECK_CONSTRAINTS句を指定する場合、CHECK制約は自動的には無効になりません。CHECK制約はダイレクト・パス・ロード中に評価され、CHECK制約に違反する行はすべて拒否されます。
ダイレクト・パス・ロードが始まると、表挿入トリガーも使用禁止になります。行のロードおよび索引の再作成が完了すると、使用禁止になっていたトリガーはすべて使用可能に戻されます。ログ・ファイルには、ロード時に使用禁止になっていたすべてのトリガーのリストが示されます。トリガーを使用可能に戻すときに1つでもエラーがあると、再使用できません。
整合性制約と異なり、挿入トリガーは、使用可能に戻っても表全体に対して再び適用されません。つまり、ダイレクト・パスでロードされた行に対しては、挿入トリガーは起動しません。ダイレクト・パスでロードした場合は、新しい行への挿入トリガーに相当する処理はすべて、アプリケーション側で実行する必要があります。