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

通常のSQL*Loaderを起動するには、コマンドライン・パラメータを使用します。

ノート:

通常のSQL*LoaderとSQL*Loaderエクスプレス・モードでは、同じパラメータをいくつか共有していますが、これらのパラメータの動作はユーティリティごとに異なる場合があります。ここで説明するパラメータの説明は、通常のSQL*Loaderを対象としています。SQL*Loader Expressのオプションについては、SQL*Loader Expressのパラメータを参照してください。

8.1 SQL*Loaderの起動

SQL*Loaderの起動方法と、ロードの実行方法を管理するパラメータの指定方法を学習します。

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

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

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

SQL*Loaderパラメータの指定方法については、次の例を参照してください。

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

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

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

> sqlldr scott ulcase1.ctl
Password: password
 

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

> sqlldr scott CONTROL=ulcase1.ctl ulcase1.log

コマンドを実行するには、LOGパラメータを具体的に指定してコマンドを入力する必要があります。

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

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を管理します。

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

8.2.1 BAD

SQL*LoaderのBADコマンドライン・パラメータでは、最初のデータ・ファイル指定に関連付けられた不良ファイルの名前と場所(またはそのどちらか)を指定します。

デフォルト

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

用途

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

構文および説明

BAD=[directory/][filename]

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

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

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

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

  • BADパラメータでディレクトリを指定して、ファイル名を指定していない場合は、指定したディレクトリが使用され、そのファイルのデフォルト名は、データ・ファイルの名前に拡張子またはファイル・タイプの.badが付いたものになります。

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

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

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

BAD=emp1

8.2.2 BINDSIZE

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

デフォルト

256000

用途

バインド配列の最大サイズ(バイト単位)を指定します。

構文および説明

BINDSIZE=n

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

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

制限事項

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

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

BINDSIZE=356000

8.2.3 COLUMNARRAYROWS

SQL*LoaderのCOLUMNARRAYROWSコマンドライン・パラメータでは、ダイレクト・パス列配列に割り当てる行数を指定します。

デフォルト

5000

用途

ダイレクト・パス列配列に割り当てる行数を指定します。

構文および説明

COLUMNARRARYROWS=n

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

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

COLUMNARRAYROWS=1000

8.2.4 COMPRESS_STREAM

SQL*Loaderのコマンドライン・パラメータCOMPRESS_STREAMでは、クライアントからサーバーに送信されるダイレクト・パスAPIストリーム・データを圧縮することを指定します。

デフォルト

FALSE

構文および説明

COMPRESS_STREAM=[TRUE|FALSE]

COMPRESS_STREAMパラメータは、Oracle Database 23c以降で、自動パラレル・ロードで使用されます。これにより、ダイレクト・パスAPIストリーム・データをクライアントからサーバーへの送信時に圧縮するように指定できます。このパラメータをTRUEに設定すると、遠隔サーバーのロード時のパフォーマンスが向上します。

リモートでクライアントからサーバーにファイルをロードする場合は、このパラメータを使用すると、ロード・パフォーマンスが向上するかどうかを確認できます。このパラメータを使用すると、STREAMSIZEパラメータで指定した値を上書きできます。

制限事項

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

  • MULTITHREADING=TRUEを設定すると、このオプションが無効になります。COMPRESS_STREAMから潜在的なパフォーマンス上の利点を得るには、マルチスレッドがFALSEに設定されていることを確認してください。

次の例では、ダイレクト・パスAPIストリーム・データを圧縮するように指定しています。

COMPRESS_STREAM=TRUE

8.2.5 CONTROL

SQL*LoaderのCONTROLコマンドライン・パラメータでは、データのロード方法が記述されているSQL*Loader制御ファイルの名前を指定します。

デフォルト

デフォルトはありません。

用途

データのロード方法が記述されているSQL*Loader制御ファイルの名前を指定します。

構文および説明

CONTROL=control_file_name

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

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

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

CONTROL=emp1

8.2.6 CREDENTIAL

SQL*LoaderのCREDENTIALコマンドライン・パラメータを使用すると、オブジェクト・ストアに格納されているデータの読取りが可能になります。

デフォルト

なし。

用途

SQL*Loaderがオブジェクト・ストアを読み取ることができるようにします。データ・ファイルの場合、オブジェクト・ストアで読み取るデータ・ファイルのURIを指定できます。CREDENTIAL値は、SQL*Loaderを実行しているユーザーに付与される資格証明を指定します。これらの権限により、SQL*Loaderはオブジェクト・ストアにアクセスできます。

