thumb

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

さて、前回のOracleの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つのみ指定可能なオプション

※青文字・・・共通オプション

システム開発において、ログファイルとエクスポートファイル、ディレクトリは指定すると思います。

また、レコード取得したいだけであればテーブル名を指定する位で十分かと思われます。

  • システム開発関連記事

SQLの指定

expではいともたやすく行われてましたが、実はexpdpでもいともたやすく行えます。

構文としては、どこでもいいのでquery=\"where句\"を入れてください。

※説明するまでもないですが、「¥」はエスケープ文字です

例)

query=\"where DELETE_FLAG = \'0\'\"

※論理削除フラグが立っていないレコードを対象とする、という具合に

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

スピード感

どのぐらいの速さでエクスポート出来るのでしょうか。

それに関する質問は、当然ですが環境により異なります。

ですが、このご時世にユーザーが使用するサーバのスペックが低いようでは意味がありません。

ですので、1000万件あったとしても10分は掛からずエクスポート出来るのではないでしょうか。

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

まとめ

確かに、普段使用していたexpに比べて高速であることはわかりました。

ただ、少ない件数であればサポートが切れているとはいえexpで十分とも感じています。

ちなみにメリット・デメリットが

■メリット

・expdp・・・高速である

・exp・・・使いやすい(イメージ的に)

■デメリット

・expdp・・・expに使い慣れている場合は使いにくい

・exp・・・expdpに比べると遅い

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





おすすめの記事