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
オプションと組み合わせることで、環境に合わせた柔軟な再配置も行えます。
データの物理的配置や、環境移行、パフォーマンスチューニングの一環として、表領域単位の操作をぜひ活用してみてください。