COL: CSS:



データロード (2)

SQL でのデータ管理データロード (1)データロード (2)整合性制約

SQL*Loader の起動

SQL*Loader を起動するとき各種パラメータを指定可能で,付加するパラメータの順番は任意。パラメータを指定せずに SQL*Loader を起動すると,ヘルプが表示される)。

/* Code.080401: SQL*Loader の書式とパラメータ */

> sqlldr keyword=value [, keyword=value, ..]
/* Code.080402: ヘルプの起動 */

> sqlldr        ← パラメータを指定せずに実行するとヘルプを参照できる
Table.080401: SQL*Loader パラメータの一例
キーワード詳細
useridOracle ユーザ名 / パスワード
control制御ファイル名
logログファイル名
bad不良ファイル名
dataデータファイル名
discard廃棄ファイル名

データ・ロード方法

SQL*Loader によるデータ・ロード方法として,下記 2 種類が存在する。

従来型パス
Oracle データベースの表に対して INSERT 文 / COMMIT 文が実行される。
ダイレクトパス
Oracle データ・ブロックをフォーマットし、直接データ・ファイルに書き込む。

各ロード方法は次のような特徴を持っている。

  • 従来型パスでは行配列毎に Oracle を 1 回コールして INSERT 文を実行するが,ダイレクトパスでは INSERT 文を実行せずに直接書き込むため,Oracle Database の負荷が軽減され,高速に書き込める。
  • 従来型パスでは常時 REDO ログ・ファイル・エントリを作成するが,ダイレクトパスでは
    • Oracle Database が NOARCHIVELOG モードである
    • Oracle Database が ARCHIVELOG モードで,かつロード対象のオブジェクトに NOLOGGING パラメータが設定されている
    • Oracle Database が ARCHIVELOG モードで,かつ制御ファイルに UNRECOVERABLE が設定されている
    といった場合,REDO ログ・ファイル・エントリを作成せず,ロードの際のログ記録時間を省ける。
  • 従来型パスでは行配列の挿入時に INSERT 文を使用し,全ての整合性制約および挿入トリガーが自動的に実行されるが,ダイレクトパスでは NOT NULL 制約 / UNIQUE 制約 / PRIMARY KEY 制約のみ実行される。
  • 従来型パスではデータをクラスタ表にロードできるが,ダイレクトパスはクラスタ表へのロードは未サポート。