ダイレクト・パス・ロードでは、中断されたロードの動作は、ロードが中断された理由によって異なります。
領域エラーが原因でロードが中断されたときのSQL*Loaderの動作は、データを複数のサブパーティションにロード中だったかどうかで異なります。
データを複数のサブパーティションにロードしているとき(パーティション表、コンポジット・パーティション表、またはコンポジット・パーティション表の1つのパーティションにロードしているとき)に領域エラーが発生した場合
複数のサブパーティションへのロード中に領域エラーが発生した場合、ロードは中断され、ROWS
が指定されていなければデータは保存されません(この場合、コミット済のデータはすべて保存されます)。このような動作は、行が順不同にロードされる可能性を考慮したためです。順不同になるのは、それぞれの行が順序を考慮せずにパーティションに割り当てられ、そのパーティションが別々にロードされることが原因です。パーティションに割り当てられているすべての行がロードされる前にロードが中断されると、レコード番号nの行はロードされていても、レコード番号n-1の行がロードされていない可能性があります。したがって、単純にSKIP=N
を使用するだけではロードを続行できません。
非パーティション表、パーティション表の1つのパーティション、またはコンポジット・パーティション表の1つのサブパーティションにデータをロードしているときに、領域エラーが発生した場合
制御ファイルに記述されているINTO TABLE
文が1つの場合、SQL*Loaderは、エラーが発生する前にロードされていた行と同じ数の行をコミットします。
制御ファイルにINTO TABLE
文が複数ある場合、SQL*Loaderは、データ・ファイルから他の表に読取り済のデータをロードし、そのデータをコミットします。
いずれの場合も、この動作は、ROWS
パラメータが指定されていたかどうかに関係なく実行されます。ロードを継続する場合は、SKIP
パラメータを使用して、ロード済の行をスキップできます。INTO TABLE
文が複数あった場合は、それぞれの表に異なる数の行がロードされている可能性があります。したがって、ロードを継続するには、表ごとに異なるSKIP
パラメータの値を指定することが必要な場合があります。SKIP
パラメータの値がすべての表で同じ場合にのみ、SQL*Loaderによってその値が報告されます。
エラーが最大数を超えると、SQL*Loaderによって、すべての表へのレコードのロードが停止され、その時点までに終了している処理がコミットされます。ロードを継続する場合、SKIP
パラメータに指定する値は表によって異なります。SKIP
パラメータの値がすべての表で同じ場合にのみ、SQL*Loaderによってその値が報告されます。
致命的エラーが発生した場合は、ロードが停止されます。ロードの開始時にROWS
が指定されていないかぎり、データは保存されません。指定されている場合、コミット済のすべてのデータが保存されます。SKIP
パラメータの値がすべての表で同じ場合にのみ、SQL*Loaderによってその値が報告されます。