構文および説明

次の構文では、変数user-credentialは次のものを使用するためにSQL*Loaderを指定するユーザー資格証明(ユーザー名またはパスワード)です。
oracle.sqlldr.credential.user-credential.username
oracle.sqlldr.credential.user-credential.password

使用上のノート

CREDENTIALパラメータを指定すると、SQL*Loaderは、キーに指定した値をオブジェクト・ストアのユーザー名とパスワードとして使用します。CREDENTIALを使用する前に、orapkiまたはmkstoreコマンドを使用して有効な資格証明をあらかじめ作成しておく必要があります。

ノート:

mkstoreウォレット管理コマンドライン・ツールは、Oracle Database 23cでは非推奨であり、将来のリリースで削除される可能性があります。

ウォレットの管理には、orapkiコマンドライン・ツールの使用をお薦めします。

制限事項

CREDENTIALを指定し、次の条件のいずれかに該当する場合は、エラーが表示されます。

  • Oracle Walletで1つまたは両方のキーが見つかりません
  • DATAパラメータに指定されたファイルがURIではありません。
  • 制御ファイルのINFILE句に指定されたファイルがURIではありません。

データ・ファイルにURIが指定され、CREDENTIALパラメータが指定されていない場合は、エラーが表示されます。

SQL*LoaderでCREDENTALパラメータを使用するには、ウォレットを作成して、データをロードするターゲットのウォレットのアクセス資格証明を定義します。次に、データをロードする権限を付与するユーザーの資格証明を特定します。そのタスクが完了したら、ウォレットの資格証明を使用して、データをターゲット・データベースにロードできます。

たとえば:

  1. ウォレット・パスが/u01/app/oracle/product/walletsで、パスワードがcloud-pw-exampleである場合、orapkiユーティリティを使用してウォレットを作成します。

    % orapki wallet create -wallet /u01/app/oracle/product/wallets  -pwd cloud-pw-example -auto_login
    Oracle PKI Tool Release 20.0.0.0.0 - Production
    
    Version 21.0.0.0.0
    
    Copyright (c) 2004, 2019, Oracle and/or its affiliates. All rights reserved.
    
    Operation is successfully completed.

    ノート:

    実際のパスワードについては、常に業界標準の安全なパスワードのプラクティスに従ってください。
  2. SQL*Loader資格証明のobm_scottユーザーを作成します。このためには、mkstoreユーティリティを使用して、ユーザーID some_user、パスワードsome_passwordで使用できるデータベース接続文字列oracle.sqlldr.credential.obm_scottを定義します。

    % mkstore -wrl /u01/app/oracle/product/wallets -createEntry \
    oracle.sqlldr.credential.obm_scott.username some_username
    
    % mkstore -wrl wallet_location_directory -createEntry oracle.sqlldr.credential.obm_scott.password \
    some_password

    ノート:

    各資格証明では、ユーザーとパスワードのペアは1つのみです。

    両方のmkstoreコマンドにおいて、外部に格納されているobm_scott資格証明のパスワードを提供するよう求められます(この例ではcloud-pw-example)。

  3. 最後に、SQL*Loaderを使用して、作成した資格証明を使用してデータをデータベースにロードします。たとえば:

    % sqlldr sqlldr/cdb1_pdb6 dept.ctl credential=obm_scott log=dept.log  \
    external_table=not_used proxy=https://www.example.com:80 
    次に、データをロードします。この例では、dept.csvです。
    
    
    LOAD DATA
    INFILE  'https://publickeyinfrastorage.example.com/v1/pkistore/dept.csv'
    truncate
    INTO TABLE DEPTOS
    FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
    (DEPTNO, DNAME, LOC)

8.2.7 DATA

SQL*Loaderの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'

注意:

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

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

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

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

DATA=employees

8.2.8 DATE_CACHE

SQL*LoaderのDATE_CACHEコマンドライン・パラメータでは、日付キャッシュのサイズ(エントリ数)を指定します。

デフォルト

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

用途

日付キャッシュのサイズ(エントリ数)を指定します。

