技術ブログ
SQL*Loader Express Modeは、デフォルトでは外部表を使ってデータをロードするようですが、状況によっては外部表が使えない場合もあります。その場合、自動的に外部表を使用しないロード方法(ダイレクトパスのようです)に切り替えて、ロード処理を実行します。なかなか気が利いています。
[oracle@l63x64a tmp]$ sqlldr rywatabe2/rywatabe2 TABLE=emp SQL*Loader: Release 12.1.0.1.0 - Production on 火 8月 20 20:11:41 2013 Copyright (c) 1982, 2013, Oracle and/or its affiliates. All rights reserved. エクスプレス・モード・ロードの表: EMP 使用パス: 外部表, DEGREE_OF_PARALLELISM=AUTO SQL*Loader-816: 一時ディレクトリ・オブジェクトSYS_SQLLDR_XT_TMPDIR_00000をファイルemp.datに対して作成中にエラーが発生しました ORA-01031: 権限が不足しています。 SQL*Loader-579: ロードのディレクト・パスに切替え中 SQL*Loader-583: ダイレクト・パスの切捨て設定を無視し、LDRTRIMの値を使用します SQL*Loader-584: ダイレクト・パスのDEGREE_OF_PARALLELISM設定を無視し、NONEの値を 使用します エクスプレス・モード・ロードの表: EMP 使用パス: ダイレクト ロードは完了しました。 - 論理レコード件数2 表EMP: 2行のロードに成功しました。 確認するログ・ファイル: emp.log ロードの詳細を参照してください。 [oracle@l63x64a tmp]$ ls emp.dat emp.log tmp [oracle@l63x64a tmp]$ cat emp.log SQL*Loader: Release 12.1.0.1.0 - Production on 火 8月 20 20:11:41 2013 Copyright (c) 1982, 2013, Oracle and/or its affiliates. All rights reserved. エクスプレス・モード・ロードの表: EMP データファイルemp.dat 不良ファイル: emp_%p.bad 廃棄ファイル: 指定なし (すべて廃棄できます) ロード数: ALL スキップ数: 0 許容エラー数: 50 継続文字: 指定なし 使用パス: 外部表 表EMP、 ロード済 すべての論理レコードから この表に対する有効な挿入オプション: APPEND 列名 位置 長さ 用語暗号化データ型 ------------------------------ ---------- ----- ---- ---- --------------------- EMPNO FIRST * , CHARACTER ENAME NEXT * , CHARACTER HIREDATE NEXT * , DATE "RR-MM-DD" DEPTNO NEXT * , CHARACTER 可能性のある再使用のために生成された制御ファイル: OPTIONS(EXTERNAL_TABLE=EXECUTE, TRIM=LRTRIM) LOAD DATA INFILE 'emp' APPEND INTO TABLE EMP FIELDS TERMINATED BY "," ( EMPNO, ENAME, HIREDATE DATE, DEPTNO ) 可能性のある再使用のために生成された制御ファイルの終わり。 SQL*Loader-816: 一時ディレクトリ・オブジェクトSYS_SQLLDR_XT_TMPDIR_00000をファイルemp.datに対して作成中にエラーが発生しました ORA-01031: 権限が不足しています。 ------------------------------------------------------------------------ SQL*Loader-579: ロードのディレクト・パスに切替え中 SQL*Loader-583: ダイレクト・パスの切捨て設定を無視し、LDRTRIMの値を使用します SQL*Loader-584: ダイレクト・パスのDEGREE_OF_PARALLELISM設定を無視し、NONEの値を 使用します ------------------------------------------------------------------------ エクスプレス・モード・ロードの表: EMP データファイルemp.dat 不良ファイル: emp.bad 廃棄ファイル: 指定なし (すべて廃棄できます) ロード数: ALL スキップ数: 0 許容エラー数: 50 継続文字: 指定なし 使用パス: ダイレクト 表EMP、 ロード済 すべての論理レコードから この表に対する有効な挿入オプション: APPEND 列名 位置 長さ 用語暗号化データ型 ------------------------------ ---------- ----- ---- ---- --------------------- EMPNO FIRST * , CHARACTER ENAME NEXT * , CHARACTER HIREDATE NEXT * , DATE RR-MM-DD DEPTNO NEXT * , CHARACTER 可能性のある再使用のために生成された制御ファイル: OPTIONS(DIRECT=TRUE) LOAD DATA INFILE 'emp' APPEND INTO TABLE EMP FIELDS TERMINATED BY "," ( EMPNO, ENAME, HIREDATE DATE, DEPTNO ) 可能性のある再使用のために生成された制御ファイルの終わり。 表EMP: 2行のロードに成功しました。 0行はデータ・エラーのためロードされませんでした。 0行はWHEN句のエラーのためロードされませんでした。 0行はすべてのフィールドがNULLのためロードされませんでした。 日付キャッシュ: 最大サイズ: 1000 エントリ : 2 ヒット : 0 ミス : 0 バインド配列サイズはダイレクト・パスで使用されません。 列配列の行数: 5000 ストリーム・バッファのバイト数: 256000 読取りバッファのバイト数: 1048576 スキップされた論理レコードの合計: 0 読み込まれた論理レコードの合計: 2 拒否された論理レコードの合計: 0 廃棄された論理レコードの合計: 0 SQL*Loaderのメイン・スレッドによってロードされたストリーム・バッファの合計: 1 SQL*Loaderのロード・スレッドによってロードされたストリーム・バッファの合計: 0 実行開始火 8月 20 20:11:41 2013 実行終了火 8月 20 20:11:41 2013 実行時間: 00: 00: 00.55 CPU時間 : 00: 00: 00.02
便利便利。でもこの機能って、10年前ぐらいから存在すべき機能だよね 😉