①エクスポートの実行
③データをディスクからバッファ・
キャッシュへ読み込み
④行はクライアント・プロセ スにある評価バッファに転送
します
②
SELECT
文発行⑤式の評価が終了する と、エクスポート・ファイ ルに書き出さます 評価バッファ
従来型とダイレクト・パス・ロードの違い
ダイレクト・パス・ロードによるエクスポート
Oracle専用の
メモリ領域①エクスポートの実行
②データをディスクからバッファ・
キャッシュへ読み込み
③評価バッファをバイパス し、エクスポートファイルに 書き出されます
評価バッファをバイパスするため、
従来型パス・エクスポートに比べ 非常に高速です
評価バッファ
Import
Import Utility
IMP impコマンドで起動するオリジナルインポート・ユーティリティ
COMMAND > imp scott/tiger tables=emp,dept
IMP
では、EXP
で使用できたパラメータのほとんどを利用することができますIMP
でパラメータを指定することにより、EXP
で作成したダンプファイルからさらに対象データを 絞りこんでインポートすることが可能ですダンプファイルからemp表とdept表のみを インポート
COMMAND > imp scott/tiger owner=wendy
ダンプファイルからwendyユーザーのオブ ジェクトをインポート
オブジェクト作成エラー処理
IGNORE=y に指定すると、データベース・オブジェクトの作成時に
作成エラーが発生しても、このエラーは無視され、エラーはレポー トされずに継続します
COMMAND > IMP scott/tiger FILE=exp.dmp IGNORE=y IGNORE
デフォルトはIGNORE=n
•
表がすでに存在する場合IGNORE=y
を指定すると、行は既存の表にインポートされます(エラー/メッセージは出力なし)IGNORE=nを指定すると、エラーがレポートされ、表は行が挿入されないまま
スキップされます。また、表に依存するオブジェクトは作成されません。Data Pump とは
• Oracle Database10g から導入されたユーティリティ
– Oracle Data Pump テクノロジを使用すると、
データおよびメタデータをデータベース間で非常に高速に移動できます
利用方法
• expdp/impdpコマンド
• Oracle Enterprise Manager
• DBMS_DATAPUMP PL/SQL パッケージ
• その他、外部表などのエンジンとして内部利用
Data Pump 利点
• エクスポート:オリジナルの Export に比べて 2 倍高速
• インポート:オリジナルの Import に比べて 15 ~ 40 倍高速 ダイレクトパス API の改善による処理速度向上
Oracle Data Pump
を使用 したら速くなった!Data Pump は、大量データを扱う大きなジョブ向き
Data Pump では、マスター表を作成するためのオーバーヘッド
によって小さなジョブは遅くなりますが、大量のデータを高速に
処理することは、中・大規模なジョブにとって大きなメリットとなり
ます。
パフォーマンス検証
検証環境
Sun Enterprise 3000 400MHz * 4CPU 4GB Memory
索引の張られていないテーブル(53partitions21,000,000rows)
を用いてData Pumpを使ったエクスポート・インポートと従来の ものとを比較する作成されるダンプファイルは1.15GB
750.418
136.457
74.708
55.193 0
200 400 600 800 秒
imp impdp impdp(2p) impdp(4p)
従来型インポートと Data Pump インポートの処理時間比較
443.483
80.005 49.664 51.269
0 200 400 600 800 秒
exp expdp expdp(2p) expdp(4p)
従来型エクスポートと Data Pump エクスポートの処理時間比較
従来エクスポートに比べ、Data Pump は2パラレルで
約 9 分の 1
の処理時間!!従来インポートに比べ、Data Pump は4パラレルで
約 13 分の 1
の処理時間!!検証内容
検証結果
Data Pump – 出力先ディレクトリ指定
• Data Pump
ではクライアントではなくサーバーにより書き込みが行われるため、処理を行うディレクトリ位置が特定されている必要があります
•
ダンプファイルを出力するディレクトリに対してDB
上でディレクトリオブジェクトを作成し、実行時に はディレクトリオブジェクトをDIRECTORY
パラメータで指定します•
パラメータでディレクトリを指定していない場合、OS
環境変数「DATA_PUMP_DIR
」、なければ ディレ クトリオブジェクト「DATA_PUMP_DIR
」が参照されますSQL > CREATE DIRECTORY DPUMP_DIR1 AS ‘/home/oracle/oradata/dpump_dir’;
SQL > GRANT READ, WRITE ON DIRECTORY dpump_dir1 TO scott;
COMMAND > expdp scott/tiger tables=emp,dept directory=dpump_dir1
COMMAND > set DATA_PUMP_DIR=DPUMP_DIR1; export DATA_PUMP_DIR COMMAND > expdp scott/tiger schemas=scott
権限付与
ディレクトリオブジェクト作成
環境変数の設定
Export – Data Pump –
オリジナル
export
と同様の操作性をもった新エクスポートユーティリティモード 機能説明 パラメータ
フル データベース全体のエクスポート
FULL=y
スキーマ 指定したスキーマ全体のエクスポート
SCHEMAS=schema[, …]
テーブル 指定したテーブル全体のエクスポート
TABLES=table[, …]
テーブルスペース 指定したテーブルスペース全体のエクスポート
TABLESPACES=tablespace[, …]
EXPDP で利用可能なモード
例1: > expdp scott/tiger full=y
例 2: > expdp scott/tiger dumpfile=exp.dmp tables=emp,dept
フルモード
テーブルモード
Export Utility
EXPDP
Data Pump によるデータの移動方法
• 従来型パスを使用したデータ移動
• ダイレクト・パスを使用したデータ移動
• 外部表を使用したデータ移動
• データ・ファイル・コピーを使用したデータ移動 (Transportable Tablespace)
• ネットワーク・リンク・インポートを使用したデータ移動
– NETWORK_LINK
インポート・パラメータ注意
:
データ・ポンプでは、無効な一意索引を持つ表は、ロードされませんデータを表にロードするには、その索引を削除するかまたは再度有効にする必要があります
フィルタ処理
※空白等を区切り文字にしないためにダブルクオーテーションが必要で
すが、OSによってはエスケープ文字が必要となります。従って、通常は パラメータを記述したファイルを読み込ませると便利です。フィルタ処理を行い、エクスポートの対象となるオブジェクトを細かく 設定することができます
エクスポートの対象オブジェクトをINCLUDEパラメータで指定します
COMMAND > expdp scott/tiger include=table
エクスポートの対象から除外するオブジェクトをEXCLUDEパラメータで指定します
COMMAND > expdp scott/tiger exclude=index:¥”LIKE ¥’EMP%¥’¥”
LIKEやINを指定
することも可能COMMAND > expdp scott/tiger include=index
INCLUDE / EXCLUDE
※ INCLUDE
とEXCLUDE
パラメータは排他的で、同時に指定できませんフィルタ処理
フィルタ処理を行い、エクスポートの対象となるデータを細かく設定 することができます
•
エクスポート対象表のセットから行のサブセットを選択できます例:職種がSALESMANで、給与が1600より少ない従業員のみをエクスポートする場合
COMMAND > expdp scott/tiger TABLES=emp QUERY=¥"WHERE job=¥'SALESMAN¥' and sal ¥<1600¥"
•
サンプリングしてソース・データベースからアンロードするデータ行の割合を指定できます 例:SCOTTのEMP表の50%
がエクスポートされますCOMMAND > expdp scott/tiger tables=emp SAMPLE=“SCOTT"."EMP":50
QUERY / SAMPLE
ファイルサイズ
各ダンプ・ファイルがそのサイズを上限とし、置換変数(%U)を持つ テンプレートを指定していてダンプ・ファイルを分割します
•
サイズが3MB
のダンプ・ファイルを設定するCOMMAND > expdp hr DIRECTORY=dpump_dir1 DUMPFILE=hr_3m.dmp FILESIZE=3MB 3MB
でもすべてのエクスポート・データを保持するのに十分でなかった場合、次のエラーが表示され、ジョブは中止されます
ORA-39095: Dump file space has been exhausted: Unable to allocate 217088 bytes FILESIZE
ファイル指定に置換変数が含まれている場合は、新しいファイルが作成されます
COMMAND > expdp hr DIRECTORY=dpump_dir1 DUMPFILE=hr_3m%U.dmp FILESIZE=3MB
キロバイト(KB)、メガバイト(MB)、ギガバイト
(GB)
を付けて指定する事もできますフラッシュバック・モード
指定したSCNもしくは時刻における一貫性を維 持したデータのエクスポートが可能です
あるSCNにおける一貫性を維持したデータをエクスポートするために