8 SQL*Loaderコマンドライン・リファレンス
コマンドライン・パラメータを使用してSQL*Loaderを起動できます。
ノート:
通常のSQL*LoaderとSQL*Loaderエクスプレス・モードでは、同じパラメータをいくつか共有していますが、その動作は異なる場合があります。この章のパラメータの説明は、通常のSQL*Loaderを対象としています。SQL*Loaderエクスプレス・モードのパラメータは、「SQL*Loaderエクスプレス」を参照してください。
- SQL*Loaderの起動
この項では、SQL*Loaderの起動方法とパラメータの指定方法について説明します。 - SQL*Loaderのコマンドライン・パラメータ
この項では、SQL*Loaderの各コマンドライン・パラメータについて説明します。 - 終了コードによる結果の検査と表示
Oracle SQL*Loaderでは、SQL*Loaderの完了後、すぐに実行結果を確認できます。
親トピック: SQL*Loader
8.1 SQL*Loaderの起動
この項では、SQL*Loaderの起動方法とパラメータの指定方法について説明します。
SQL*Loaderのすべてのパラメータと、簡単な説明およびそれぞれのデフォルト値をリストしたヘルプ画面を表示するには、プロンプトでsqlldr
と入力して[Enter]を押します。
- コマンドラインでのパラメータの指定
SQL*Loaderを起動する際に、ロード操作の様々な特性を確立するためにパラメータを指定します。 - SQL*Loaderのパラメータ指定の代替方法
コマンドラインの長さが、システムの行の最大サイズを超える場合は、OPTIONS
句を使用して、一部のコマンドライン・パラメータを制御ファイルに格納できます。 - ネットワークを介してデータをロードするためのSQL*Loaderの使用
ネットワーク接続を介してデータをロードするためにSQL*Loaderを使用するには、SQL*Loaderユーティリティの起動時に、接続文字列に接続識別子を指定します。
親トピック: SQL*Loaderコマンドライン・リファレンス
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のコマンドライン・パラメータ」を参照してください
親トピック: SQL*Loaderの起動
8.1.2 SQL*Loaderのパラメータ指定の代替方法
コマンドラインの長さが、システムの行の最大サイズを超える場合は、OPTIONS
句を使用して、一部のコマンドライン・パラメータを制御ファイルに格納できます。
また、パラメータをパラメータ・ファイルとしてグループ化することもできます。このファイルの名前は、SQL*Loaderの起動時に、PARFILE
パラメータを使用してコマンドラインで指定できます。
パラメータ指定のこれらの代替方法は、同じパラメータを同じ値で繰り返し使用する場合に有効です。
コマンドラインで指定したパラメータ値は、パラメータ・ファイルまたはOPTIONS
句で指定したパラメータ値を上書きします。
親トピック: SQL*Loaderの起動
8.1.3 ネットワークを介してデータをロードするためのSQL*Loaderの使用
ネットワーク接続を介してデータをロードするためにSQL*Loaderを使用するには、SQL*Loaderユーティリティの起動時に、接続文字列に接続識別子を指定します。
この識別子では、現在のユーザーのORACLE_SID
環境変数の設定によって指定した現行のインスタンスとは別のデータベース・インスタンスを指定できます。接続識別子には、Oracle Net接続記述子または接続記述子にマップするネット・サービス名(通常、tnsnames.ora
ファイルで定義される)を指定できます。接続識別子を使用するには、Oracle Net Listenerが実行中であることが必要です(デフォルト・リスナーを起動するには、lsnrctl start
と入力します)。次に、ユーザーscott
がinst1
という接続識別子を使用してSQL*Loaderを起動する例を示します。
> sqlldr CONTROL=ulcase1.ctl Username: scott@inst1 Password: password
ローカルSQL*Loaderクライアントは接続識別子inst1
(ネット・サービス名)によって定義されるデータベース・インスタンスに接続し、ulcase1.ctl
制御ファイルの指定に従ってデータをロードします。
ノート:
プラガブル・データベース(PDB)にデータをロードするには、SQL*Loaderの起動時に、単純に接続文字列に接続識別子を指定します。
関連項目:
-
接続識別子およびOracle Net Listenerの詳細は、『Oracle Database Net Services管理者ガイド』を参照してください。
-
PDBの詳細は、『Oracle Database概要』を参照してください。
親トピック: SQL*Loaderの起動
8.2 SQL*Loaderのコマンドライン・パラメータ
この項では、SQL*Loaderの各コマンドライン・パラメータについて説明します。
ここで使用されているコマンドライン・パラメータのデフォルト値および最大値は、UNIXベースのシステムでの値です。これらの値はオペレーティング・システムによって異なります。詳細は、ご使用のオペレーティング・システム固有のOracleマニュアルを参照してください。
- BAD
- BINDSIZE
- COLUMNARRAYROWS
- CONTROL
- DATA
- DATE_CACHE
- DEFAULTS
- DEGREE_OF_PARALLELISM
- DIRECT
- DIRECT_PATH_LOCK_WAIT
- DISCARD
- DISCARDMAX
- DNFS_ENABLE
- DNFS_READBUFFERS
- EMPTY_LOBS_ARE_NULL
- ERRORS
- EXTERNAL_TABLE
- FILE
- HELP
- LOAD
- LOG
- MULTITHREADING
- NO_INDEX_ERRORS
- PARALLEL
- PARFILE
- PARTITION_MEMORY
- READSIZE
- RESUMABLE
- RESUMABLE_NAME
- RESUMABLE_TIMEOUT
- ROWS
- SDF_PREFIX
- SILENT
- SKIP
- SKIP_INDEX_MAINTENANCE
- SKIP_UNUSABLE_INDEXES
- STREAMSIZE
- TRIM
- USERID
親トピック: SQL*Loaderコマンドライン・リファレンス
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
親トピック: SQL*Loaderのコマンドライン・パラメータ
8.2.2 BINDSIZE
デフォルト: 256000
用途
構文および説明
BINDSIZE=n
バインド配列は、SQL*Loaderがロード対象のデータを格納するメモリー内の領域です。バインド配列が一杯の場合、データはデータベースに転送されます。バインド配列のサイズは、BINDSIZE
およびREADSIZE
パラメータによって制御されます。
BINDSIZE
で指定されたバインド配列サイズは、デフォルト・サイズ(システムによって異なる)およびROWS
に基づいて計算されたサイズよりも優先されます。
制限事項
-
BINDSIZE
パラメータは、従来型パス・ロードでのみ使用します。
例
次のBINDSIZE
の指定では、バインド配列の最大サイズを356,000バイトに制限します。
BINDSIZE=356000
親トピック: SQL*Loaderのコマンドライン・パラメータ
8.2.3 COLUMNARRAYROWS
デフォルト: 5000
用途
COLUMNARRAYROWS
パラメータでは、行数を指定してダイレクト・パス列配列に割り当てます。
構文および説明
COLUMNARRARYROWS=n
このパラメータの値は、SQL*Loaderでは計算されません。値を指定するか、またはデフォルトを使用する必要があります。
例
次の例では、ダイレクト・パス列配列に1000行を割り当てるように指定します。
COLUMNARRAYROWS=1000
親トピック: SQL*Loaderのコマンドライン・パラメータ
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
親トピック: SQL*Loaderのコマンドライン・パラメータ
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
親トピック: SQL*Loaderのコマンドライン・パラメータ
8.2.6 DATE_CACHE
デフォルト: 使用可能(1000
要素)。日付キャッシュ機能を完全に使用禁止にするには、0(ゼロ)に設定します。
用途
DATE_CACHE
パラメータは、日付キャッシュ・サイズ(エントリ数)を指定します。日付キャッシュは、テキスト文字列から内部の日付書式への変換結果を格納するために使用されます。このキャッシュが有効なのは、テキスト形式から日付書式に変換する場合と比べて、日付の検索コストが非常に低くなるためです。データ・ファイルに同じ日付が繰り返して存在する場合は、日付キャッシュを使用することで、ダイレクト・パス・ロードの速度を向上できます。
構文および説明
DATE_CACHE=n
必要に応じて、すべての表に固有の日付キャッシュが作成されます。日付キャッシュは、表への格納のためにデータ型変換が必要な日付値またはタイムスタンプ値が1つ以上ロードされた場合にのみ作成されます。
日付キャッシュ機能は、デフォルトで使用可能です。デフォルトの日付キャッシュ・サイズは1000要素です。デフォルトのサイズを使用し、1000を超える一意の入力値をロードすると、日付キャッシュ機能は、この表に対して自動的に使用禁止となります。ただし、デフォルトを変更して0以外の日付キャッシュ・サイズを指定し、キャッシュ量がこのサイズを超えた場合、キャッシュは使用禁止になりません。
ログ・ファイルに含まれている日付キャッシュ統計(エントリ数、ヒット数、ミス数)を使用して、将来、同様のロードを行うときのためにキャッシュのサイズを調整できます。
関連項目:
制限事項
-
日付キャッシュ機能は、ダイレクト・パス・ロードと外部表ロードでのみ使用できます。
例
次の指定では、日付キャッシュ機能を完全に使用禁止にします。
DATE_CACHE=0
親トピック: SQL*Loaderのコマンドライン・パラメータ
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
親トピック: SQL*Loaderのコマンドライン・パラメータ
8.2.8 DEGREE_OF_PARALLELISM
デフォルト: NONE
用途
構文および説明
DEGREE_OF_PARALLELISM=[degree-num|DEFAULT|AUTO|NONE]
degree-num
を指定する場合、1からnの整数値にする必要があります。
DEFAULT
を指定すると、(AUTO
のデフォルト・パラメータ値ではなく)データベースのデフォルトの並列度が使用されます。
AUTO
を使用すると、Oracle Databaseによってロードの並列度が自動的に設定されます。
NONE
を指定すると、ロードはパラレルに実行されません。
関連項目:
-
パラレル実行の詳細は、『Oracle Database VLDBおよびパーティショニング・ガイド』を参照してください。
制限事項
-
DEGREE_OF_PARALLELISM
パラメータは、外部表ロード方法が使用される場合にのみ有効です。
例
次の例では、ロードの並列度を3に設定します。
DEGREE_OF_PARALLELISM=3
親トピック: SQL*Loaderのコマンドライン・パラメータ
8.2.9 DIRECT
デフォルト: FALSE
用途
DIRECT
パラメータでは、従来型パスまたはダイレクト・パスのどちらのロード方法を使用するかを指定します。
構文および説明
DIRECT=[TRUE | FALSE]
TRUE
値はダイレクト・パス・ロードを指定します。FALSE
値は従来型パス・ロードを指定します。
関連項目:
例
次の例では、従来型パス・モードを使用してロードを実行するように指定します。
DIRECT=FALSE
親トピック: SQL*Loaderのコマンドライン・パラメータ
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は表のロックの試行時に生成されたエラーを返します。
親トピック: SQL*Loaderのコマンドライン・パラメータ
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/
親トピック: SQL*Loaderのコマンドライン・パラメータ
8.2.12 DISCARDMAX
デフォルト: ALL
用途
DISCARDMAX
パラメータは、データ・ロードが終了する前に、許可する廃棄レコードの数を指定します。
構文および説明
DISCARDMAX=n
最初の廃棄レコードで停止するには、値0を指定します。
DISCARDMAX
が指定されているが、DISCARD
パラメータは指定されていない場合、廃棄ファイルの名前は、拡張子.dsc
が付けられたデータ・ファイルの名前になります。
例
次の例では、ロードが終了するまでに25個の破棄レコードが許可されます。
DISCARDMAX=25
親トピック: SQL*Loaderのコマンドライン・パラメータ
8.2.13 DNFS_ENABLE
デフォルト: TRUE
用途
構文および説明
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クライアントの有効化の詳細は、使用しているプラットフォームの『Oracle Databaseインストレーション・ガイド』を参照してください。
例
次の例では、ロード中の入力データ・ファイルでのDirect NFSクライアントの使用を無効にします。
DNFS_ENABLE=FALSE
親トピック: SQL*Loaderのコマンドライン・パラメータ
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
親トピック: SQL*Loaderのコマンドライン・パラメータ
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,,
親トピック: SQL*Loaderのコマンドライン・パラメータ
8.2.16 ERRORS
デフォルト: 50
用途
ERRORS
パラメータでは、許可する挿入エラーの最大数を指定します。
構文および説明
ERRORS=n
発生したエラーの数がERRORS
に指定された値を超えると、SQL*Loaderによりロードが中止されます。その前までに挿入されたデータはコミットされます。
エラーを許容しない場合は、ERRORS=0
を設定します。エラーを無制限に許容する場合は、非常に大きい値を指定します。
SQL*Loaderでは、すべての表の間でレコードの整合性を保つように処理されます。つまり、複数の表をロードする場合は、エラーの数がこの上限を超えても、すぐにはロード処理が中止されません。SQL*Loaderでは、複数の表のロードに対して許容最大数のエラーが検出されても、行のロードは続行され、すでに表にロードされた有効な行は確実にすべての表にロードされます。また、拒否された行はすべての表から削除されます。
どのような場合でも、SQL*Loaderでは、エラーになったレコードが不良ファイルに書き込まれます。
例
次の例では、ロードの挿入エラーの最大数を25に指定します。それを超えると、ロードは終了します。
ERRORS=25
親トピック: SQL*Loaderのコマンドライン・パラメータ
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で次の手順を実行します。
-
任意の表にロードされる入力データ・ファイルのすべてのフィールドを記述する表を、データベースに作成します。
-
INSERT
文を作成して、データの外部表記述からこの表をロードします。 -
制御ファイルのすべての表に
INSERT
文を実行します。
実行例については、事例5にEXTERNAL_TABLE=GENERATE_ONLY
パラメータを追加して実行します。外部表に一意の名前を保証するため、SQL*Loaderではすべてのフィールド用に生成された名前を使用します。これは、フィールド名が制御ファイル内の異なる表の間で一意でないことがあるためです。
関連項目:
-
事例の使用方法の詳細は、「SQL*Loaderの事例」を参照してください
制限事項
-
SQL*Loaderを介して外部表からデータベース表にデータを挿入する場合、ユリウス日は使用できません。この問題を解決するには、次の例に示すとおり、
TO_DATE
およびTO_CHAR
を使用してユリウス日書式を変換します。TO_CHAR(TO_DATE(:COL1, 'MM-DD-YYYY'), 'J')
-
外部表からデータベース表にデータを挿入する場合、オブジェクト要素には組込み関数およびSQL文字列は使用できません。
例
EXTERNAL_TABLE=EXECUTE
親トピック: SQL*Loaderのコマンドライン・パラメータ
8.2.18 FILE
デフォルト: デフォルト値は設定されていません。
用途
FILE
パラメータでは、エクステントの割当て元となるデータベース・ファイルを指定します。
関連項目:
構文および説明
FILE=tablespace_file
SQL*Loaderの異なるプロセスに対するFILE
パラメータの値を変えることによって、データがシステムにロードされるときのディスクの競合を最小限に抑えることができます。
制限事項
-
FILE
パラメータは、ダイレクト・パスのパラレル・ロードでのみ使用します。
親トピック: SQL*Loaderのコマンドライン・パラメータ
8.2.19 HELP
SQL*LoaderのHELP
コマンドでは、SQL*Loaderユーティリティのオンライン・ヘルプが表示されます。
デフォルト: FALSE
構文および説明
HELP = [TRUE | FALSE]
HELP=TRUE
を指定した場合は、SQL*LoaderによってすべてのSQL*Loaderのコマンドライン・パラメータの要約が表示されます。
すべてのSQL*Loaderのコマンドライン・パラメータの要約は、コマンドラインでsqlldr -help
と入力して表示することもできます。
親トピック: SQL*Loaderのコマンドライン・パラメータ
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個のみが実際に表にロードされます。
親トピック: SQL*Loaderのコマンドライン・パラメータ
8.2.21 LOG
デフォルト: 拡張子が.log
の制御ファイル名
用途
構文および説明
LOG=[[directory/][log_file_name]]
LOG
パラメータを指定する場合、ディレクトリ名またはファイル名(あるいはその両方)を指定する必要があります。
ディレクトリ名を指定しない場合、デフォルトでカレント・ディレクトリが使用されます。
ファイル名なしでディレクトリ名を指定した場合、デフォルトのログ・ファイル名が使用されます。
例
次の例では、カレント・ディレクトリにemp1.log
というログ・ファイルを作成します。拡張子を指定しない場合でも、デフォルトの.log
が使用されます。
LOG=emp1
親トピック: SQL*Loaderのコマンドライン・パラメータ
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
親トピック: SQL*Loaderのコマンドライン・パラメータ
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
親トピック: SQL*Loaderのコマンドライン・パラメータ
8.2.24 PARALLEL
デフォルト: FALSE
用途
PARALLEL
パラメータは、ダイレクト・パスまたは外部表を使用するロードによって、複数の同時セッションで同じ表にデータをロードできるかどうかを指定します。
構文および説明
PARALLEL=[TRUE | FALSE]
関連項目:
制限事項
-
PARALLEL
パラメータは、従来型パス・ロードでは無効です。
例
次の例では、パラレルにロードを実行するように指定します。
PARALLEL=TRUE
親トピック: SQL*Loaderのコマンドライン・パラメータ
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
制限事項
-
通常は問題ありませんが、システムによっては、パラメータ指定の中で等号(=)の前後に空白を挿入できないものもあります。
例
「構文および説明」の例を参照してください。
親トピック: SQL*Loaderのコマンドライン・パラメータ
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
親トピック: SQL*Loaderのコマンドライン・パラメータ
8.2.27 READSIZE
デフォルト: 1048576
用途
デフォルトを使用しない場合は、READSIZE
パラメータを使用して読取りバッファのサイズ(バイト単位)を指定できます。
構文および説明
READSIZE=n
従来型パス・ロードの方法では、バインド配列は、読取りバッファのサイズによって制限されます。そのため、読取りバッファを大きくすると、コミット操作を実行する前に、より多くのデータを読み取ることができるというメリットがあります。
たとえば、READSIZE
に1000000を設定すると、コミットを実行する前に、SQL*Loaderによって、データ・ファイルから1,000,000バイト単位で読取りを実行できます。
ノート:
READSIZE
にBINDSIZE
より小さい値を指定した場合、READSIZE
の値は増加します。
「BINDSIZE」を参照してください。
制限事項
例
次の例では、読取りバッファのサイズを500,000バイトに設定します(この設定では、デフォルト値またはデフォルトを超える値が使用されている場合より多くのコミット操作が必要になります)。
READSIZE=500000
親トピック: SQL*Loaderのコマンドライン・パラメータ
8.2.28 RESUMABLE
デフォルト: FALSE
用途
構文および説明
RESUMABLE=[TRUE | FALSE]
関連項目:
-
再開可能な領域割当ての詳細は、『Oracle Database管理者ガイド』を参照してください。
制限事項
-
このパラメータはデフォルトでは無効なため、関連する
RESUMABLE_NAME
パラメータおよびRESUMABLE_TIMEOUT
パラメータを使用するには、RESUMABLE=TRUE
を設定する必要があります。
例
次の例では、再開可能な領域割当てを有効にします。
RESUMABLE=TRUE
親トピック: SQL*Loaderのコマンドライン・パラメータ
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'
親トピック: SQL*Loaderのコマンドライン・パラメータ
8.2.30 RESUMABLE_TIMEOUT
デフォルト: 7200
秒(2時間)
用途
RESUMABLE_TIMEOUT
パラメータでは、エラー修正に必要な時間を秒単位で指定します。
構文および説明
RESUMABLE_TIMEOUT=n
タイムアウト時間内にエラーを修正できない場合は、文の実行が途中で終了します。
制限事項
-
RESUMABLE
パラメータをTRUE
に設定して、再開可能な領域割当てを有効にしないかぎり、このパラメータは無視されます。
例
次の例では、10分(600秒)以内にエラーを修正する必要があることを指定します。
RESUMABLE_TIMEOUT=600
親トピック: SQL*Loaderのコマンドライン・パラメータ
8.2.31 ROWS
デフォルト: 従来型パスのデフォルトは64です。ダイレクト・パスのデフォルトはすべての行です。
用途
従来型パス・ロードでは、ROWS
パラメータでバインド配列の行数を指定します。ダイレクト・パス・ロードでは、ROWS
パラメータでデータの保存前にデータ・ファイルから読み取る行数を指定します。
構文および説明
ROWS=n
従来型パス・ロードの場合のみ: ROWS
パラメータでバインド配列の行数を指定します。行の最大数は65534です。詳細は、「バインド配列および従来型パス・ロード」を参照してください。
ダイレクト・パス・ロードの場合のみ: ROWS
パラメータでデータ・ファイルからデータのセーブ前に読み込む行数を指定します。デフォルトでは、ロード終了時に、すべての行の読取りおよびデータ・セーブが1回実行されます。詳細は、「データ・セーブを使用したデータ損失の防止」を参照してください。1回のセーブで実際に表にロードされる行のおよその数は、ROWS
の値から、最後のセーブ以降に廃棄および拒否されたレコードの数を引いた数です。
ノート:
ROWS
に低い値を指定し、表圧縮を使用してデータを圧縮しようとすると、通常は圧縮比が低下します。データの圧縮には、高い値を指定するかデフォルト値を使用することをお薦めします。
制限事項
-
索引構成表(IOT)にデータがロードされる場合、あるいはVARRAY、XML列またはLOBが含まれる表にデータがロードされる場合、
ROWS
パラメータはダイレクト・パス・ロードで無視されます。これは、ロードはそのまま実行されますが、セーブポイントは処理されないことを意味します。
例
従来型パス・ロードでは、指定した値が許容可能な最大行数の65534を超えているため、次の例はエラーになります。
ROWS=65900
親トピック: SQL*Loaderのコマンドライン・パラメータ
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/
親トピック: SQL*Loaderのコマンドライン・パラメータ
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
: すべての抑止値(HEADER
、FEEDBACK
、ERRORS
、DISCARDS
およびPARTITIONS
パラメータ)を実装します。
例
たとえば、画面に通常表示されるヘッダーとフィードバック・メッセージが表示されないようにするには、コマンドラインの引数で次のように指定します。
SILENT=HEADER, FEEDBACK
親トピック: SQL*Loaderのコマンドライン・パラメータ
8.2.34 SKIP
デフォルト: 0 (レコードは1件もスキップされません。)
用途
SKIP
パラメータは、ファイルの先頭から何件の論理レコードをロード対象外とするかを指定します。これによって、すでに処理されているレコードをロードすることなく、なんらかの理由で中断されたロードを継続できます。
構文および説明
SKIP=n
SKIP
パラメータは、すべての従来型ロード、単一表のダイレクト・パス・ロード、各表にロードされるレコード数が同一の場合の複数表のダイレクト・パス・ロードに使用されます。各表にロードされるレコード数が異なる場合、複数表のダイレクト・パス・ロードには使用できません。
WHEN
句を使用し、セカンダリ・データもロード対象となる場合、そのセカンダリ・データは、プライマリ・データ・ファイルのレコードに対してWHEN
句が正常に実行された場合にのみスキップされます。
関連項目:
制限事項
-
SKIP
パラメータは、外部表のロードには使用できません。
例
次の例では、ロードを続行する前にデータ・ファイル内の最初の500件の論理レコードをスキップします。
SKIP=500
親トピック: SQL*Loaderのコマンドライン・パラメータ
8.2.35 SKIP_INDEX_MAINTENANCE
デフォルト: FALSE
用途
構文および説明
SKIP_INDEX_MAINTENANCE=[TRUE | FALSE]
このパラメータをTRUE
に設定すると、索引パーティションには、索引キーが追加されるかわりに索引使用禁止が設定されます(索引セグメントと、その索引が付けられているデータとの整合性がとれないため)。ロードの影響を受けない索引セグメントについては、ロード前の状態が保持されます。
SKIP_INDEX_MAINTENANCE
パラメータ:
-
ローカル索引とグローバル索引の両方に適用できます。
-
索引を持つオブジェクトのパラレル・ロードを実行できます(
PARALLEL
パラメータとともに指定)。 -
グローバル索引を持つ表に単一パーティションをロードできます(
INTO TABLE
句でPARTITION
パラメータを指定)。 -
ロードによって索引使用禁止状態に設定された索引や索引パーティションのリストを(SQL*Loaderログ・ファイルに)作成します。
制限事項
-
SKIP_INDEX_MAINTENANCE
パラメータは、従来型パス・ロードには適用されません。 -
一意で使用禁止状態の索引に対しては、索引メンテナンスをスキップできません。この原則は、DML操作の場合にも、ダイレクト・パスでDMLと整合性を持つロードを行う場合にも適用されます。
例
次の例では、ダイレクト・パス・ロードの操作中に索引メンテナンスが発生しないようにします。
SKIP_INDEX_MAINTENANCE=TRUE
親トピック: SQL*Loaderのコマンドライン・パラメータ
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
親トピック: SQL*Loaderのコマンドライン・パラメータ
8.2.37 STREAMSIZE
デフォルト: 256000
用途
STREAMSIZE
パラメータで、クライアントからサーバーへ送ったデータのストリーム・サイズ(バイト単位)を指定します。
構文および説明
STREAMSIZE=n
STREAMSIZE
パラメータでは、ダイレクト・パス・ストリーム・バッファのサイズを指定します。列配列の行数(COLUMNARRAYROWS
パラメータで指定)によって、ストリーム・バッファが作成される前にロードされた行数を判断します。これらのパラメータの最適値は、使用されるシステム、入力データ型およびOracleの列データ型に応じて異なります。独自の構成用に最適な値を使用することで、SQL*Loaderのログ・ファイルでの経過時間が少なくなります。
制限事項
-
STREAMSIZE
パラメータは、ダイレクト・パス・ロードにのみ適用されます。 -
STREAMSIZE
の最小値は65536です。65536未満の値が指定された場合、かわりに65536が使用されます。
例
次の例では、ダイレクト・パス・ストリーム・バッファのサイズを300,000バイトに指定します。
STREAMSIZE=300000
親トピック: SQL*Loaderのコマンドライン・パラメータ
8.2.38 TRIM
デフォルト: LDRTRIM
用途
TRIM
パラメータでは、テキスト・フィールドの先頭またはテキスト・フィールドの末尾(あるいはその両方)から空白を切り捨てることを指定します。空白には、空白文字およびその他の印字されない文字(タブ、LF、改行など)が含まれます。
構文および説明
TRIM=[LRTRIM | NOTRIM | LTRIM | RTRIM | LDRTRIM]
TRIM
パラメータの有効な値は次のとおりです。
フィールドから文字を切り捨てない場合は、NOTRIM
を使用します。この設定では、通常、最高のパフォーマンスを得ることができます。
フィールドから文字を切り捨てる場合は、LRTRIM
、LTRIM
およびRTRIM
を使用します。LRTRIM
を使用すると、先頭と後続の空白の両方が切り捨てられます。先頭の空白を切り捨てるには、LTRIM
を使用します。後続の空白を切り捨てるには、RTRIM
を使用します。
LDRTRIM
は、次の場合を除いて、NOTRIM
と同様です。
-
フィールドがデリミタ付きのフィールドではない場合、空白は右から切り捨てられる。
-
フィールドが
OPTIONALLY
ENCLOSED
BY
で指定されたデリミタ付きフィールドで、オプションの囲みが特定のインスタンスで欠落している場合、空白は左から切り捨てられる。
すべてが空白のフィールドに対して切捨てを指定する場合、そのフィールドはNULL
に設定されます。
制限事項
-
TRIM
パラメータは、外部表ロード方法が使用される場合にのみ有効です。
例
次の例では、どのフィールドからも文字が切り捨てられないロード操作が実行されます。
TRIM=NOTRIM
親トピック: SQL*Loaderのコマンドライン・パラメータ
8.2.39 USERID
デフォルト: 省略すると、システムから入力を要求されます。スラッシュのみを入力すると、デフォルトとしてオペレーティング・システムのログイン名がUSERID
に適用されます。
用途
構文および説明
USERID=[username | / | SYS]
ユーザー名を指定します。セキュリティ上の理由から、コマンドラインにはユーザー名のみを指定することをお薦めします。SQL*Loaderによってパスワードの入力を要求されます。
USERID
パラメータを指定しない場合、その入力を求められます。スラッシュのみを入力すると、デフォルトとしてオペレーティング・システムのログイン名がUSERID
に適用されます。
ユーザーSYS
として接続する場合は、接続文字列にAS SYSDBA
も指定する必要があります。
制限事項
-
文字列
AS SYSDBA
には空白が含まれるため、一部のオペレーティング・システムでは、接続文字列全体を一重引用符で囲むか、なんらかの方法でリテラルとしてマークする必要があります。また、オペレーティング・システムによっては、コマンドラインの引用符を、バックスラッシュなどでエスケープする必要がある場合もあります。システムの特殊文字および予約文字の詳細は、ご使用のオペレーティング・システム固有のOracleマニュアルを参照してください。
例
次の例では、ユーザー名のhr
を指定します。SQL*Loaderによってパスワードの入力を要求されます。これが指定する最初で唯一のパラメータであるため、パラメータ名のUSERID
を含める必要はありません。
> sqlldr hr Password:
関連項目:
親トピック: SQL*Loaderのコマンドライン・パラメータ
8.3 終了コードによる結果の検査と表示
Oracle SQL*Loaderでは、SQL*Loaderの完了後、すぐに実行結果を確認できます。
SQL*Loaderでは、実行結果をログ・ファイルに記録するのみでなく、プロセス終了コードでレポートすることもできます。。このOracle SQL*Loaderの機能によって、コマンドラインやスクリプトからSQL*Loaderを起動したときにもその結果を確認できます。表8-1に、様々な結果の終了コードを示します。
表8-1 SQL*Loaderの終了コード
結果 | 終了コード |
---|---|
すべての列が正常にロードされた |
|
すべての行または一部の行が拒否された |
|
すべての行または一部の行が廃棄された |
|
ロードが中断された |
|
コマンドラインまたは構文エラー |
|
SQL*Loaderに対してリカバリ不能なOracleエラー |
|
OS関連エラー(ファイルのオープン/クローズ、mallocなど) |
|
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では、シェルの終了コードを調べてロード結果を確認できます。
親トピック: SQL*Loaderコマンドライン・リファレンス