日付キャッシュは、テキスト文字列から内部の日付書式への変換結果を格納するために使用されます。このキャッシュが役立つ理由は、テキスト形式から日付形式に変換するよりも、日付を検索するコストのほうがはるかに低いためです。日付ファイルに同じ日付が繰り返し出現する場合は、日付キャッシュを使用することで、ダイレクト・パス・ロードの速度を向上できます。

構文および説明

DATE_CACHE=n

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

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

将来の同様のロードに向けてキャッシュ・サイズを調整する場合は、ログ・ファイルに含まれている日付キャッシュ統計(エントリ数、ヒット数およびミス数)を使用します。

制限事項

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

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

DATE_CACHE=0

関連トピック

8.2.9 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という名前で表を作成します(SQL*Loader制御ファイルの名前はtest.ctlです)。

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/password t.ctl direct=true defaults=ignore

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

sqlldr scott/password t.ctl direct=true

8.2.10 DEGREE_OF_PARALLELISM

SQL*Loaderの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を指定すると、ロードはパラレルに実行されません。

ノート:

AUTOまたはDEFAULTを従来型およびダイレクト・パス・ロードに使用すると、並列化は行われません。

パラレルでの読取りおよびロードを最適化するために、パラメータDEGREE_OF_PARALLELISMおよびREADER_COUNTを最初は小さい値(4など)に設定し、少しずつ大きくして、パフォーマンスが向上するかどうかを確認することをお薦めします。最適な値は、クライアント構成とサーバー構成によって異なります。値が大きすぎると、パフォーマンスが低下する可能性があります。サーバーでより多くの作業が必要な場合(圧縮が使用されている場合など)、パフォーマンスが向上します。

シャード・ロードの場合は、SQL*LoaderによってDEGREE_OF_PARALLELISMを設定することをお薦めします。デフォルトでは、その値はシャードの数と等しくなります。シャードの数が多いために、クライアントで処理するスレッドが多すぎる場合は、DEGREE_OF_PARALLELISMを減らすことで、データに対して複数のパスを実行できます。

制限事項

  • 自動パラレル・ロードは、単一表の場合のみサポートされています。複数のINTO句はサポートされていません。
  • 多数のパーティションの非シャード・パラレル・ロード(特にパーティションごとに数行のみの場合)は、適切に実行されない場合があります。この場合、DEGREE_OF_PARALLELISMパラメータは使用しないでください。

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

DEGREE_OF_PARALLELISM=4

8.2.11 DIRECT

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

デフォルト

FALSE

用途

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

構文および説明

DIRECT=[TRUE | FALSE]

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

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

DIRECT=FALSE

8.2.12 DIRECT_PATH_LOCK_WAIT

SQL*LoaderのDIRECT_PATH_LOCK_WAITコマンドライン・パラメータでは、ダイレクト・パス・ロードの表ロック待機中の動作を制御します。

デフォルト

用途

FALSE

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

構文および説明

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

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

8.2.13 DISCARD

SQL*Loaderの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.14 DISCARDMAX

SQL*LoaderのDISCARDMAXコマンドライン・パラメータでは、データのロードが終了するまでに許可される廃棄レコードの数を指定します。

デフォルト

ALL

用途

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

構文および説明

DISCARDMAX=n

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

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

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

DISCARDMAX=25

8.2.15 DNFS_ENABLE

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

デフォルト

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.16 DNFS_READBUFFERS

DNFS_READBUFFERS SQL*Loaderコマンドライン・パラメータを使用すると、Direct NFSクライアントで使用される読取りバッファの数を制御できます。

デフォルト

4

用途

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

構文および説明

DNFS_READBUFFERS=n

nの値は、指定する読取りバッファの数です。読取りバッファ数を増やすことで、Direct NFSクライアントのファイル・サーバーからの一貫性のない入力/出力(I/O)を補正できます。ただし、大きい値を使用すると、メモリー使用量が増加することがあります。

制限事項

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

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

DNFS_READBUFFERS=10

8.2.17 EMPTY_LOBS_ARE_NULL

SQL*Loaderのコマンドライン・パラメータEMPTY_LOBS_ARE_NULLでは、使用可能なデータが存在しないLOB列を空のLOBではなくNULLに設定するように指定します。

デフォルト

FALSE

用途

SQL*LoaderのEMPTY_LOBS_ARE_NULLパラメータを指定すると、使用可能なデータがないラージ・オブジェクト(LOB)列は、空のLOBではなくNULLに設定されます。使用可能なデータがないLOB列をNULLに設定することで、その変更をデータ・ロード後の後処理で実行する必要がなくなります。

