【Oracle】表領域ごとにエクスポート・インポートする方法|tablespacesパラメータの使い方

【Oracle】表領域ごとにエクスポート・インポートする方法|tablespacesパラメータの使い方 Oracle

OracleのData Pump(expdp / impdp)では、特定のテーブルやスキーマ単位でのエクスポート・インポートに加えて、表領域(tablespace)単位でも操作を行うことが可能です。本記事では、tablespacesパラメータを使って表領域ごとにデータをエクスポート・インポートする方法を詳しく解説します。

表領域とは?

表領域(tablespace)は、Oracleデータベース内でデータの物理的な保存先をグループ化する論理構造です。テーブルやインデックスなどのオブジェクトは、どこかの表領域に属して格納されます。

Data Pumpでは、指定した表領域に属するすべてのオブジェクトを対象に、効率的なバックアップや移行が行えます。

表領域単位でエクスポートする方法(expdp)

基本構文

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

使用例:USERS表領域をエクスポート

expdp system/manager directory=DATA_PUMP_DIR dumpfile=users_ts.dmp logfile=users_ts.log tablespaces=USERS

このコマンドでは、USERS表領域に属するすべてのオブジェクトが対象になります。特定のテーブルやスキーマに依存せず、物理的な配置に基づいたエクスポートが可能です。

複数の表領域を指定する場合

tablespaces=USERS,TEMP_DATA,APP_DATA

カンマ区切りで複数の表領域を指定して、一括でエクスポートすることも可能です。

表領域単位でインポートする方法(impdp)

基本構文

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

使用例:USERS表領域のデータを復元

impdp system/manager directory=DATA_PUMP_DIR dumpfile=users_ts.dmp logfile=users_ts_import.log tablespaces=USERS

エクスポート時と同様、指定された表領域に関連付けられたデータのみが対象となります。

REMAP_TABLESPACEで別の表領域に再配置する

インポート時に、エクスポート元の表領域とは異なる表領域にデータを格納したい場合は、remap_tablespaceパラメータを使用します。

impdp system/manager directory=DATA_PUMP_DIR dumpfile=users_ts.dmp logfile=import.log remap_tablespace=USERS:NEW_USERS

この設定により、元のUSERS表領域のデータをNEW_USERS表領域に移してインポートすることができます。

注意点

  • tablespacesは、表領域に属するすべてのスキーマ・テーブルが対象となる
  • ユーザーは、対象となる表領域に対してアクセス権限を持っている必要がある
  • remap_tablespace先の表領域は、事前に作成しておく必要がある

まとめ

Data Pumpのtablespacesパラメータを使えば、Oracleデータベース内の特定の表領域だけを効率よくエクスポート・インポートすることが可能です。さらにremap_tablespaceオプションと組み合わせることで、環境に合わせた柔軟な再配置も行えます。

データの物理的配置や、環境移行、パフォーマンスチューニングの一環として、表領域単位の操作をぜひ活用してみてください。