Pump(データポンプと読みます)は10gから追加されたORACLEの論理バックアップのエクスポート及びインポートを行うexp/empの後継ユーティリティです。dmpを作成/読み込むためのDirectoryオブジェクトを作成しておく必要があることに注意する必要があります。dmpファイルの入出力先expdp/impdpをクライアント側で実行したとしてもdmpファイルはDBサーバ側の入出力になりますが、入出力先は以下のように決まります。・何も指定しなかった場合デフォルトで存在しているDATA_PUMP_DIRディレクトリに作成されます。以下のSQLで出力パスを確認することができます。directoryパラメータで指定したほうがわかりやすいと思います。dumpfile=TEMP_DIR:test.dmp実行モードexpdp/impdpには5つのモードがあり、目的に応じて必要最小限のバックアップのみ取得することが可能です。dumpfile=<出力ファイル名>※依存関係のあるオブジェクト(表に対する索引や、複数表領域にまたがるパーティションなど)は指定したTABLESPACES以外でも処理対象になります。dumpfile=test.dmp※トランスポータブル表領域モードは異なるデータベースへデータファイル単位で移行する際のモードです。onlyモードにする必要がある、オブジェクトが指定された表領域内で完結している(他に依存する表領域がない)などの制約があります。dumpfile=TBS1_TBS2.dmp主なオプション・CONTENTオブジェクトのデータとメタデータ(オブジェクト定義)をそれぞれ処理対象とするか選択することができます。・データのみ処理するCONTENT=DATA_ONLY・メタデータのみ処理するCONTENT=METADATA_ONLY・データ、メタデータ両方処理する(デフォルト)CONTENT=ALL・INCLUDE、EXCLUDE特定のオブジェクトのみを対象/対象外にすることができます。・ESTIMATE_ONLY=yexpdpで利用できるオプションで、実際にデータ領域にアクセスしたりdumpファイルを出力したりせずdumpファイルサイズの見積もりだけ出力します。見積もりはセグメントサイズからの見積もりであるため以下のような要因で見積もりと実際の出力サイズが乖離する可能性があります。・データが断片化しておりセグメント内に空き領域が多い。→見積もりよりdumpファイルが小さくなる・圧縮されている。→dumpファイルサイズは非圧縮状態のサイズになるため見積もりより大きなサイズになる。このケースでは、最新の状態の統計情報が収集されていればESTIMATE=STATISTICSを指定すると統計ベースの見積もりになり正確になる。・QUERYテーブルデータに対して抽出条件を設けます。・FLASHBACK_TIME対象の全オブジェクトに対して指定時間の一貫性を維持してデータで処理します。15:00を指定したとすると全て15:00時点のデータがエクスポートされます。注意点としてトランザクションによりUNDO表領域が圧迫されている場合や、undo_retentionパラメータの値が短すぎる場合ORA-01555で処理が失敗する可能性があります。※・・・シングルクォーテーション等の記号はOSやシェルによっては特殊文字でありそのままの値としてパラメータへ渡されない場合があります。このため、「\」でエスケープする、PARFILEパラメータを使ったパラメータ設定ファイルで指定するといった対応が必要です。tables=testTIPSdatapumpはチューニング系パラメータは廃止されたdatapumpは後述する見積もり処理によりexp/imp等で必要だったチューニング系パラメータは全て廃止され自動チューニングされるようになりました。pump固有のチューニング系パラメータは多重度を指定するPARALLELパラメータのみです。datapumpは大規模表を想定した実装になっているdatapumpは実行すると最初に対象データのサイズ等を計算しており処理時間が最適化されるように見積もりを行っています。datapumpのほうが遅くなる場合があるためdatapumpを使用する場合は一度に複数の表をまとめて処理する実装を検討します。datapumpはJOBとして実行されるdatapumpの処理はORACLEのJOBとして実装されておりdbms_datapumpパッケージを利用すると処理の中断や再開が可能になっています。(残っている内部テーブルを削除することでエラーは解消します)。このジョブで実装するというアーキテクチャの影響と思われますがdatapumpは並列で実行すると処理間が競合し処理時間が長くなる傾向があります。この競合はJOB_NAMEパラメータに一意な値を指定することである程度改善します。既存表に対してimpdpを行う場合はPK索引を削除しておくと早くなる既に存在する表へimpdpする場合、PK索引が存在しているとダイレクト処理ではなく従来型で処理され処理時間が遅くなります。表を削除しておくか、PK索引を削除しておくことで処理が高速化します。datapumpはstreams_pool_sizeの領域を利用するdatapumpの実行にはSGA内のstreams_pool_sizeの領域が使用されます。メモリが大きいほど領域が無駄になる可能性が高くなるためstreams_pool_sizeは明示的に設定したほうが無難です。11.2のユーティリティマニュアルでは10MBを推奨するとの記載があります。datapumpを実行するとalertlogが汚れるdatapumpは実行するたびにalertlogにマスタープロセス及びワーカープロセスの起動情報が書き込まれるため大量実行するとアラートログが肥大化する可能性があります。services=...で初期化パラメータを変更する処理が実行されるためさらに肥大化します。本サイトはリンクフリーです。本サイトの情報により発生した問題等については一切責任を負えません。管理人への連絡はftpsaba0123@hotmail.comまでどうぞ。