• 検索結果がありません。

参照

EMP

外部表

$ sqlldr scott/tiger table=EMP

データファイル

emp.dat

1

2

3 4 5

5

ロード完了

6

SQL*Loader Express モード

デフォルト動作

• データファイルの指定

• カレントディレクトリの「 < 表名 >.dat 」を読み込む

• DATA パラメータで任意のファイルの読み込みも可能

• 単一ファイルの読み込み

• 複数ファイルの読み込み

• 複数ファイルのデータを一括ロード

$ sqlldr scott/tiger table=EMP data=emp.dat

$ sqlldr scott/tiger table=EMP data='emp*.dat'

$ sqlldr scott/tiger table=EMP data='emp?.dat'

任意の値・文字列を含むファイル (ex) emp.dat, emp1.dat, emp10.dat

任意の値 (1 文字 ) を含むファイル (ex) emp1.dat, emp2.dat, emp3.dat

$ sqlldr scott/tiger table=EMP data='emp1.dat','emp2.dat'

$ sqlldr scott/tiger table=EMP data=emp1.dat data=emp2.dat

SQL*Loader Express モード

出力ファイル

実行時に以下のファイルが出力される

• <

表名

>.log

• SQL*Loader

実行時のログファイル

• SQL*Loader

から実行されている

SQL

文も参照可能

• <

表名

>_<

実行プロセスの

PID>.log_xt

• Database

上での処理実行時のログファイル

エラー発生時にはそのエラー情報を出力

• <

表名

>_<PID>.bad

ロードできなかったデータ

ロード時にエラーが発生した場合のみ出力される

• DATA

パラメータ指定時は「

<

最初の

DATA

ファイル名

>_<PID>.bad

」となる

$ sqlldr scott/tiger table=EMP

• emp.log

• emp_21300.log_xt

• emp_21300.bad

$ sqlldr scott/tiger table=EMP DATA=emp1.dat, emp2.dat

• emp.log

• emp_21301.log_xt

• emp_21302.log_xt

• emp_21301.bad

• emp_21302.bad

まとめ

• Oracle Database

において

2

種類のテキスト・ファイルからのデータ・ロード 方法があります

• SQL*Loader

外部表を使用したローディング

• SQL*Loader

は以前のバージョンから提供されており、馴染み深いのですが、

現在は外部表の利用が主流です

外部表を利用することでデータ・ロードを

SQL

で柔軟におこなえます

エクスポート・インポートの種類は

2

種類

オリジナルの

Export/Import

Data Pump

• Oracle Database 10g

からは

Data Pump

を使用する

ダイレクト・パス・ロードで高速な移行を実現

• Oracle Database 12c

からは

SQL*Loader Express Mode

も検討

• Optionコマンドを使って、最適なExport/Importを実現

• Advanced Compression

で圧縮して高速化を実現

セキュリティを高めたいなら、

Advanced Security

Appendix

HWM を下げるオペレーション

参考)ダイレクト・ロードと HWM

ハイウォーターマーク( HWM )とは

テーブルに割り当てたブロックの中で、いままでデータが挿入されたことのある最後尾のブロック

ハイウォーターマーク(High Water Mark):高水位標

テーブルのフルスキャン時には

HWM

まで読み取ります

メリット:テーブルの大きさに対してデータ量が少ない場合、高速に検索できる

デメリット: 大量削除などでHWM以前の空きが多い場合、実レコード数に比較して時間がか かる

HWM

データ格納済 ブロック

空き ブロック

空き

テーブルのフルスキャン

ブロック

HWM

データ格納済 ブロック

空き ブロック

データ削除

空き ブロック

HWM

空き

テーブルのフルスキャン

ブロック

参考)ダイレクト・ロードと HWM

ダイレクト・ロードの書込み

• ダイレクト・ロードは HWM の後ろにデータを書き込みます

• ブロック・イメージを作成し直接物理的に書き込む為、使用中の ブロックを利用しません

• ダイレクト・ロードは書込み速度は速いが、利用できない空き領域

( HWM よりも前の空き領域)がでてきます

• データ削除が頻繁に発生する表にダイレクト・ロードを行う際は HWM を下げ るような運用も検討します

HWM

データ格納済 ブロック

空き

ブロック ダイレクト・ロードによる データ書込み開始ブロック

HWM を下げるオペレーション

業務的に対象表にアクセスさせない状態で実施

1.

論理バックアップユーティリティ(

EMP/IMP

) + 元表削除(

DROP

2. CREATE AS SELECT

TRUNCATE

INSERT SELECT 3. CREATE AS SELECT

+ 元表削除(

DROP

) +

RENAME 4. ALTER TABLE <

表名

> MOVE TABLESPACE <

表領域名

>

索引等のメンテナンスも必須

オンライン状態で実施

1.

オンライン表再定義(

Enterprise Edition

機能)

2.

オンライン・セグメント縮小(標準機能)

HWM を下げるオペレーション

オンライン・セグメント縮小

• オンライン・セグメント縮小

• 業務でテーブルを利用中でもセグメント縮小が可能

• 自動セグメント領域管理( ASSM )のみ利用可能

ALTER TABLE <

表名

> ENABLE ROW MOVEMENT;

ALTER TABLE <

表名

> SHRINK SPACE[CASCADE];

① ②

データの移動 HWMの移動

領域の解放 空き領域

HWM

Appendix

オリジナル exp/imp

エクスポートするオブジェクトを指定します

オリジナル

トリガー: TRIGGERS

オブジェクトの指定

制約、権限、索引、トリガーをエクスポートするか指定します

権限: GRANTS

索引: INDEXES

制約: CONSTRAINTS

COMMAND > EXP scott/tiger TABLES=(wendy.emp) GRANT=n

COMMAND > EXP scott/tiger TABLES=(wendy.emp) TRIGGERS=n COMMAND > EXP scott/tiger TABLES=(wendy.emp) INDEXES=n

COMMAND > EXP scott/tiger TABLES=(wendy.emp) CONSTRAINTS=n

データの一貫性を維持できるよう指定します

オリジナル

エクスポート・ユーティリティによって読み込まれたデータのある時点におけ る一貫性を維持し、

exp

コマンドの実行中に変更されないように指定します

COMMAND > EXP scott/tiger TABLES=(wendy.emp) CONSISTENT=n

CONSISTENT

指定

CONSISTENT

注意:

ユーザー

SYS

として接続しているとき、または

AS SYSDBA

を使用しているとき

(あるいはその両方)に実行するエクスポートでは、

CONSISTENT=y

はサポートされ ません

デフォルトは

CONSISTENT=n

です

2人のユーザーによる更新時のイベントの順序

オリジナル

時系列

ユーザ

B

TABLE1

エクスポート開始

TABLE1

TABLE2

の更新 トランザクションのコミット

TABLE1

エクスポート終了

TABLE2

エクスポート開始

CONSISTENT = n

の場合・・・

TABLE2

の更新は書き込まれますが、

TABLE1

の更新は書き込まれません

CONSISTENT = y

の場合・・・

TABLE1

TABLE2

の更新ともに書き込まれません

読み取り一貫性の確保を実現

エクスポート開始した時点の整合性が確保できている状態で、

ユーザ

A

ダイレクト・パス・エクスポートの使用を指定します

オリジナル

従来型パス・エクスポートに比べて非常に高速なダイレクト・パス・

エクスポートの使用を指定します

COMMAND > EXP scott/tiger TABLES=(wendy.emp) DIRECT=y

ダイレクト・パス・ロードの指定

関連したドキュメント