構文および説明

EMPTY_LOBS_ARE_NULL = {TRUE | FALSE}

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

制限事項

ありません。

次の例では、設定empty_lobs_are_null=trueの結果として、c1のLOB列は空の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.18 ERRORS

ERRORS SQL*Loaderコマンドライン・パラメータでは、許可される挿入エラーの最大数を指定します。

デフォルト

50

用途

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

構文および説明

ERRORS=n

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

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

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

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

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

ERRORS=25

8.2.19 EXTERNAL_TABLE

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

デフォルト

NOT_USED

構文および説明

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 DIRECCTORY権限も必要です。

ノート:

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.20 FILE

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

デフォルト

デフォルトはありません。

用途

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

構文および説明

FILE=tablespace_file

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

制限事項

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

8.2.21 GRANULE_SIZE

SQL*Loaderのコマンドライン・パラメータGRANULE_SIZEでは、自動パラレル・ロードでのデータのグラニュルのサイズを指定します。

デフォルト

グラニュル・サイズを指定しない場合、SQL*Loaderでは、リーダーの数とそのサイズに応じて、各ファイルの最適なデフォルト・グラニュル・サイズが計算されます。

構文および説明

GRANULE_SIZE=n

GRANULE_SIZEパラメータは、Oracle Database 23c以降で、自動パラレル・ロードで使用されます。これにより、データ・グラニュルの最大サイズ(バイト単位)を指定できます。csvファイルなど、複数のデータ・グラニュルに分割できるデータ・ファイル形式の場合は、SQL*Loaderにより、パラレル読取りおよびロードのために、データ・ファイルが、各ファイルに最適なグラニュル・サイズを使用して分割されます。このデフォルトを受け入れることをお薦めします。ただし、特定のグラニュル・サイズを指定して、それによってロード・パフォーマンスが向上するかどうかを確認できます。

ノート:

グラニュル・サイズは、READSIZEパラメータ以上にする必要があります。

制限事項

ファイルをグラニュルに分割できない場合、GRANULE_SIZEパラメータは無視されます。

次の例では、16000000バイトのグラニュル・サイズを指定しています。

GRANULE_SIZE=16000000

8.2.22 GSM_HOST

SQL*Loaderのコマンドライン・パラメータGSM_HOSTでは、グローバル・サービス・マネージャ(シャードをパラレルでロードするために必要)があるホストを指定します。

デフォルト

デフォルトはありません。

用途

GSM_HOSTパラメータでは、グローバル・サービス・マネージャがあるホストを指定します。このホスト名は、シャードをパラレルでロードする場合に必要になります。グローバル・データ・サービスのクライアントでは、グローバル・サービス・マネージャを使用して、シャード表に対するすべてのGDS構成およびクライアント接続操作が実行されます。

構文および説明

GSM_HOST=name-of-host

次のSQL*Loaderコマンドラインでは、グローバル・サービス・マネージャがあるホストmyhost1GSM_HOSTパラメータで指定されています。

sqlldr scott/tiger t.ctl gsm_name=shdsrv.shpool.oradbcloud gsm_host=myhost1 gsm_port=4338

8.2.23 GSM_NAME

SQL*Loaderのコマンドライン・パラメータGSM_NAMEでは、グローバル・サービス・マネージャ(シャードをパラレルでロードするために必要)の名前を指定します。

デフォルト

デフォルトはありません。

用途

GSM_NAMEでは、グローバル・サービス・マネージャ(シャードをパラレルでロードするために必要)の名前を指定します。グローバル・データ・サービスのクライアントでは、グローバル・サービス・マネージャを使用して、シャード表に対するすべてのGDS構成およびクライアント接続操作が実行されます。

構文および説明

GSM_NAME=name-of-gsm-manager

このSQL*Loaderコマンドラインでは、グローバル・サービス・マネージャ名shdsrv.shpool.oradbcloudGSM_HOSTパラメータで指定されています。

sqlldr scott/tiger t.ctl gsm_name=shdsrv.shpool.oradbcloud gsm_host=myhost1 gsm_port=4338

8.2.24 GSM_PORT

SQL*Loaderのコマンドライン・パラメータGSM_PORTでは、グローバル・サービス・マネージャ(シャードをパラレルでロードするために必要)のリスナー・ポート番号を指定します。

