8 SQL*Loaderコマンドライン・リファレンス

コマンドライン・パラメータを使用してSQL*Loaderを起動できます。

注意:

通常のSQL*LoaderとSQL*Loaderエクスプレス・モードでは、同じパラメータをいくつか共有していますが、その動作は異なる場合があります。この章のパラメータの説明は、通常のSQL*Loaderを対象としています。SQL*Loaderエクスプレス・モードのパラメータは、「SQL*Loaderエクスプレス」を参照してください。

8.1 SQL*Loaderの起動

この項では、SQL*Loaderの起動方法とパラメータの指定方法について説明します。

SQL*Loaderのすべてのパラメータと、簡単な説明およびそれぞれのデフォルト値をリストしたヘルプ画面を表示するには、プロンプトでsqlldrと入力して[Enter]を押します。

8.1.1 コマンドラインでのパラメータの指定

SQL*Loaderを起動する際に、ロード操作の様々な特性を確立するためにパラメータを指定します。

パラメータはカンマで区切ることができますが、その必要はありません。

> sqlldr CONTROL=ulcase1.ctl LOG=ulcase1.log
Username: scott
Password: password
 

位置で指定するとは、パラメータ名は入力せずに、値を入力するということです。次の例では、ユーザー名scottが指定され、その後にulcase1.ctlという制御ファイルの名前が指定されています。パスワードを入力するように要求されます。

> sqlldr scott ulcase1.ctl
Password: password
 

パラメータ名を一度使用したら、後続のすべての指定でパラメータ名を入力する必要があります。位置で指定することはできなくなります。たとえば、次のコマンドでは、CONTROLパラメータを使用して制御ファイル名を指定していますが、ログ・ファイル名はLOGパラメータなしで指定しています。この場合、ulcase1.logの位置が正しくても、エラーが発生します。

> sqlldr scott CONTROL=ulcase1.ctl ulcase1.log

かわりに、次のように入力する必要があります。

> sqlldr scott CONTROL=ulcase1.ctl LOG=ulcase1.log

関連項目:

すべてのコマンドライン・パラメータの詳細は、「SQL*Loaderのコマンドライン・パラメータ」を参照してください

8.1.2 SQL*Loaderのパラメータ指定の代替方法

コマンドラインの長さが、システムの行の最大サイズを超える場合は、OPTIONS句を使用して、一部のコマンドライン・パラメータを制御ファイルに格納できます。

また、パラメータをパラメータ・ファイルとしてグループ化することもできます。このファイルの名前は、SQL*Loaderの起動時に、PARFILEパラメータを使用してコマンドラインで指定できます。

パラメータ指定のこれらの代替方法は、同じパラメータを同じ値で繰り返し使用する場合に有効です。

コマンドラインで指定したパラメータ値は、パラメータ・ファイルまたはOPTIONS句で指定したパラメータ値を上書きします。

関連項目:

8.1.3 ネットワークを介してデータをロードするためのSQL*Loaderの使用

ネットワーク接続を介してデータをロードするためにSQL*Loaderを使用するには、SQL*Loaderユーティリティの起動時に、接続文字列に接続識別子を指定します。

この識別子では、現在のユーザーのORACLE_SID環境変数の設定によって指定した現行のインスタンスとは別のデータベース・インスタンスを指定できます。接続識別子には、Oracle Net接続記述子または接続記述子にマップするネット・サービス名(通常、tnsnames.oraファイルで定義される)を指定できます。接続識別子を使用するには、Oracle Net Listenerが実行中であることが必要です(デフォルト・リスナーを起動するには、lsnrctl startと入力します)。次に、ユーザーscottinst1という接続識別子を使用してSQL*Loaderを起動する例を示します。

> sqlldr CONTROL=ulcase1.ctl
Username: scott@inst1
Password: password

ローカルSQL*Loaderクライアントは接続識別子inst1(ネット・サービス名)によって定義されるデータベース・インスタンスに接続し、ulcase1.ctl制御ファイルの指定に従ってデータをロードします。

注意:

プラガブル・データベース(PDB)にデータをロードするには、SQL*Loaderの起動時に、単純に接続文字列に接続識別子を指定します。

関連項目:

8.2 SQL*Loaderのコマンドライン・パラメータ

この項では、SQL*Loaderの各コマンドライン・パラメータについて説明します。

ここで使用されているコマンドライン・パラメータのデフォルト値および最大値は、UNIXベースのシステムでの値です。これらの値はオペレーティング・システムによって異なります。詳細は、ご使用のオペレーティング・システム固有のOracleマニュアルを参照してください。

8.2.1 BAD

デフォルト: .bad拡張子が付いたデータ・ファイルの名前

用途

最初のデータ・ファイルの指定に関連する不良ファイルの名前または場所(あるいはその両方)を指定します。

構文および説明

BAD=[directory/][filename]

不良ファイルには、挿入時にエラーの原因になったレコードや、不適切に書式化されたレコードが格納されます。BADパラメータを指定する場合、ディレクトリまたはファイル名(あるいはその両方)を指定する必要があります。拒否されたレコードがあり、不良ファイルに名前を指定しなかった場合は、デフォルトで、データ・ファイル名に拡張子(またはファイル・タイプ).badを付けたものがファイル名になります。

directoryパラメータには、不良ファイルの書込み先となるディレクトリを指定します。指定には、デバイスまたはネットワーク・ノードの名前を含めることができます。directoryの値は、次のように決定されます。

  • BADパラメータが指定されておらず、不良ファイルが必要な場合、デフォルト・ディレクトリは、SQL*Loaderの制御ファイルが存在するディレクトリになります。

  • BADパラメータでファイル名が指定されているが、ディレクトリがない場合、ディレクトリはデフォルトでカレント・ディレクトリになります。

  • BADパラメータでディレクトリが指定されているが、ファイル名がない場合、指定されたディレクトリが使用され、不良ファイルの名前と拡張子にはデフォルトが使用されます。

filenameパラメータには、プラットフォームで有効とみなされるファイル名を指定します。名前(および.bad以外のものを使用する場合は拡張子)のみを指定する必要があります。ファイル名に空白やその他の句読点文字が含まれている場合は、一重引用符で囲む必要があります。

コマンドラインで指定された不良ファイルは、制御ファイルの最初のINFILE文(存在する場合)に関連する不良ファイルとなります。不良ファイルの名前は、BADFILE句を使用して、SQL*Loaderの制御ファイル内に指定することもできます。不良ファイル名をコマンドラインと制御ファイルに指定した場合は、コマンドラインの値が使用されます。生成される不良ファイルと同じ名前のファイルがすでに存在する場合は、使用するオペレーティング・システムに応じて、既存ファイルが上書きされるか、新しいバージョンのファイルが生成されます。

関連項目:

不良ファイルの形式の詳細は、「不良ファイルの指定」を参照してください

次の指定では、カレント・ディレクトリにemp1.badという不良ファイルを作成します。

BAD=emp1

8.2.2 BINDSIZE

デフォルト: 256000

用途

BINDSIZEパラメータでは、バインド配列の最大サイズ(バイト単位)を指定します。

構文および説明

BINDSIZE=n

バインド配列は、SQL*Loaderがロード対象のデータを格納するメモリー内の領域です。バインド配列が一杯の場合、データはデータベースに転送されます。バインド配列のサイズは、BINDSIZEおよびREADSIZEパラメータによって制御されます。

