SQL*Loaderの最大バッファ・サイズよりも長いデータをダイレクト・パスでロードするには、LOBを使用します。LOBに大きいSTREAMSIZE
値を使用すると、パフォーマンスが向上します。
次の項で説明するように、PIECED
パラメータを使用すると、最大バッファ・サイズより長いデータもロードできますが、LOBを使用することをお薦めします。
データが論理レコードの最終列である場合、PIECED
パラメータを使用すると、データをセクションごとにロードできます。
列をPIECED
と宣言することによって、LONG
フィールドを複数の物理レコード(ピース)に分割することが、ダイレクト・パス・ローダーに通知されます。この場合、SQL*Loaderでは、LONG
フィールドの各ピースが物理レコード内で検索された順序で処理されます。レコードが処理される前に、フィールドのすべてのピースが読み込まれます。SQL*Loaderでは、格納前のLONG
フィールドは具体化されません。ただし、レコードが処理される前に、フィールドのすべての部分が読み込まれます。
列をPIECED
と宣言する場合、次の制約が適用されます。
このオプションはダイレクト・パスでのみ有効です。
1つの表につき1フィールドのみをPIECED
にできます。
PIECED
フィールドは論理レコードの最終フィールドである必要があります。
WHEN
句、NULLIF
句またはDEFAULTIF
句では、PIECED
フィールドを使用できません。
論理レコード内のPIECED
フィールドの領域は、他のフィールドの領域と重複してはいけません。
PIECED
に対応するデータベースの列を索引に含めることはできません。
拒否されたレコードにPIECED
フィールドが含まれている場合は、不良ファイルからそのレコードをロードできません。
たとえば、1つのPIECED
フィールドが3つのレコードにまたがっているとします。SQL*Loaderでは、最初のレコードからPIECEDフィールドの第一分割がロードされ、次に同じバッファを使用して2番目のレコードから第二分割がロードされます。その後、同じバッファを使用して同様に3番目のレコードがロードされます。ここでエラーが検出されると、最初の2つのレコードはすでにバッファには存在しないため、3番目のレコードのみが不良ファイルに書き込まれます。その結果、不良ファイルにあるレコードが無効となります。