デフォルト

デフォルトはありません。

用途

GSM_PORTでは、グローバル・サービス・マネージャ(シャードをパラレルでロードするために必要)のリスナー・ポートを指定します。グローバル・データ・サービスのクライアントでは、グローバル・サービス・マネージャを使用して、シャード表に対するすべてのGDS構成およびクライアント接続操作が実行されます。

構文および説明

GSM_PORT=gsm-manager-port-number

このSQL*Loaderコマンドラインでは、グローバル・サービス・マネージャのリスナー・ポート4338GSM_PORTパラメータで指定されています。

sqlldr scott/tiger t.ctl gsm_name=shdsrv.shpool.oradbcloud gsm_host=myhost1 gsm_port=4338

8.2.25 HELP

SQL*Loaderのコマンドライン・パラメータHELPでは、SQL*Loaderユーティリティのオンライン・ヘルプを表示します。

デフォルト

FALSE

構文および説明

HELP = [TRUE | FALSE]

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

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

8.2.26 LOAD

SQL*Loaderのコマンドライン・パラメータ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.27 LOAD_SHARDS

SQL*Loaderのコマンドライン・パラメータLOAD_SHARDSでは、シャード表からロードするシャードのリストを指定します。

デフォルト

シャードのリストが指定されていない場合は、すべてのシャードがロードされます。

用途

LOAD_SHARDSパラメータでは、シャード識別子(シャード名)のカンマ区切りリストを指定します。リストを指定しなかった場合は、SQL*LOADERによってすべてのシャードがロードされます。

シャード表について、自動パラレル・ロードを実行しようとして一部のシャードをロードできなかった場合に、このパラメータを使用します。この問題を解決するには、自動パラレル・ロードを実行し、LOAD_SHARDSパラメータを使用して、以前にロードしようとしてできなかったシャードのリストをSQL*Loaderに提供します。SQL*Loaderでは、LOAD_SHARDSでリストしないシャードは無視されます。

構文および説明

LOAD_SHARDS=shard1,shard2,shard3 . . . 

次のSQL*Loaderコマンドラインでは、LOAD_SHARDSパラメータで、dbs7シャードとdbs23シャードのみをロードするように指定しています。

sqlldr scott/tiger t.ctl gsm_name=shdsrv.shpool.oradbcloud gsm_host=example1 gsm_port=4338 load_shards=dbs7,dbs23

8.2.28 LOG

SQL*Loaderのコマンドライン・パラメータLOGでは、SQL*Loaderがロード処理に関するログ情報を保存するログ・ファイルのディレクトリ・パスとファイル名(またはそのどちらか)を指定します。

デフォルト

カレント・ディレクトリ(値を指定しない場合)。

用途

SQL*Loaderがロード処理に関するログ情報を保存するために使用するログ・ファイルのディレクトリ・パスとファイル名(またはそのどちらか)を指定します。

構文および説明

LOG=[[directory/][log_file_name]]

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

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

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

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

LOG=emp1

8.2.29 MULTITHREADING

SQL*Loaderのコマンドライン・パラメータMULTITHREADINGでは、サーバー・システムでのストリームのロードと同時にクライアント・システムでのストリームの構築を実行できるようにします。

デフォルト

複数CPUシステムではTRUE、単一CPUシステムではFALSE

構文および説明

MULTITHREADING=[TRUE | FALSE]

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

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

制限事項

ノート:

このオプションは通常、自動パラレル・ロードでは無効になっています。有効にすると、パフォーマンスが向上する可能性がありますが、このオプションでは、ダイレクト・パスのパラレル・ロード・スレッドごとに追加のスレッドが追加されることに注意してください。
  • MULTITHREADINGパラメータは、ダイレクト・パス・ロードでのみ使用できます。

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

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

MULTITHREADING=TRUE

8.2.30 NO_INDEX_ERRORS

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

デフォルト

FALSE

構文および説明

NO_INDEX_ERRORS=[TRUE | FALSE]

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

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

制限事項

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

NO_INDEX_ERRORS=TRUE

8.2.31 OPTIMIZE PARALLEL

SQL*LoaderのOPTIMIZE_PARALLELパラメータでは、自動パラレル・ロードでSQL*Loaderに最適パラレル・ロード・オプションを選択可能にする必要があるかどうかを指定します。