BINDSIZEで指定されたバインド配列サイズは、デフォルト・サイズ(システムによって異なる)およびROWSに基づいて計算されたサイズよりも優先されます。

制限事項

  • BINDSIZEパラメータは、従来型パス・ロードでのみ使用します。

次のBINDSIZEの指定では、バインド配列の最大サイズを356,000バイトに制限します。

BINDSIZE=356000

8.2.3 COLUMNARRAYROWS

デフォルト: 5000

用途

COLUMNARRAYROWSパラメータでは、行数を指定してダイレクト・パス列配列に割り当てます。

構文および説明

COLUMNARRARYROWS=n

このパラメータの値は、SQL*Loaderでは計算されません。値を指定するか、またはデフォルトを使用する必要があります。

次の例では、ダイレクト・パス列配列に1000行を割り当てるように指定します。

COLUMNARRAYROWS=1000

8.2.4 CONTROL

デフォルト: デフォルト値は設定されていません。

用途

CONTROLパラメータは、データのロード方法を記述するSQL*Loader制御ファイルの名前を指定します。

構文および説明

CONTROL=control_file_name

ファイルの拡張子またはファイル・タイプを指定していない場合は、デフォルトで.ctlになります。CONTROLパラメータを指定しない場合、SQL*Loaderによってその入力を要求されます。

SQL*Loader制御ファイル名に特殊文字が含まれている場合、オペレーティング・システムによっては、その文字をエスケープする必要があります。また、オペレーティング・システム上でファイル・システム・パスの中にバックスラッシュが使用されている場合は、複数のエスケープ文字を使用するか、または引用符でパスを囲む必要があります。詳細は、ご使用のオペレーティング・システム固有のOracleマニュアルを参照してください。

関連項目:

SQL*Loader制御ファイルの詳細は、「SQL*Loader制御ファイル・リファレンス」を参照してください

次の例では、emp1という制御ファイルを指定します。これには、自動的にデフォルトの拡張子である.ctlが付けられます。

CONTROL=emp1

8.2.5 DATA

デフォルト: 制御ファイルと同じ名前ですが、拡張子は.datになります。

用途

DATAパラメータでは、ロードするデータが含まれるデータ・ファイルの名前を指定します。

構文および説明

DATA=data_file_name

ファイル拡張子を指定しない場合、デフォルトで.datになります。

ファイルの指定にはワイルド・カード(ファイル名およびファイル拡張子にのみ可能で、デバイスまたはディレクトリ名には不可)を含めることができます。アスタリスク(*)は複数文字を表し、疑問符(?)は1文字を表します。例:

DATA='emp*.dat'

DATA='m?emp.dat'

複数のデータ・ファイルの指定(それぞれにワイルド・カードを含めることが可能)をリストするには、ファイル名をカンマで区切る必要があります。

ファイル名に任意の特殊文字(空白、*、?など)が含まれる場合、名前全体を一重引用符で囲む必要があります。

次に、DATAパラメータの有効な3つの使用例を示します(ファイル名に特殊文字が含まれる場合のみ、一重引用符が必要です)。

DATA='file1','file2','file3','file4','file5','file6' 
DATA='file1','file2'
DATA='file3,'file4','file5'
DATA='file6' 
DATA='file1'
DATA='file2'
DATA='file3'
DATA='file4'
DATA='file5'
DATA='file6' 

注意:

複数のデータ・ファイルがロードされる状況でBADパラメータも指定する場合、ファイル名ではなく、不良ファイルのディレクトリのみを指定することをお薦めします。指定した名前を持つファイルがすでに存在する場合、使用しているオペレーティング・システムに応じて、既存ファイルが上書きされるか、新しいバージョンのファイルが生成されます。

コマンドラインでDATAパラメータを使用してデータ・ファイルを指定し、同時に制御ファイルでINFILE句を使用してデータ・ファイルを指定すると、制御ファイルの最初のINFILEの指定は無視されます。コマンドラインと制御ファイル内で指定された他のすべてのデータ・ファイルは処理されます。

DATAパラメータと一緒にファイル処理オプションを指定すると、制御ファイルからのデータのロード時に、警告メッセージが発行されます。

次の例では、employees.datというデータ・ファイルをロードするように指定します。拡張子が指定されていないため、.dat拡張子がデフォルトとみなされます。

DATA=employees

8.2.6 DATE_CACHE

デフォルト: 使用可能(1000要素)。日付キャッシュ機能を完全に使用禁止にするには、0(ゼロ)に設定します。

用途

DATE_CACHEパラメータは、日付キャッシュ・サイズ(エントリ数)を指定します。日付キャッシュは、テキスト文字列から内部の日付書式への変換結果を格納するために使用されます。このキャッシュが有効なのは、テキスト形式から日付書式に変換する場合と比べて、日付の検索コストが非常に低くなるためです。日付ファイルに同じ日付が繰り返し出現する場合は、日付キャッシュを使用することで、ダイレクト・パス・ロードの速度を向上できます。

構文および説明

DATE_CACHE=n

必要に応じて、すべての表に固有の日付キャッシュが作成されます。日付キャッシュは、表への格納のためにデータ型変換が必要な日付値またはタイムスタンプ値が1つ以上ロードされた場合にのみ作成されます。

日付キャッシュ機能は、デフォルトで使用可能です。デフォルトの日付キャッシュ・サイズは1000要素です。デフォルトのサイズを使用し、1000を超える一意の入力値をロードすると、日付キャッシュ機能は、この表に対して自動的に使用禁止となります。ただし、デフォルトを変更して0以外の日付キャッシュ・サイズを指定し、キャッシュ量がこのサイズを超えた場合、キャッシュは使用禁止になりません。

ログ・ファイルに含まれている日付キャッシュ統計(エントリ数、ヒット数、ミス数)を使用して、将来、同様のロードを行うときのためにキャッシュのサイズを調整できます。

制限事項

  • 日付キャッシュ機能は、ダイレクト・パス・ロードと外部表ロードでのみ使用できます。

次の指定では、日付キャッシュ機能を完全に使用禁止にします。

DATE_CACHE=0

8.2.7 DEFAULTS

用途

SQL*LoaderのDEFAULTSコマンドを使用して、デフォルト式の評価およびロードを制御します。

デフォルト: 順序が含まれない場合はEVALUATE_ONCE。含まれる場合、デフォルトはEVALUATE_EVERY_ROWとなります。

DEFAULTSパラメータは、ダイレクト・パス・ロードにのみ適用できます。

構文および説明

DEFAULTS={IGNORE | IGNORE_UNSUPPORTED_EVALUATE_ONCE | IGNORE_UNSUPPORTED_EVALUATE_EVERY_ROW | 
EVALUATE_ONCE | EVALUATE_EVERY_ROW}

各オプションの動作は次のとおりです。

  • IGNORE: 列のデフォルト句は無視されます。

  • IGNORE_UNSUPPORTED_EVALUATE_ONCE: ロード開始時にデフォルト式を1回評価します。サポートされていないデフォルト式は無視されます。DEFAULTSパラメータを使用しないと、デフォルト式が順序を参照しないかぎり、デフォルト式は1回評価されます。デフォルト式が順序を参照する場合は、すべての行が評価されます。

  • IGNORE_UNSUPPORTED_EVALUATE_EVERY_ROW: サポートされていないデフォルト句を無視して、すべての行のデフォルト式を評価します。

  • EVALUATE_ONCE: ロード開始時にデフォルト式を1回評価します。DEFAULTSパラメータを使用しないと、デフォルトが順序を参照しないかぎり、デフォルト式は1回評価されます。デフォルトが順序を参照する場合は、すべての行が評価されます。サポートされていないデフォルト式の句に対してはエラーが発行されます。(これがこのパラメータのデフォルト・オプションです。)

  • EVALUATE_EVERY_ROW: すべての行のデフォルト式を評価し、サポートされていないデフォルトに対してエラーを発行します。

