中山テック 代表の中山です。

さて、前回のOracleのDataPumpの使い方(基礎編)ではDataPumpのコマンドを打つまでの手順、構文をお伝えしました。
今回は応用編となりますが、実際はオプションの使い方のご説明となります 汗

DataPumpのオプションとは?

1つのみ指定可能なオプションと、共通オプションがあります。
前者は4つあるうちから1つのみ選べます。

一つ指定可能なオプション

①full:データベース全体をエクスポート

②tablespaces:対象表領域単位でエクスポート

③schemas:スキーマ単位でエクスポート

④tables:テーブル単位でエクスポート(複数指定時はカンマ区切り)

共通オプション

①directory:エクスポートファイルを作成するディレクトリを指定できる

②dumpfile:エクスポートしたデータのファイル名を指定できる

③logfile:エクスポート時のログファイル名を指定できる

④content:エクスポート対象を指定できる
(data_only:表データのみ、metadata_only:オブジェクト定義のみ、all:定義とデータ)

⑤estimate_only:エクスポートを実行せず、ディスク容量の見積だけを行う

⑥exclude:エクスポートから除外したいオブジェクトを指定する

⑦parfile:パラメータファイルを指定する

例)
expdp userid/password@dbname tables=USER_TABLE directory=DIRECTORY dumpfile=dumfile.dmp logfile=logfile.log content=data_only statistics=none

※赤文字・・・1つのみ指定可能なオプションと
※青文字・・・共通オプション

システム開発において、ログファイルとエクスポートファイル、ディレクトリは指定すると思います。
また、レコード取得したいだけであればテーブル名を指定する位で十分かと思われます。

DataPumpでSQLの指定が出来るのか?

expではいともたやすく行われてましたが、実はexpdpでもいともたやすく行えます。
構文としては、どこでもいいのでquery=\"where句\"を入れてください。
※説明するまでもないですが、「¥」はエスケープ文字です

例)
query=\"where DELETE_FLAG = \'0\'\"
※論理削除フラグが立っていないレコードを対象とする、という具合に

ちなみに、条件は指定できてもレコードの指定はできません

スピード感

どのぐらいの速さでエクスポート出来るのでしょうか。
それに関する質問は、当然ですが環境により異なります。

ですが、このご時世にユーザーが使用するサーバのスペックが低いようでは意味がありません。
ですので、1000万件あったとしても10分は掛からずエクスポート出来るのではないでしょうか。

私が経験したのは、そこまで良いスペックでなくても400万件のレコードをエクスポートするのに1分でした。

まとめ

確かに、普段使用していたexpに比べて高速であることはわかりました。
ただ、少ない件数であればサポートが切れているとはいえexpで十分とも感じています。

ちなみにメリット・デメリットが
■メリット
・expdp・・・高速である
・exp・・・使いやすい(イメージ的に)
■デメリット
・expdp・・・expに使い慣れている場合は使いにくい
・exp・・・expdpに比べると遅い

多少面倒な部分もありますが、是非使用してみてください。

最後に 中山テックについて

中山テックでは下記のお仕事を承っています。

ホームページ制作系

ご料金はサービス内容・料金を参照ください。

■ホームページ制作
※下地のみ。ロゴ、複雑なバナー、イラストは承っておりません
■SEO対策
Googleガイドライン診断、マネジメント、ブログ執筆など

システム開発系(SES請負契約向け)

■役職
プロジェクトマネジメント、PMO、リーダー、開発(要件定義~納品まで)

■スキル
工数見積(FP法)、折衝・提案、計画、調査、設計、実装(C、Java、クライアント系、SQL等)、データベース全般、テスト計画・項目作成、運用・保守

ご質問ございましたら、お問い合わせページよりご連絡ください。