デフォルト

TRUE

用途

データに対して使用可能な最速パラレル・ロード・オプションをSQL*Loaderで自動選択可能にするかどうかを示すか、特定の自動パラレル・ロード・モードを指定するかどうかを示します。デフォルトを受け入れることをお薦めします。

構文および説明

OPTIMIZE_PARALLEL=[TRUE|FALSE]

Oracle Database 23c以降では、SQL*Loaderで、パラレル・ロードを自動的に実行し、非シャード表であるかシャード表かであるかに応じて、表に使用可能な最速モードを選択できます。これは、自動パラレル・ロードのデフォルト・オプションです。デフォルトを受け入れることをお薦めします。ただし、このパラメータを使用すると、SQL*Loaderで選択されるパラレル・ロード・モードを上書きできます。これにより、代替となるクライアント・パラレル・モードを試して、そちらのほうがさらに高速に実行可能かどうかを確認できます。

次の例では、SQL*Loaderによって最適パラレル・ロード・オプションが自動選択されないように指定し、かわりにロード・オプションを指定できるようにしています。

OPTIMIZE_PARALLEL=FALSE

8.2.32 PARALLEL

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

デフォルト

FALSE

用途

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

ノート:

PARALLELのデフォルトはFALSEですが、ダイレクト・パスの自動パラレル・ロードを使用し、パラメータDEGREE_OF_PARALLELISMを設定すると、並列度を実装できる場合は、ダイレクト・パスに対してPARALLELが自動的にTRUEに設定されるため、PARALLELを指定する必要はありません。

構文および説明

PARALLEL=[TRUE | FALSE]

制限事項

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

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

PARALLEL=TRUE

8.2.33 PARFILE

SQL*Loaderのコマンドライン・パラメータ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.34 PARTITION_MEMORY

SQL*Loaderのコマンドライン・パラメータPARFILEでは、多数のパーティションのロード時に使用するメモリーの量を指定します。

デフォルト

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

用途

多数のパーティションのロード時に使用するメモリーの量を指定します。このパラメータは、ロードするパーティションの数が大量のメモリーを消費し、使用可能なメモリーを超える可能性がある場合に役立ちます。(この状況は、特にデータが圧縮されている場合に発生する可能性があります)。

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

構文および説明

PARTITION_MEMORY=n

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

n0 (デフォルト)に設定されている場合、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.35 READER_COUNT

SQL*Loaderコマンドライン・パラメータREADER_COUNTでは、自動パラレル・ロードでの入力データ・ファイル・リーダー・スレッドの数を指定します。

デフォルト

1

構文および説明

READER_COUNT=n

READER_COUNTパラメータのユースケースは、使用する自動パラレル・ロードのモードによって異なります。

非シャード表の場合は、モード1のパラレル・ロードが最速のオプションです。このモードではREADER_COUNTパラメータは無視されます。これは、SQL*Loaderによってデータ・ファイルがデータのグラニュルに自動的に分割され、スレッドによってこれらのグラニュルが解析されロードされるためです。

モード2のパラレル・ロードを使用する場合は、DEGREE_OF_PARALLELISMによってローダー・スレッドの数が決まります。これは、シャード表をパラレルでロードするときの、使用可能な最速モードです。しかしながら、非シャード表をロードするときは、これは非最適化モードです。モード2では、リーダー・スレッドとローダー・スレッドはログ・ファイルにおいてreaderスレッドまたはloaderスレッドとして別々に示されます。

モード3の自動パラレル・ロードを使用するときには、SQL*Loaderのリーダーまたはローダーによって、シャード表のすべてのファイル(グラニュルなし)が読み取られます。

READER_COUNTパラメータにより、ファイルの読取りに使用できるリーダーの数を決定します。

制限事項

次の例では、リーダー・スレッドの数を5に設定します。

READER_COUNT=5

8.2.36 READSIZE

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

デフォルト

1048576

構文および説明

READSIZE=n

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

たとえば、READSIZE1000000に設定すると、SQL*Loaderはコミットが必要になるまでにデータ・ファイルから1,000,000バイト単位の読取りを実行できます。

ノート:

READSIZEの値にBINDSIZEより小さい値を指定した場合、READSIZEの値は増分されます。

自動パラレル・ロードについて、シャードをロードするときの読取りバッファを増やすには、READSIZEパラメータを使用して、より大きいバッファ値に設定します。