使用例

次のように、testという名前の表およびtest.ctlという名前のSQL*Loader制御ファイルを作成するとします。

create table test
(
   c0 varchar2(10),
   c1 number default '100'
)
;

test.ctl:

load data
infile *
truncate
into table test
fields terminated by ','
trailing nullcols
(
  c0 char
)
begindata
1,

その後、c1にNULLをロードするには、次の文を発行します。

sqlldr scott/tiger t.ctl direct=true defaults=ignore

c1にデフォルト値の100をロードするには、次の文を発行します。

sqlldr scott/tiger t.ctl direct=true

8.2.8 DEGREE_OF_PARALLELISM

デフォルト: NONE

用途

DEGREE_OF_PARALLELISMパラメータでは、ロード操作中に使用する並列度を指定します。

構文および説明

DEGREE_OF_PARALLELISM=[degree-num|DEFAULT|AUTO|NONE]

degree-numを指定する場合、1からnの整数値にする必要があります。

DEFAULTを指定すると、(AUTOのデフォルト・パラメータ値ではなく)データベースのデフォルトの並列度が使用されます。

AUTOを使用すると、Oracle Databaseによってロードの並列度が自動的に設定されます。

NONEを指定すると、ロードはパラレルに実行されません。

関連項目:

制限事項

  • DEGREE_OF_PARALLELISMパラメータは、外部表ロード方法が使用される場合にのみ有効です。

次の例では、ロードの並列度を3に設定します。

DEGREE_OF_PARALLELISM=3

8.2.9 DIRECT

デフォルト: FALSE

用途

DIRECTパラメータでは、従来型パスまたはダイレクト・パスのどちらのロード方法を使用するかを指定します。

構文および説明

DIRECT=[TRUE | FALSE]

TRUE値はダイレクト・パス・ロードを指定します。FALSE値は従来型パス・ロードを指定します。

次の例では、従来型パス・モードを使用してロードを実行するように指定します。

DIRECT=FALSE

8.2.10 DIRECT_PATH_LOCK_WAIT

用途

SQL*LoaderのコマンドDIRECT_PATH_LOCK_WAITを使用して、表ロックの待機時のダイレクト・パス・ロードの動作を制御します。

デフォルト: FALSE

ダイレクト・パス・ロードでは、ロードを続行する前に、表をロックする必要があります。DIRECT_PATH_LOCK_WAITコマンドでは、ロックの待機中のダイレクト・パスAPIの動作を制御します。

構文および説明

DIRECT_PATH_LOCK_WAIT = {TRUE | FALSE}
  • TRUE: ダイレクト・パスは表のロックを取得できるまで待機してから、ロードを続行します。

  • FALSE: これはデフォルトです。ダイレクト・パスAPIは表のロックを複数回試行し、各試行間に1秒待機します。実行される試行の最大回数は30回です。30回試行した後、表をロックできない場合、ダイレクト・パスAPIは表のロックの試行時に生成されたエラーを返します。

8.2.11 DISCARD

デフォルト: データ・ファイルと同じファイル名ですが、拡張子は.dscになります。

用途

DISCARDパラメータでは、表に挿入されず、拒否もされないレコードを格納するための廃棄ファイルをオプションで指定できます。これらは不良レコードではなく、制御ファイル内で指定されているWHEN句などのレコード選択基準に単純に一致しなかったレコードです。

構文および説明

DISCARD=[directory/][filename]

DISCARDパラメータを指定する場合、ディレクトリまたはファイル名(あるいはその両方)を指定する必要があります。

directoryパラメータには、廃棄ファイルの書込み先となるディレクトリを指定します。指定には、デバイスまたはネットワーク・ノードの名前を含めることができます。directoryの値は、次のように決定されます。

  • DISCARDパラメータが指定されていないが、DISCARDMAXパラメータは指定されている場合、デフォルト・ディレクトリは、SQL*Loaderの制御ファイルが存在するディレクトリになります。

  • DISCARDパラメータでファイル名が指定されているが、ディレクトリがない場合、ディレクトリはデフォルトでカレント・ディレクトリになります。

  • DISCARDパラメータでディレクトリが指定されているが、ファイル名がない場合、指定されたディレクトリが使用され、名前と拡張子にはデフォルトが使用されます。

filenameパラメータには、プラットフォームで有効とみなされるファイル名を指定します。名前(および.dsc以外のものを使用する場合は拡張子)のみを指定する必要があります。ファイル名に空白やその他の句読点文字が含まれている場合は、一重引用符で囲む必要があります。

DISCARDパラメータもDISCARDMAXパラメータも指定しない場合、廃棄レコードがあっても廃棄ファイルは作成されません。

DISCARDパラメータが指定されていないが、DISCARDMAXパラメータは指定されている場合に廃棄レコードが存在すると、デフォルト名を使用して廃棄ファイルが作成され、ファイルはSQL*Loaderの制御ファイルが存在する場所と同じディレクトリに書き込まれます。

注意:

複数のデータ・ファイルがロードされる状況でDISCARDパラメータも指定する場合、ファイル名ではなく、廃棄ファイルのディレクトリのみを指定することをお薦めします。指定した名前を持つファイルがすでに存在する場合、使用しているオペレーティング・システムに応じて、既存ファイルが上書きされるか、新しいバージョンのファイルが生成されます。

コマンドラインで指定された廃棄ファイルは、制御ファイルの最初のINFILE文(存在する場合)に関連する廃棄ファイルとなります。つまり、制御ファイル中で指定する廃棄ファイル名よりも、コマンドラインで指定した廃棄ファイル名の方が優先されます。生成される廃棄ファイルと同じ名前のファイルがすでに存在する場合は、既存ファイルが上書きされるか、新しいバージョンのファイルが生成されます。どちらの処理が行われるかは、使用するオペレーティング・システムによって異なります。

関連項目:

廃棄ファイルの形式の詳細は、「廃棄レコードおよび拒否レコード」を参照してください

employees.datというデータ・ファイルをロードすることを前提としています。次の例では、ディレクトリ名のみを指定しているため、廃棄ファイルの名前はemployees.dscになり、mydirディレクトリに作成されます。

DISCARD=mydir/

8.2.12 DISCARDMAX

デフォルト: ALL

用途

DISCARDMAXパラメータは、データ・ロードが終了する前に、許可する廃棄レコードの数を指定します。

構文および説明

DISCARDMAX=n

最初の廃棄レコードで停止するには、値0を指定します。

DISCARDMAXが指定されているが、DISCARDパラメータは指定されていない場合、廃棄ファイルの名前は、拡張子.dscが付けられたデータ・ファイルの名前になります。

次の例では、ロードが終了するまでに25個の破棄レコードが許可されます。

DISCARDMAX=25

8.2.13 DNFS_ENABLE

デフォルト: TRUE

用途

DNFS_ENABLEパラメータでは、SQL*Loader操作中の入力データ・ファイルに対するDirect NFSクライアントの使用を有効化および無効化できます。

構文および説明

DNFS_ENABLE=[TRUE|FALSE]

