プライマリ・コンテンツに移動
Oracle® Databaseユーティリティ
11gリリース2 (11.2)
B56303-08
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

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

この章では、SQL*Loaderを起動するために使用するコマンドライン・パラメータについて説明します。この章の内容は、次のとおりです。

SQL*Loaderの起動

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

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

SQL*Loaderを起動する際に、セッションの特性を確立するためにパラメータを指定します。必要に応じて、パラメータはカンマで区切ることができます。

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

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

> sqlldr scott ulcase1.ctl
Password: password
 

キーワードでの指定が使用されると、その後、位置では指定できなくなります。たとえば、次のコマンドラインでは、ulcase1.logの位置が正しくても、エラーが発生します。

> sqlldr scott CONTROL=ulcase1.ctl ulcase1.log

パラメータを指定しないでSQL*Loaderを起動すると、指定可能なパラメータとそのデフォルト値を示すヘルプ画面が表示されます。


参照:

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

パラメータ指定の代替方法

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

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

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

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

ネットワークを介したデータのロード

ネットワーク接続を介してデータをロードするために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制御ファイルの指定に従ってデータをロードします。


参照:

接続識別子およびOracle Net Listenerの詳細は、『Oracle Database Net Services管理者ガイド』を参照してください。

コマンドライン・パラメータ

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

BAD(不良ファイル)

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

BADは、SQL*Loaderによって作成される不良ファイルの名前を指定します。このファイルには、挿入中にエラーの原因となったレコード、または形式が不適切なレコードが格納されます。ファイル名を指定しない場合、デフォルトが使用されます。拒否されたレコードがない場合、不良ファイルが自動的に作成されることはありません。

コマンドラインで指定された不良ファイル名は、制御ファイルの最初のINFILE文に関連する不良ファイルになります。

不良ファイルの名前は、BADFILE句を使用して、SQL*Loaderの制御ファイル内に指定することもできます。不良ファイル名をコマンドラインだけでなく制御ファイルでも指定した場合は、コマンドラインの値の方が優先されます。


参照:

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

BINDSIZE(最大サイズ)

デフォルト: このパラメータのデフォルト値を参照するには、「SQL*Loaderの起動」で説明したとおり、パラメータを指定しないでSQL*Loaderを起動します。

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

COLUMNARRAYROWS

デフォルト: このパラメータのデフォルト値を参照するには、「SQL*Loaderの起動」で説明したとおり、パラメータを指定しないでSQL*Loaderを起動します。

行数を指定してダイレクト・パス列配列に割り当てます。このパラメータの値は、SQL*Loaderでは計算されません。値を指定するか、またはデフォルトを使用する必要があります。

CONTROL(制御ファイル)

デフォルト: なし

CONTROLは、データのロード方法を記述するSQL*Loader制御ファイルの名前を指定します。ファイルの拡張子またはファイル・タイプを指定していない場合は、デフォルトで.ctlになります。省略すると、SQL*Loaderからファイル名の入力を要求されます。

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


参照:

SQL*Loader制御ファイルの詳細は、第9章を参照してください。

DATA(データ・ファイル)

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

DATAは、ロードするデータが入っているデータ・ファイルの名前を指定します。ファイルの拡張子またはファイル・タイプを指定していない場合は、デフォルトで.datになります。

コマンドラインでデータ・ファイルを指定し、INFILEで制御ファイル内のデータ・ファイルを指定する場合は、コマンドラインで指定されたデータが最初に処理されます。制御ファイル内で指定された最初のデータ・ファイルは無視されます。制御ファイル内で指定された他のすべてのデータ・ファイルは処理されます。

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

DATE_CACHE

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

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

DATE_CACHEは、日付キャッシュ・サイズ(エントリ数)を指定します。たとえば、
DATE_CACHE=5000を指定すると、作成された日付キャッシュごとに最大5000の一意の日付エントリが含まれます。必要に応じて、すべての表に固有の日付キャッシュが作成されます。日付キャッシュは、表への格納のためにデータ型変換が必要な日付値またはタイムスタンプ値が1つ以上ロードされた場合にのみ作成されます。

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

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

