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