Direct NFSクライアントは、Oracle Databaseがファイル・サーバー上のファイルにアクセスする際のパフォーマンスを向上するために、ファイル・サーバーで実装できるAPIです。

SQL*Loaderでは、1GBを超えるデータ・ファイルを読み取る場合にデフォルトでDirect NFSクライアント・インタフェースが使用されます。よりサイズの小さいファイルでは、オペレーティング・システムのI/Oインタフェースが使用されます。すべての入力データ・ファイルでDirect NFSクライアントを使用するには、DNFS_ENABLE=TRUEを使用します。

すべてのデータ・ファイルでDirect NFSクライアントの使用を無効にするには、DNFS_ENABLE=FALSEを指定します。

DNFS_READBUFFERSパラメータは、Direct NFSクライアントによって使用される読取りバッファの数(デフォルトは4)を指定するために使用できます。

関連項目:

次の例では、ロード中の入力データ・ファイルでのDirect NFSクライアントの使用を無効にします。

DNFS_ENABLE=FALSE

8.2.14 DNFS_READBUFFERS

デフォルト: 4

用途

DNFS_READBUFFERSパラメータでは、Direct NFSクライアントによって使用される読取りバッファの数を制御できます。Direct NFSクライアントは、Oracle Databaseがファイル・サーバー上のファイルにアクセスする際のパフォーマンスを向上するために、ファイル・サーバーで実装できるAPIです。

構文および説明

DNFS_READBUFFERS=n

より大きい値を使用すると、Direct NFSクライアント・ファイル・サーバーからの一貫性のないI/Oに対処できますが、メモリー使用量が増大する可能性があります。

関連項目:

制限事項

  • DNFS_ENABLEパラメータを同時に指定せずにこのパラメータを使用するには、入力ファイルが1GBを超えている必要があります。

次の例では、Direct NFSクライアントによって使用される読取りバッファの数を10に指定します。

DNFS_READBUFFERS=10

8.2.15 EMPTY_LOBS_ARE_NULL

SQL*LoaderのEMPTY_LOBS_ARE_NULLパラメータを指定した場合、使用可能なデータがないLOB列は、空のLOBではなくNULLに設定されます。

デフォルト: FALSE

用途

使用可能なデータがないLOB列をNULLに設定することで、データのロード後に後処理でこのことを行う必要がなくなります。

構文および説明

EMPTY_LOBS_ARE_NULL = {TRUE | FALSE}

EMPTY_LOBS_ARE_NULLパラメータは、SQL*LoaderのコマンドラインおよびSQL*Loader制御ファイルのOPTIONS句で指定できます。

制限事項

ありません。

次の例では、c1は空のLOBではなくNULLになります。

create table t
(
   c0 varchar2(10),
   c1 clob
)
;

sqlldr control file:

options (empty_lobs_are_null=true)
load data
infile *
truncate
into table t
fields terminated by ','
trailing nullcols
(
  c0 char,
  c1 char
)
begindata
1,, 

8.2.16 ERRORS

デフォルト: 50

用途

ERRORSパラメータでは、許可する挿入エラーの最大数を指定します。

構文および説明

ERRORS=n

発生したエラーの数がERRORSに指定された値を超えると、SQL*Loaderによりロードが中止されます。その前までに挿入されたデータはコミットされます。

エラーを許容しない場合は、ERRORS=0を設定します。エラーを無制限に許容する場合は、非常に大きい値を指定します。

SQL*Loaderでは、すべての表の間でレコードの整合性を保つように処理されます。つまり、複数の表をロードする場合は、エラーの数がこの上限を超えても、すぐにはロード処理が中止されません。SQL*Loaderでは、複数の表のロードに対して許容最大数のエラーが検出されても、行のロードは続行され、すでに表にロードされた有効な行は確実にすべての表にロードされます。また、拒否された行はすべての表から削除されます。

どのような場合でも、SQL*Loaderでは、エラーになったレコードが不良ファイルに書き込まれます。

次の例では、ロードの挿入エラーの最大数を25に指定します。それを超えると、ロードは終了します。

ERRORS=25

8.2.17 EXTERNAL_TABLE

デフォルト: NOT_USED

用途

EXTERNAL_TABLEパラメータは、外部表オプションを使用してデータをロードするかどうかをSQL*Loaderに指定します。

構文および説明

EXTERNAL_TABLE=[NOT_USED | GENERATE_ONLY | EXECUTE]

指定可能な値は次のとおりです。

  • NOT_USED: デフォルト値。従来型パス・モードまたはダイレクト・パス・モードのいずれかを使用して、ロードを行います。

  • GENERATE_ONLY: 制御ファイルに記述されているとおり、SQL*Loaderログ・ファイル内の外部表を使用してロードを行うために必要なすべてのSQL文を書き込みます。これらのSQL文は、編集およびカスタマイズできます。実際のロードは、SQL*Loaderを使用せずに、SQL*Plusでこれらの文を実行して、後で行うことができます。

  • EXECUTE: 外部表を使用してロードを行うために必要なSQL文を実行します。ただし、SQL文からエラーが返されると、ロードは停止します。SQL文は、実行されたとおりログ・ファイルに書き込まれます。つまり、SQL文からエラーが返されると、ロードに必要な残りのSQL文はログ・ファイルには書き込まれません。

    SQL*Loader制御ファイルでEXTERNAL_TABLE=EXECUTEパラメータとSEQUENCEパラメータの両方を使用すると、SQL*Loaderは、データベースの順序を作成し、その順序に従って表をロードした後、その順序を削除します。この方法でロードを実行すると、従来型またはダイレクト・パスによる方法でロードした場合とは異なる結果になります。(順序の作成方法の詳細は、『Oracle Database SQL言語リファレンス』CREATE SEQUENCEに関する項を参照してください。)

注意:

EXTERNAL_TABLEパラメータを指定すると、SQL*Loader制御ファイル内の日時データ型(TIMESTAMPなど)は自動的にCHARデータ型に変換されて、外部表のdate_format_spec句が使用されます。詳細は、「date_format_spec」を参照してください。

外部表オプションで、データベース内のディレクトリ・オブジェクトを使用して、すべての入力データ・ファイルがどこに格納されるか、および出力ファイル(不良ファイルや廃棄ファイルなど)がどこで作成されるかを指定します。データ・ファイルを含むディレクトリ・オブジェクトには、READアクセスが、出力ファイルが作成されるディレクトリ・オブジェクトには、WRITEアクセスが必要です。データ・ファイルまたは出力ファイル格納用の既存のディレクトリ・オブジェクトがない場合は、SQL*LoaderでSQL文を生成して作成します。したがって、EXECUTEオプションを指定する場合は、CREATE ANY DIRECTORY権限が必要です。ロード処理の最後にディレクトリ・オブジェクトを削除する場合は、DROP ANY DIRECTORY権限も必要です。

注意:

SQL*LoaderでEXTERNAL_TABLE=EXECUTE修飾子を指定すると、データのロードに使用可能な外部表が作成された後、INSERT文が実行され、データがロードされます。外部表のすべてのファイルがディレクトリ・オブジェクト内に存在すると識別される必要があります。SQL*Loaderは、ユーザーがアクセス権限を所有している既存のディレクトリ・オブジェクトを使用します。ただし、SQL*Loaderにより一致するディレクトリ・オブジェクトが検出されない場合は、一時ディレクトリ・オブジェクトの作成が試行されます。新しいディレクトリ・オブジェクトを作成する権限を所有していない場合、この操作は正常に実行されません。