制限事項

  • READSIZEパラメータは、データ・ファイルからデータを読み込む場合にのみ使用されます。制御ファイルからレコードを読み込む場合は、常に64KBという値がREADSIZEとして使用されます。
  • READSIZEパラメータは、ラージ・オブジェクト(LOB)には反映されません。LOB読取りバッファのサイズは、64KBに固定されています。
  • 最大許容サイズはプラットフォームによって異なります。

次の例では、読取りバッファのサイズを500,000バイトに設定します(この設定では、デフォルト値またはデフォルトよりも大きな値を使用した場合よりも頻繁なコミット操作が必要になります)。

READSIZE=500000

関連トピック

8.2.37 RESUMABLE

SQL*Loaderのコマンドライン・パラメータRESUMABLEでは、再開可能な領域割当てを有効および無効にします。

デフォルト

FALSE

用途

再開可能な領域割当てを有効化および無効化します。

構文および説明

RESUMABLE=[TRUE | FALSE]

関連項目:

再開可能な領域割当ての詳細は、『Oracle Database管理者ガイド』を参照してください。

制限事項

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

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

RESUMABLE=TRUE

8.2.38 RESUMABLE_NAME

SQL*Loaderのコマンドライン・パラメータRESUMABLE_NAMEでは、再開可能な文を特定します。

デフォルト

'User USERNAME(USERID), Session SESSIONID, Instance INSTANCEID'

構文および説明

RESUMABLE_NAME='text_string'

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

制限事項

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

RESUMABLE_NAME='my resumable sql'

8.2.39 RESUMABLE_TIMEOUT

SQL*Loaderのコマンドライン・パラメータRESUMABLE_TIMEOUTでは、エラー修正までに必要な時間(秒単位)を指定します。

デフォルト

7200秒(2時間)

構文および説明

RESUMABLE_TIMEOUT=n

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

制限事項

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

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

RESUMABLE_TIMEOUT=600

8.2.40 ROWS

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

デフォルト

バインド配列の行数を指定します。従来型パスのデフォルトは64です。ダイレクト・パスのデフォルトはすべての行です。

用途

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

構文

ROWS=n

従来型パス・ロードの説明

従来型パス・ロードの場合のみ、ROWSパラメータでバインド配列の行数を指定します。行の最大数は65534です。

ダイレクト・パス・ロードの説明

ダイレクト・パス・ロードの場合のみ、データの保存前にデータ・ファイルから読み取る行数をROWSパラメータで特定します。デフォルトでは、ロード終了時に、すべての行の読取りおよびデータ・セーブが1回実行されます。1回のセーブで実際に表にロードされる行のおよその数は、ROWSの値から、最後のセーブ以降に廃棄および拒否されたレコードの数を引いた数です。

ノート:

ROWSに小さい値を指定したときに、表圧縮を使用してデータを圧縮しようとすると、通常は圧縮比が低下します。データの圧縮時には、大きな値を指定するか、デフォルト値をそのまま使用してください。

制限事項

  • ダイレクト・パス・ロードでは、索引構成表(IOT)にデータをロードする場合や、VARRAY型、XML列またはラージ・オブジェクト(LOB)を格納している表にデータをロードする場合に、ROWSパラメータが無視されます。これは、ロードはそのまま実行されますが、セーブポイントは処理されないことを意味します。
  • ダイレクト・パス・ロードでは、LONG VARCHARデータ型のデータがLOBとして格納されるため、ROWSパラメータは使用できません。ダイレクト・パス・ロードでROWSパラメータをLONG VARCHARデータとともに使用しようとすると、ORA-39777エラーが表示されます(LOB列のロード時のデータ・セーブは許可されません)。

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

ROWS=65900

8.2.41 SDF_PREFIX

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

デフォルト

デフォルトはありません。

用途

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

ノート:

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

構文および説明

SDF_PREFIX=string

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

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

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

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

制限事項

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

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

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

8.2.42 SILENT

SQL*Loaderのコマンドライン・パラメータSILENTでは、SQL*Loaderの操作中に画面に出力される内容の一部を抑止します。

デフォルト

デフォルトはありません。