DIRECT(データ・パス)

デフォルト: false

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

DISCARD(ファイル名)

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

DISCARDは、SQL*Loaderで作成する廃棄ファイル(オプション)を指定します。このファイルには、表に挿入されず、拒否もされなかったレコードが保存されます。

コマンドラインで指定された廃棄ファイル名は、制御ファイルの最初のINFILE文に関連する廃棄ファイル名となります。つまり、制御ファイル中で指定する廃棄ファイル名よりも、コマンドラインで指定した廃棄ファイル名の方が優先されます。


参照:

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

DISCARDMAX(整数)

デフォルト: ALL

DISCARDMAXは、データ・ロードが終了する前に、許可する廃棄レコードの数を指定します。最初の廃棄レコードで中止するには、1を指定します。

ERRORS(エラーの許容最大数)

デフォルト: このパラメータのデフォルト値を参照するには、「SQL*Loaderの起動」で説明したとおり、パラメータを指定しないでSQL*Loaderを起動します。

ERRORSは、挿入エラーの許容最大数を指定します。発生したエラーの数がERRORSに指定された値を超えると、SQL*Loaderによりロードが中止されます。エラーを許容しない場合は、ERRORS=0を設定します。エラーを無制限に許容する場合は、非常に大きい値を指定します。

単一の表をロードする場合、エラーの数がこの上限を超えると、SQL*Loaderによりロードが中止されます。ただし、その前に挿入されたデータはコミットされます。

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

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

EXTERNAL_TABLE

デフォルト: NOT_USED

EXTERNAL_TABLEは、外部表オプションを使用してデータをロードするかどうかをSQL*Loaderに指定します。次の3つの値を指定できます。

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

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

  • EXECUTE: 外部表を使用してロードを行うために必要な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権限が必要です。ロード処理の最後にディレクトリ・オブジェクトを削除する場合は、DELETE 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ではすべてのフィールド用に生成された名前を使用します。これは、フィールド名が制御ファイル内の異なる表の間で一意でないことがあるためです。


参照:


EXTERNAL_TABLEの使用上の制限

EXTERNAL_TABLE修飾子を使用する場合、次の制限が適用されます。

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

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

FILE(ロード先の表領域ファイル)

デフォルト: なし

FILEは、エクステントを割り当てるデータベース・ファイルを指定します。このパラメータは、ダイレクト・パスのパラレル・ロードでのみ使用します。SQL*Loaderの異なるプロセスに対するFILEパラメータの値を変えることによって、データがシステムにロードされるときのディスクの競合を最小限に抑えることができます。

LOAD(ロードするレコード数)

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

LOADは、指定した件数のレコードをスキップした後に、ロードする論理レコード件数の最大数を指定します。実際のレコード件数が指定された最大数より少ない場合、エラーは発生しません。

LOG(ログ・ファイル)

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

LOGは、SQL*Loaderによって作成されるログ・ファイルを指定します。このファイルには、ロード処理に関するログ情報が保存されます。

MULTITHREADING

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

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

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

単一CPUシステムでは、マルチスレッドはデフォルトでfalseに設定されています。2つの単一CPUシステム間でマルチスレッドを使用するには、マルチスレッドを使用可能にする必要があります。デフォルトでは、使用可能になっていません。マルチスレッドを使用可能にすることによって、サーバー・システムでのストリームのロードと並行して、クライアント・システムでストリームを作成できます。

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

NO_INDEX_ERRORS

デフォルト: なし

コマンドラインにNO_INDEX_ERRORSを指定すると、索引がロード中に使用禁止に設定されることがなくなります。索引エラーが検出された場合は、ロードが異常終了します。つまり、1行もロードされず、索引はそのままになります。

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

PARALLEL(パラレル・ロード)

デフォルト: false

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

PARFILE(パラメータ・ファイル)

デフォルト: なし

PARFILEは、コマンドラインで頻繁に使用するパラメータを記述したファイルを指定します。たとえば、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

注意:

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

READSIZE(読取りバッファ・サイズ)