この問題を解決するには、EXTERNAL_TABLE=GENERATE_ONLYを使用して、SQL*Loaderで実行が試行されるSQL文を作成します。これらのSQL文を抽出し、参照するディレクトリ・オブジェクトを、アクセス権限を所有しているディレクトリ・オブジェクトに変更します。その後、これらのSQL文を実行します。

複数表のロードを行う場合は、SQL*Loaderで次の手順を実行します。

  1. 任意の表にロードされる入力データ・ファイルのすべてのフィールドを記述する表を、データベースに作成します。

  2. INSERT文を作成して、データの外部表記述からこの表をロードします。

  3. 制御ファイルのすべての表にINSERT文を実行します。

実行例については、事例5にEXTERNAL_TABLE=GENERATE_ONLYパラメータを追加して実行します。外部表に一意の名前を保証するため、SQL*Loaderではすべてのフィールド用に生成された名前を使用します。これは、フィールド名が制御ファイル内の異なる表の間で一意でないことがあるためです。

関連項目:

制限事項

  • SQL*Loaderを介して外部表からデータベース表にデータを挿入する場合、ユリウス日は使用できません。この問題を解決するには、次の例に示すとおり、TO_DATEおよびTO_CHARを使用してユリウス日書式を変換します。

    TO_CHAR(TO_DATE(:COL1, 'MM-DD-YYYY'), 'J')
    
  • 外部表からデータベース表にデータを挿入する場合、オブジェクト要素には組込み関数およびSQL文字列は使用できません。

EXTERNAL_TABLE=EXECUTE

8.2.18 FILE

デフォルト: デフォルト値は設定されていません。

用途

FILEパラメータでは、エクステントの割当て元となるデータベース・ファイルを指定します。

構文および説明

FILE=tablespace_file

SQL*Loaderの異なるプロセスに対するFILEパラメータの値を変えることによって、データがシステムにロードされるときのディスクの競合を最小限に抑えることができます。

制限事項

  • FILEパラメータは、ダイレクト・パスのパラレル・ロードでのみ使用します。

8.2.19 HELP

SQL*LoaderのHELPコマンドでは、SQL*Loaderユーティリティのオンライン・ヘルプが表示されます。

デフォルト: FALSE

構文および説明

HELP = [TRUE | FALSE]

HELP=TRUEを指定した場合は、SQL*LoaderによってすべてのSQL*Loaderのコマンドライン・パラメータの要約が表示されます。

すべてのSQL*Loaderのコマンドライン・パラメータの要約は、コマンドラインでsqlldr -helpと入力して表示することもできます。

8.2.20 LOAD

デフォルト: すべてのレコードがロードされます。

用途

LOADパラメータでは、ロード対象の最大レコード数を指定します。

構文および説明

LOAD=n

ロードに指定したすべてのパラメータが正しく設定されているかどうかをテストする場合、LOADパラメータを使用して、すべてのレコードをロードするかわりに、かぎられた数のレコードを指定します。実際のレコード件数が指定された最大数より少ない場合、エラーは発生しません。

次の例では、最大10個のレコードをロードするように指定します。

LOAD=10

外部表の方法によるロードでは、ロードに成功したレコードのみが合計に加算されます。そのため、入力データ・ファイルに15個のレコードがあり、レコード2および4が不良の場合、レコード1、3、5、6、7、8、9、10、11および12が合計10個のレコードとして表にロードされます。

従来型パス・ロードとダイレクト・パス・ロードでは、成功と失敗の両方のロード試行が合計に加算されます。そのため、入力データ・ファイルに15個のレコードがあり、レコード2および4が不良の場合、レコード1、3、5、6、7、8、9および10の8個のみが実際に表にロードされます。

8.2.21 LOG

デフォルト: 拡張子が.logの制御ファイル名

用途

LOGパラメータでは、ロード・プロセスに関するログ情報を格納するためにSQL*Loaderが使用するログ・ファイルのディレクトリ・パスまたはファイル名(あるいはその両方)を指定します。

構文および説明

LOG=[[directory/][log_file_name]]

LOGパラメータを指定する場合、ディレクトリ名またはファイル名(あるいはその両方)を指定する必要があります。

ディレクトリ名を指定しない場合、デフォルトでカレント・ディレクトリが使用されます。

ファイル名なしでディレクトリ名を指定した場合、デフォルトのログ・ファイル名が使用されます。

次の例では、カレント・ディレクトリにemp1.logというログ・ファイルを作成します。拡張子を指定しない場合でも、デフォルトの.logが使用されます。

LOG=emp1

8.2.22 MULTITHREADING

デフォルト: 複数CPUシステムではTRUEで、単一CPUシステムではFALSE

用途

サーバー・システムでのストリームのロードと並行して、クライアント・システムでストリームを作成できます。

構文および説明

MULTITHREADING=[TRUE | FALSE]

デフォルトでは、マルチスレッド・オプションは常にTRUEに設定され、複数CPUシステム上で使用可能です。この場合の複数CPUシステムの定義は、2つ以上のCPUを持つ単一システムです。

単一CPUシステムでは、マルチスレッドはデフォルトでFALSEに設定されています。2つの単一CPUシステム間でマルチスレッドを使用するには、マルチスレッドを使用可能にする必要があります。デフォルトでは、使用可能になっていません。

制限事項

  • MULTITHREADINGパラメータは、ダイレクト・パス・ロードでのみ使用できます。

  • マルチスレッド機能は、オペレーティング・システムに依存します。すべてのオペレーティング・システムがマルチスレッドをサポートしているわけではありません。

次の例では、単一CPUシステムでマルチスレッドを使用可能にします。複数CPUシステムでは、デフォルトで使用可能です。

MULTITHREADING=TRUE

8.2.23 NO_INDEX_ERRORS

デフォルト: FALSE

用途

NO_INDEX_ERRORSパラメータでは、ダイレクト・パス・ロード中に索引付けエラーを許容するかどうかを指定します。

構文および説明

NO_INDEX_ERRORS=[TRUE | FALSE]

NO_INDEX_ERRORS=FALSEの設定では、ダイレクト・パス・ロードの結果として索引が使用できなくなった場合、行がロードされ、索引は使用禁止状態のまま残されます。これはデフォルトの動作です。

NO_INDEX_ERRORS=TRUEの設定では、ダイレクト・パス・ロードの結果として索引付けエラーが発生すると、ロードは中断されます。どの行もロードされず、索引はそのままの状態で残されます。

制限事項

  • NO_INDEX_ERRORSパラメータは、ダイレクト・パス・ロードでのみ有効です。従来型パス・ロードで指定した場合、このパラメータは無視されます。

NO_INDEX_ERRORS=TRUE

8.2.24 PARALLEL

SQL*Loader PARALLELパラメータでは、ダイレクト・パスまたは外部表を使用するロードによって、複数の同時セッションで同じ表にデータをロードできるかどうかを指定します。

デフォルト: FALSE

用途

ダイレクト・パスまたは外部表を使用するロードによって、複数の同時セッションで同じ表にデータをロードできるかどうかを指定します。

構文および説明

PARALLEL=[TRUE | FALSE]

制限事項

  • PARALLELパラメータは、従来型パス・ロードでは無効です。

次の例では、パラレルにロードを実行するように指定します。

PARALLEL=TRUE

8.2.25 PARFILE