構文および説明

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

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

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

  • FEEDBACK: 通常はロードの際に画面に表示される「コミット・ポイントに到達」メッセージとステータス・メッセージを非表示にします。ただし、画面には、引き続き「XX Rows successfully loaded.」と出力されます。

  • ERRORS: Oracleエラーがレコードで生成される際に発生する、ログ・ファイル内のデータ・エラー・メッセージを抑止します。ただし、拒否レコード件数は出力されます。

  • DISCARDS: 廃棄ファイルに書き込まれる各レコードについて、ログ・ファイル内のメッセージを抑止します。

  • PARTITIONS: パーティション表のダイレクト・ロード中に、パーティション毎統計のログ・ファイルへの書込みを無効にします。

  • ALL: すべての抑止値(HEADER、FEEDBACK、ERRORS、DISCARDSおよびPARTITIONS パラメータ)を実装します。ただし、画面には、引き続き「XX Rows successfully loaded.」と出力されます。

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

SILENT=HEADER, FEEDBACK

ただし、画面には、引き続き「XX Rows successfully loaded.」と出力されます。

8.2.43 SKIP

SQL*Loaderのコマンドライン・パラメータSKIPでは、ファイルの先頭からのロードが不要な論理レコード数を指定します。

デフォルト

0 (レコードをスキップしません)。

用途

ファイルの先頭からのロードが不要な論理レコード数を指定します。この指定により、すでに処理されているレコードをロードすることなく、なんらかの理由で中断されたロードを続行できます。

構文および説明

SKIP=n

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

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

制限事項

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

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

SKIP=500

関連トピック

8.2.44 SKIP_INDEX_MAINTENANCE

SQL*Loaderのコマンドライン・パラメータ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

8.2.45 SKIP_UNUSABLE_INDEXES

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

デフォルト

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

用途

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

構文および説明

SKIP_UNUSABLE_INDEXES=[TRUE | FALSE]

SKIP_UNUSABLE_INDEXESの値としてTRUEを指定すると、索引使用禁止状態の索引が検出された場合、使用禁止状態の索引はスキップされ、ロード処理は続行されます。これにより、ロード開始前の状態が使用禁止になっている索引を含む表をSQL*Loaderでロードできるようになります。ロード時に使用禁止状態でない索引は、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の設定が優先されます。そのため、このパラメータの設定後に索引使用禁止状態の索引が出現すると、その索引はスキップされてロード操作が続行されます。

SKIP_UNUSABLE_INDEXES=TRUE

8.2.46 STREAMSIZE

SQL*Loaderのコマンドライン・パラメータSTREAMSIZEでは、クライアントからサーバーに送信されるデータ・ストリームのサイズ(バイト単位)を指定します。

デフォルト

256000

用途

クライアントからサーバーに送信されるデータのストリーム・サイズ(バイト単位)を指定します。

構文および説明

STREAMSIZE=n

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

制限事項

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

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

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

STREAMSIZE=300000

8.2.47 TRIM

SQL*Loaderのコマンドライン・パラメータTRIMでは、テキスト・フィールドの先頭とテキスト・フィールドの末尾の両方(またはどちらか)から空白を切り捨てるかどうかを指定します。

デフォルト

LDRTRIM

用途

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

構文および説明

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

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

  • NOTRIMは、フィールドから文字を切り捨てないように指示ます。この設定では、通常、最高のパフォーマンスを得ることができます。

  • LRTRIMは、フィールドから先頭と末尾の両方の空白を切り捨てるように指示します。

  • LTRIMは、フィールドから先頭の空白を切り捨てるように指示ます。
  • RTRIMは、フィールドから末尾の空白を切り捨てるように指示ます。
  • LDRTRIMは、次の場合を除いて、NOTRIMと同様です。

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

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

ノート:

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

制限事項

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

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

TRIM=NOTRIM

8.2.48 USERID

SQL*Loaderのコマンドライン・パラメータUSERIDでは、SQL*LoaderのOracleユーザー名とパスワードを指定します。

デフォルト

デフォルトはありません。

用途

SQL*LoaderのOracleユーザー名とパスワードを指定して、その入力を求められないようにします。省略すると、入力要求が表示されます。この値としてスラッシュ(/)を指定すると、USERIDはオペレーティング・システム・ログインにデフォルト設定されます。

構文および説明

USERID=[username | / | SYS]

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

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

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

制限事項

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

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

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

> sqlldr hr
Password: 

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

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

使用上のノート

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

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

Unixプラットフォームでは、シェルの終了コードを調べてロード結果を確認できます。