【Oracle】Data Pumpでスキーマごとにエクスポート・インポートする方法

【Oracle】Data Pumpでスキーマごとにエクスポート・インポートする方法 Oracle

OracleのData Pump(expdp/impdp)を使えば、テーブルやデータベース全体だけでなく、スキーマ単位でのエクスポート・インポートも簡単に行えます。本記事では、特定のスキーマをまるごとエクスポート・インポートする方法とその実用例を紹介します。

スキーマ単位でエクスポートする方法(expdp)

特定のスキーマ全体をエクスポートするには、schemasパラメータを使用します。

基本構文

expdp ユーザー名/パスワード directory=ディレクトリ名 dumpfile=ファイル名.dmp logfile=ログファイル名.log schemas=スキーマ名

使用例:SCOTTスキーマをエクスポート

expdp system/manager directory=DATA_PUMP_DIR dumpfile=scott.dmp logfile=scott.log schemas=scott

schemas=scottと指定することで、SCOTTスキーマに含まれるすべてのオブジェクト(テーブル、インデックス、ビュー、シノニムなど)が対象になります。

複数スキーマを指定する

schemas=scott,hr,sh

カンマ区切りで複数スキーマをまとめてエクスポートすることも可能です。

スキーマ単位でインポートする方法(impdp)

エクスポートしたスキーマを同じ環境または別の環境へ復元するには、impdpschemasを指定します。

基本構文

impdp ユーザー名/パスワード directory=ディレクトリ名 dumpfile=ファイル名.dmp logfile=ログファイル名.log schemas=スキーマ名

使用例:SCOTTスキーマをインポート

impdp system/manager directory=DATA_PUMP_DIR dumpfile=scott.dmp logfile=scott_import.log schemas=scott

このコマンドにより、ダンプファイル内のSCOTTスキーマの全オブジェクトが復元されます。

別スキーマ名でインポートする(REMAP_SCHEMA)

異なるユーザー名(スキーマ名)でインポートしたい場合は、remap_schemaオプションを使用します。

使用例:SCOTTスキーマをJOHNにリマップ

impdp system/manager directory=DATA_PUMP_DIR dumpfile=scott.dmp logfile=remap.log remap_schema=scott:john

この設定により、エクスポート元がSCOTTであっても、インポート先ではJOHNユーザーとしてオブジェクトが作成されます。

注意点

  • スキーマ単位のエクスポート・インポートには、exp_full_databaseimp_full_databaseなどのロールが必要です。
  • リマップ先スキーマ(ユーザー)は事前に作成しておく必要があります。
  • オブジェクトの依存関係(シノニムや参照整合性など)を事前に確認しておくと安心です。

まとめ

Data Pumpのschemasパラメータを使えば、スキーマ全体を簡単かつ安全にバックアップ・復元できます。さらにremap_schemaオプションを活用することで、異なるスキーマ名への移行もスムーズに行えます。

開発・本番間のデータ移行や、ユーザーごとの環境複製などに非常に便利な機能ですので、目的に応じてぜひ活用してみてください。