デフォルト: デフォルト値は設定されていません。

用途

PARFILEパラメータは、コマンドラインで頻繁に使用するパラメータを記述したファイルを指定します。

構文および説明

PARFILE=file_name

コマンドラインで各パラメータを指定するかわりに、単にパラメータ・ファイルの名前を指定できます。たとえば、daily_report.parというパラメータ・ファイルの内容が、次のとおりだとします。

USERID=scott
CONTROL=daily_report.ctl
ERRORS=9999
LOG=daily_report.log

セキュリティ上の理由から、パラメータ・ファイルにはUSERIDのパスワードを含めないでください。コマンドラインでパラメータ・ファイルを指定した後、SQL*Loaderによってパスワードを入力するように要求されます。次に例を示します。

sqlldr PARFILE=daily_report.par
Password: password

制限事項

  • 通常は問題ありませんが、システムによっては、パラメータ指定の中で等号(=)の前後に空白を挿入できないものもあります。

「構文および説明」の例を参照してください。

8.2.26 PARTITION_MEMORY

デフォルト: デフォルト値は0 (ゼロ)です。PGA_AGGREGATE_TARGET初期化パラメータの値に基づいてメモリーの使用が制限されます。メモリーの使用がこの値に達すると、一部のパーティションのロードが遅延します。

用途

PARTITION_MEMORYパラメータを使用すると、多数のパーティションをロードしている際に使用するメモリーの量を制限できます。このパラメータは、ロードしているパーティションの数が大量のメモリーを消費し、使用可能なメモリーを超える可能性がある場合に有効です(これは、特にデータが圧縮されている場合に起こることがあります)。

指定した制限に達すると、メモリーの使用が制限値を下回るまで、一部のパーティション行のロードが遅延します。

構文および説明

PARTITION_MEMORY=n

パラメータ値nの単位は、KBです。

nが0 (デフォルト)に設定されている場合、SQL*Loaderでは、PGA_AGGREGATE_TARGET初期化パラメータの機能である値が使用されます。

nが-1 (マイナス1)に設定されている場合、SQL*Loaderでは、多数のパーティションをロードする際のメモリーの消費は少なくなりません。

制限事項

  • このパラメータは、ダイレクト・パス・ロードでのみ有効です。

  • このパラメータは、Oracle Database 12cリリース1 (12.1.0.2)以降でのみ使用可能です。

次の例では、メモリーの使用を1GBに制限しています。

> sqlldr hr CONTROL=t.ctl DIRECT=true PARTITION_MEMORY=1000000

8.2.27 READSIZE

デフォルト: 1048576

用途

デフォルトを使用しない場合は、READSIZEパラメータを使用して読取りバッファのサイズ(バイト単位)を指定できます。

構文および説明

READSIZE=n

従来型パス・ロードの方法では、バインド配列は、読取りバッファのサイズによって制限されます。そのため、読取りバッファを大きくすると、コミット操作を実行する前に、より多くのデータを読み取ることができるというメリットがあります。

たとえば、READSIZEに1000000を設定すると、コミットを実行する前に、SQL*Loaderによって、データ・ファイルから1,000,000バイト単位で読取りを実行できます。

注意:

READSIZEBINDSIZEより小さい値を指定した場合、READSIZEの値は増加します。

「BINDSIZE」を参照してください。

制限事項

  • READSIZEパラメータは、データ・ファイルからデータを読み込む場合にのみ使用されます。制御ファイルからレコードを読み込む場合は、常に64KBという値がREADSIZEとして使用されます。

  • READSIZEパラメータは、LOBに影響しません。LOB読取りバッファのサイズは、64KBに固定されています。

  • 許容最大サイズ、プラットフォームによって異なります。

次の例では、読取りバッファのサイズを500,000バイトに設定します(この設定では、デフォルト値またはデフォルトを超える値が使用されている場合より多くのコミット操作が必要になります)。

READSIZE=500000

8.2.28 RESUMABLE

デフォルト: FALSE

用途

RESUMABLEパラメータを使用して、再開可能な領域割当てを有効または無効にします。

構文および説明

RESUMABLE=[TRUE | FALSE]

関連項目:

制限事項

  • このパラメータはデフォルトでは無効なため、関連するRESUMABLE_NAMEパラメータおよびRESUMABLE_TIMEOUTパラメータを使用するには、RESUMABLE=TRUEを設定する必要があります。

次の例では、再開可能な領域割当てを有効にします。

RESUMABLE=TRUE

8.2.29 RESUMABLE_NAME

デフォルト: 'User USERNAME(USERID), Session SESSIONID, Instance INSTANCEID'

用途

RESUMABLE_NAMEパラメータでは、再開可能な文を指定します。

構文および説明

RESUMABLE_NAME='text_string'

この値はユーザー定義のテキスト文字列で、USER_RESUMABLEまたはDBA_RESUMABLEビューに挿入して、一時停止されている特定の再開可能な文を識別できます。

制限事項

  • RESUMABLEパラメータをTRUEに設定して、再開可能な領域割当てを有効にしないかぎり、このパラメータは無視されます。

RESUMABLE_NAME='my resumable sql'

8.2.30 RESUMABLE_TIMEOUT

デフォルト: 7200秒(2時間)

用途

RESUMABLE_TIMEOUTパラメータでは、エラー修正に必要な時間を秒単位で指定します。

構文および説明

RESUMABLE_TIMEOUT=n

タイムアウト時間内にエラーを修正できない場合は、文の実行が途中で終了します。

制限事項

  • RESUMABLEパラメータをTRUEに設定して、再開可能な領域割当てを有効にしないかぎり、このパラメータは無視されます。

次の例では、10分(600秒)以内にエラーを修正する必要があることを指定します。

RESUMABLE_TIMEOUT=600

8.2.31 ROWS

デフォルト: 従来型パスのデフォルトは64です。ダイレクト・パスのデフォルトはすべての行です。

用途

従来型パス・ロードでは、ROWSパラメータでバインド配列の行数を指定します。ダイレクト・パス・ロードでは、ROWSパラメータでデータの保存前にデータ・ファイルから読み取る行数を指定します。

構文および説明

ROWS=n

従来型パス・ロードの場合のみ: ROWSパラメータでバインド配列の行数を指定します。行の最大数は65534です。詳細は、「バインド配列および従来型パス・ロード」を参照してください

ダイレクト・パス・ロードの場合のみ: ROWSパラメータでデータ・ファイルからデータのセーブ前に読み込む行数を指定します。デフォルトでは、ロード終了時に、すべての行の読取りおよびデータ・セーブが1回実行されます。詳細は、「データ・セーブを使用したデータ損失の防止」を参照してください。1回のセーブで実際に表にロードされる行のおよその数は、ROWSの値から、最後のセーブ以降に廃棄および拒否されたレコードの数を引いた数です。

注意:

ROWSに低い値を指定し、表圧縮を使用してデータを圧縮しようとすると、通常は圧縮比が低下します。データの圧縮には、高い値を指定するかデフォルト値を使用することをお薦めします。

制限事項

  • 索引構成表(IOT)にデータがロードされる場合、あるいはVARRAY、XML列またはLOBが含まれる表にデータがロードされる場合、ROWSパラメータはダイレクト・パス・ロードで無視されます。これは、ロードはそのまま実行されますが、セーブポイントは処理されないことを意味します。

従来型パス・ロードでは、指定した値が許容可能な最大行数の65534を超えているため、次の例はエラーになります。