デフォルト: このパラメータのデフォルト値を参照するには、「SQL*Loaderの起動」で説明したとおり、パラメータを指定しないでSQL*Loaderを起動します。

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

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

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

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


注意:

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

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

詳細は、「BINDSIZE(最大サイズ)」を参照してください。

RESUMABLE

デフォルト: false

RESUMABLEパラメータを使用して、再開可能な領域割当てを有効または無効にします。このパラメータはデフォルトでは無効なため、関連するRESUMABLE_NAMEパラメータおよびRESUMABLE_TIMEOUTパラメータを使用するには、RESUMABLE=trueを設定する必要があります。


参照:

  • 『Oracle Database概要』

  • 『Oracle Database管理者ガイド』


RESUMABLE_NAME

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

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

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

RESUMABLE_TIMEOUT

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

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

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

ROWS(1回にコミットする行数)

デフォルト: このパラメータのデフォルト値を参照するには、「SQL*Loaderの起動」で説明したとおり、パラメータを指定しないでSQL*Loaderを起動します。

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

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

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


注意:

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

SILENT(フィードバック・モード)

SQL*Loaderを開始すると、使用されているSQL*Loaderのバージョンに関する情報が画面に表示され、ログ・ファイルに書き込まれます。また、SQL*Loader実行中には次の例のようなフィードバック・メッセージも画面に表示されます。

Commit point reached - logical record count 20

SQL*Loaderで次のようなデータ・エラー・メッセージが表示される場合もあります。

Record 4: Rejected - Error on table EMP
ORA-00001: unique constraint <name> violated

1つ以上の値を持つSILENTを指定して、これらのメッセージを抑止できます。

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

SILENT=(HEADER, FEEDBACK)

適切な値を使用して、次のいずれかの処理を抑止します(複数も可)。

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

  • FEEDBACK - 画面に通常表示される「commit point reached」フィードバック・メッセージを非表示にします。

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

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

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

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

SKIP(スキップされるレコード)

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

SKIPは、ファイルの先頭から何件の論理レコードをロード対象外とするかを指定します。

このパラメータを指定すると、なんらかの理由で中断されたロードが継続されます。このパラメータは、従来型ロードおよび単一表のダイレクト・ロードで使用できます。複数の表のダイレクト・ロードに関しては、各表に対して同じ件数のレコードをロードする場合のみ使用できます。複数の表にそれぞれ異なる件数のレコードをダイレクト・ロードする場合は、使用できません。

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

SKIP_INDEX_MAINTENANCE

デフォルト: false

SKIP_INDEX_MAINTENANCEパラメータは、ダイレクト・パス・ロードの索引メンテナンスを停止します。これは、従来型パス・ロードには適用できません。このオプションを指定すると、索引キーが付けられた索引パーティションには、索引キーのかわりに索引使用禁止が設定されます。これは、索引セグメントと、その索引が付けられているデータとの整合性がとれないためです。ロードの影響を受けない索引セグメントについては、ロード前の索引使用禁止状態が保持されます。

SKIP_INDEX_MAINTENANCEパラメータ:

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

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

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

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

SKIP_UNUSABLE_INDEXES

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

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構成パラメータのデータベース設定を使用します。初期化パラメータ・ファイルでSKIP_UNUSABLE_INDEXESのデータベース設定を指定しない場合、デフォルトのデータベース設定はTRUEになります。

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


注意:

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

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

STREAMSIZE

デフォルト: このパラメータのデフォルト値を参照するには、「SQL*Loaderの起動」で説明したとおり、パラメータを指定しないでSQL*Loaderを起動します。

ダイレクト・パス・ストリームに対して、サイズをバイト単位で指定します。

USERID(ユーザー名/パスワード)

デフォルト: なし

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

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


注意:

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

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


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

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


UNIXの場合、終了コードは次のようになります。

EX_SUCC 0
EX_FAIL 1
EX_WARN 2
EX_FTL  3

Windows NTの場合、終了コードは次のようになります。

EX_SUCC 0
EX_FAIL 1
EX_WARN 2
EX_FTL  4

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

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