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)
エクスポートしたスキーマを同じ環境または別の環境へ復元するには、impdp
でschemas
を指定します。
基本構文
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_databaseやimp_full_databaseなどのロールが必要です。
- リマップ先スキーマ(ユーザー)は事前に作成しておく必要があります。
- オブジェクトの依存関係(シノニムや参照整合性など)を事前に確認しておくと安心です。
まとめ
Data Pumpのschemas
パラメータを使えば、スキーマ全体を簡単かつ安全にバックアップ・復元できます。さらにremap_schema
オプションを活用することで、異なるスキーマ名への移行もスムーズに行えます。
開発・本番間のデータ移行や、ユーザーごとの環境複製などに非常に便利な機能ですので、目的に応じてぜひ活用してみてください。