ROWS=65900

8.2.32 SDF_PREFIX

SDF_PREFIXパラメータでは、ロード操作の一部として開かれるLOBFILEおよびセカンダリ・データ・ファイル(SDF)のファイル名に追加されるディレクトリの接頭辞を指定できます。

デフォルト: デフォルト値は設定されていません。

用途

SDF_PREFIXを指定した場合は、文字列値も指定する必要があります。文字列の妥当性チェックや検証は行われません。SDF_PREFIXの値は、ロード中に開かれたすべてのLOBFILEおよびSDFに使用されるファイル名の先頭に追加されます。結果の文字列が有効なファイル名でない場合、そのファイルを開こうとすると失敗し、エラーが報告されます。

SDF_PREFIXを指定しない場合、LOBFILEおよびSDFのファイル名は現在の作業ディレクトリに相対的であるとみなされます。SDF_PREFIXを使用すると、それらのファイル名を異なるディレクトリに対して相対的にできます。

注意:

SDF_PREFIXパラメータは、SQL Loader制御ファイルのOPTIONS句で指定することもできます。

構文

SDF_PREFIX=string

コマンドライン・パーサーにとって紛らわしい文字(空白など)が文字列に含まれている場合にのみ、文字列を引用符で囲む必要があります。

レコードで検出されたファイル名の先頭にSDF_PREFIXを追加することによって作成されたファイル名は、ファイルを開くためにオペレーティング・システムに渡されます。接頭辞は、SQL*Loaderが実行されている現在の作業ディレクトリに相対的にするか、または絶対パスの先頭にすることができます。

制限事項

  • LOBFILEまたはSDFのファイル指定に完全なファイル名が含まれている場合は、SDF_PREFIXパラメータを使用しないでください。

次のSQL*Loaderコマンドでは、現在のディレクトリのlobdirサブディレクトリでLOBファイルが検索されます。

sqlldr control=picts.ctl log=picts.log sdf_prefix=lobdir/

8.2.33 SILENT

デフォルト: デフォルト値は設定されていません。

用途

SILENTパラメータは、SQL*Loaderの操作中に画面に書き込まれる内容の一部を抑止します。

構文および説明

SILENT=[HEADER | FEEDBACK | ERRORS | DISCARDS | PARTITIONS | ALL]

適切な値を使用して、次の1つ以上の内容を抑止します(複数のオプションを指定する場合、カンマで区切る必要があります)。

  • HEADER: 画面に通常表示されるSQL*Loaderのヘッダー・メッセージを非表示にします。ただし、ヘッダー・メッセージはログ・ファイルに出力されます。

  • FEEDBACK: ロードで画面に通常表示される「commit point reached」メッセージとステータス・メッセージを非表示にします。

  • ERRORS: レコードにOracleエラーが発生したためそのレコードが不良ファイルに書き込まれた場合、データ・エラー・メッセージがログ・ファイルに出力されないようにします。ただし、拒否レコード件数は出力されます。

  • DISCARDS: レコードが廃棄ファイルに書き込まれた場合に、そのことを示すメッセージがログ・ファイルに出力されないようにします。

  • PARTITIONS: パーティション表のダイレクト・ロード中、ログ・ファイルに対するパーティションごとの統計情報の書込みを使用禁止にします。

  • ALL: すべての抑止値(HEADERFEEDBACKERRORSDISCARDSおよびPARTITIONSパラメータ)を実装します。

たとえば、画面に通常表示されるヘッダーとフィードバック・メッセージが表示されないようにするには、コマンドラインの引数で次のように指定します。

SILENT=HEADER, FEEDBACK

8.2.34 SKIP

デフォルト: 0 (レコードは1件もスキップされません。)

用途

SKIPパラメータは、ファイルの先頭から何件の論理レコードをロード対象外とするかを指定します。これによって、すでに処理されているレコードをロードすることなく、なんらかの理由で中断されたロードを継続できます。

構文および説明

SKIP=n

SKIPパラメータは、すべての従来型ロード、単一表のダイレクト・パス・ロード、各表にロードされるレコード数が同一の場合の複数表のダイレクト・パス・ロードに使用されます。各表にロードされるレコード数が異なる場合、複数表のダイレクト・パス・ロードには使用できません。

WHEN句を使用し、セカンダリ・データもロード対象となる場合、そのセカンダリ・データは、プライマリ・データ・ファイルのレコードに対してWHEN句が正常に実行された場合にのみスキップされます。

制限事項

  • SKIPパラメータは、外部表のロードには使用できません。

次の例では、ロードを続行する前にデータ・ファイル内の最初の500件の論理レコードをスキップします。

SKIP=500

8.2.35 SKIP_INDEX_MAINTENANCE

デフォルト: FALSE

用途

SKIP_INDEX_MAINTENANCEパラメータでは、ダイレクト・パス・ロードの索引メンテナンスを停止するかどうかを指定します。

構文および説明

SKIP_INDEX_MAINTENANCE=[TRUE | FALSE]

このパラメータをTRUEに設定すると、索引パーティションには、索引キーが追加されるかわりに索引使用禁止が設定されます(索引セグメントと、その索引が付けられているデータとの整合性がとれないため)。ロードの影響を受けない索引セグメントについては、ロード前の状態が保持されます。

SKIP_INDEX_MAINTENANCEパラメータ:

  • ローカル索引とグローバル索引の両方に適用できます。

  • 索引を持つオブジェクトのパラレル・ロードを実行できます(PARALLELパラメータとともに指定)。

  • グローバル索引を持つ表に単一パーティションをロードできます(INTO TABLE句でPARTITIONパラメータを指定)。

  • ロードによって索引使用禁止状態に設定された索引や索引パーティションのリストを(SQL*Loaderログ・ファイルに)作成します。

制限事項

  • SKIP_INDEX_MAINTENANCEパラメータは、従来型パス・ロードには適用されません。

  • 一意で使用禁止状態の索引に対しては、索引メンテナンスをスキップできません。この原則は、DML操作の場合にも、ダイレクト・パスでDMLと整合性を持つロードを行う場合にも適用されます。

次の例では、ダイレクト・パス・ロードの操作中に索引メンテナンスが発生しないようにします。

SKIP_INDEX_MAINTENANCE=TRUE

8.2.36 SKIP_UNUSABLE_INDEXES

デフォルト: 初期化パラメータ・ファイルで指定した、Oracle Databaseの構成パラメータSKIP_UNUSABLE_INDEXESの値。デフォルトのデータベースの設定は、TRUEです。

用途

SKIP_UNUSABLE_INDEXESパラメータでは、索引使用禁止状態で出現した索引をスキップし、ロード操作を続行するかどうかを指定します。

構文および説明

SKIP_UNUSABLE_INDEXES=[TRUE | FALSE]

SKIP_UNUSABLE_INDEXESの値としてTRUEを指定すると、索引使用禁止状態の索引が検出された場合、使用禁止状態の索引はスキップされ、ロード処理は続行されます。これによってロード開始前の状態が使用禁止の索引を含む表をロードできます。ロード時に使用禁止状態でない索引は、SQL*Loaderによってメンテナンスされます。ロード時に使用禁止状態の索引はメンテナンスされず、ロード完了時も使用禁止状態のままです。

