OracleのData Pump(expdp
/ impdp
)は、高速で柔軟なデータ移行を実現するユーティリティですが、実行中のジョブを一時停止し、あとから再開する機能も備えています。
本記事では、その中でも特に便利な attachオプション を使ったジョブの一時停止・再開方法について、具体的な手順と注意点を紹介します。
Data Pumpのジョブを途中で一時停止するには
Data Pumpでエクスポートやインポートを実行すると、Oracleは自動的にジョブ名を割り当て、バックグラウンドで処理を進めます。
たとえば以下のようなコマンドでエクスポートを実行したとします:
expdp user/password@orcl \
directory=DATA_PUMP_DIR \
dumpfile=exp_data.dmp \
logfile=exp_data.log \
schemas=HR
この時点でData Pumpは「SYS_EXPORT_SCHEMA_01」のようなジョブ名を付与します。
一時停止の手順
実行中のData Pumpセッションで Ctrl + C
を押すことで、インタラクティブモードに入ることができます。
プロンプトが次のように変化します:
Export>
ここで以下のコマンドを実行して一時停止します:
Export> STOP_JOB=IMMEDIATE
この操作により、ジョブはキャンセルされるのではなく停止状態で保持されます。
ジョブを再開する方法(attach)
あとからジョブを再開したい場合は、attach
オプションを使って対象のジョブに再接続します。
expdp user/password@orcl attach=SYS_EXPORT_SCHEMA_01
ジョブ名がわからない場合は、以下のSQLで確認できます:
SELECT job_name FROM dba_datapump_jobs WHERE state='DEFINING';
attach後の操作例:
Export> CONTINUE_CLIENT
このコマンドを入力することで、Data Pumpジョブが再開され、進行状況が再び表示されます。
補足:ジョブのキャンセルと削除
不要なジョブを完全に削除したい場合は、attachしたあとに以下を実行します:
Export> KILL_JOB
これにより、停止中のジョブが削除され、不要なリソースも開放されます。
まとめ
Data Pumpは、長時間実行される処理にも柔軟に対応できるよう、ジョブの停止と再開が可能です。ポイントは以下の通りです:
Ctrl + C
でインタラクティブモードに移行STOP_JOB=IMMEDIATE
で一時停止attach
オプションで再接続してCONTINUE_CLIENT
で再開KILL_JOB
で不要なジョブを削除
大規模データの移行や運用保守作業の中断・再開に非常に便利な機能なので、ぜひ使いこなしてみてください。