SKIP_UNUSABLE_INDEXESパラメータは、SQL*LoaderとOracle Databaseの両方によって提供されます。SQL*LoaderのSKIP_UNUSABLE_INDEXESパラメータは、SQL*Loaderコマンドラインで指定します。Oracle DatabaseのSKIP_UNUSABLE_INDEXESパラメータは、初期化パラメータ・ファイルの構成パラメータとして指定します。相互に与える影響を理解しておく必要があります。

SQL*LoaderコマンドラインでSKIP_UNUSABLE_INDEXESの値を指定すると、SQL*Loaderは、初期化パラメータ・ファイルに指定されているSKIP_UNUSABLE_INDEXES構成パラメータの値を上書きします。

SQL*LoaderコマンドラインでSKIP_UNUSABLE_INDEXESの値を指定しない場合、SQL*Loaderは、初期化パラメータ・ファイルに指定されているSKIP_UNUSABLE_INDEXES構成パラメータのOracle Database設定を使用します。初期化パラメータ・ファイルでSKIP_UNUSABLE_INDEXESの設定を指定しない場合、デフォルトの設定はTRUEになります。

SKIP_UNUSABLE_INDEXESパラメータは、従来型パス・ロードおよびダイレクト・パス・ロードの両方に適用できます。

制限事項

  • 一意で使用禁止状態の索引に対しては、索引メンテナンスをスキップできません。この原則は、DML操作の場合にも、ダイレクト・パスでDMLと整合性を持つロードを行う場合にも適用されます。

Oracle Databaseの初期化パラメータの値がSKIP_UNUSABLE_INDEXES=FALSEであっても、SQL*Loaderコマンドラインの次のパラメータが優先します。したがって、索引使用禁止状態の索引が出現すると、それはスキップされてロード操作が続行されます。

SKIP_UNUSABLE_INDEXES=TRUE

8.2.37 STREAMSIZE

デフォルト: 256000

用途

STREAMSIZEパラメータで、クライアントからサーバーへ送ったデータのストリーム・サイズ(バイト単位)を指定します。

構文および説明

STREAMSIZE=n

STREAMSIZEパラメータでは、ダイレクト・パス・ストリーム・バッファのサイズを指定します。列配列の行数(COLUMNARRAYROWSパラメータで指定)によって、ストリーム・バッファが作成される前にロードされた行数を判断します。これらのパラメータの最適値は、使用されるシステム、入力データ型およびOracleの列データ型に応じて異なります。独自の構成用に最適な値を使用することで、SQL*Loaderのログ・ファイルでの経過時間が少なくなります。

制限事項

  • STREAMSIZEパラメータは、ダイレクト・パス・ロードにのみ適用されます。

  • STREAMSIZEの最小値は65536です。65536未満の値が指定された場合、かわりに65536が使用されます。

次の例では、ダイレクト・パス・ストリーム・バッファのサイズを300,000バイトに指定します。

STREAMSIZE=300000

8.2.38 TRIM

デフォルト: LDRTRIM

用途

TRIMパラメータでは、テキスト・フィールドの先頭またはテキスト・フィールドの末尾(あるいはその両方)から空白を切り捨てることを指定します。空白には、空白文字およびその他の印字されない文字(タブ、LF、改行など)が含まれます。

構文および説明

TRIM=[LRTRIM | NOTRIM | LTRIM | RTRIM | LDRTRIM]

TRIMパラメータの有効な値は次のとおりです。

フィールドから文字を切り捨てない場合は、NOTRIMを使用します。この設定では、通常、最高のパフォーマンスを得ることができます。

フィールドから文字を切り捨てる場合は、LRTRIMLTRIMおよびRTRIMを使用します。LRTRIMを使用すると、先頭と後続の空白の両方が切り捨てられます。先頭の空白を切り捨てるには、LTRIMを使用します。後続の空白を切り捨てるには、RTRIMを使用します。

LDRTRIMは、次の場合を除いて、NOTRIMと同様です。

  • フィールドがデリミタ付きのフィールドではない場合、空白は右から切り捨てられる。

  • フィールドがOPTIONALLY ENCLOSED BYで指定されたデリミタ付きフィールドで、オプションの囲みが特定のインスタンスで欠落している場合、空白は左から切り捨てられる。

すべてが空白のフィールドに対して切捨てを指定する場合、そのフィールドはNULLに設定されます。

制限事項

  • TRIMパラメータは、外部表ロード方法が使用される場合にのみ有効です。

次の例では、どのフィールドからも文字が切り捨てられないロード操作が実行されます。

TRIM=NOTRIM

8.2.39 USERID

デフォルト: 省略すると、システムから入力を要求されます。スラッシュのみを入力すると、デフォルトとしてオペレーティング・システムのログイン名がUSERIDに適用されます。

用途

USERIDパラメータを使用して、Oracleユーザー名およびパスワードを指定します。

構文および説明

USERID=[username | / | SYS]

ユーザー名を指定します。セキュリティ上の理由から、コマンドラインにはユーザー名のみを指定することをお薦めします。SQL*Loaderによってパスワードの入力を要求されます。

USERIDパラメータを指定しない場合、その入力を求められます。スラッシュのみを入力すると、デフォルトとしてオペレーティング・システムのログイン名がUSERIDに適用されます。

ユーザーSYSとして接続する場合は、接続文字列にAS SYSDBAも指定する必要があります。

制限事項

  • 文字列AS SYSDBAには空白が含まれるため、一部のオペレーティング・システムでは、接続文字列全体を一重引用符で囲むか、なんらかの方法でリテラルとしてマークする必要があります。また、オペレーティング・システムによっては、コマンドラインの引用符を、バックスラッシュなどでエスケープする必要がある場合もあります。

    システムの特殊文字および予約文字の詳細は、ご使用のオペレーティング・システム固有のOracleマニュアルを参照してください。

次の例では、ユーザー名のhrを指定します。SQL*Loaderによってパスワードの入力を要求されます。これが指定する最初で唯一のパラメータであるため、パラメータ名のUSERIDを含める必要はありません。

> sqlldr hr
Password: 

8.3 終了コードによる結果の検査と表示

Oracle SQL*Loaderでは、SQL*Loaderの完了後、すぐに実行結果を確認できます。

SQL*Loaderでは、実行結果をログ・ファイルに記録するのみでなく、プロセス終了コードでレポートすることもできます。。このOracle SQL*Loaderの機能によって、コマンドラインやスクリプトからSQL*Loaderを起動したときにもその結果を確認できます。表8-1に、様々な結果の終了コードを示します。

表8-1 SQL*Loaderの終了コード

結果 終了コード

すべての列が正常にロードされた

EX_SUCC

すべての行または一部の行が拒否された

EX_WARN

すべての行または一部の行が廃棄された

EX_WARN

ロードが中断された

EX_WARN

コマンドラインまたは構文エラー

EX_FAIL

SQL*Loaderに対してリカバリ不能なOracleエラー

EX_FAIL

OS関連エラー(ファイルのオープン/クローズ、mallocなど)

EX_FTL

LinuxおよびUNIXオペレーティング・システムでは、終了コードは次のとおりです。

EX_SUCC 0
EX_FAIL 1
EX_WARN 2
EX_FTL  3

Windowsオペレーティング・システムでは、終了コードは次のとおりです。

EX_SUCC 0
EX_FAIL 1
EX_WARN 2
EX_FTL  4

SQL*Loaderが0(ゼロ)以外の終了コードを返した場合、システム・ログ・ファイルおよびSQL*Loaderログ・ファイルで、詳細な診断情報を確認してください。

UNIXでは、シェルの終了コードを調べてロード結果を確認できます。