Oracleのimpdp
コマンド解説(事前準備含む)
Oracle Databaseのimpdp
(Data Pump Import)コマンドは、エクスポートされたダンプファイル(.dmp
)を使ってデータベースにデータを復元するためのユーティリティです。この機能はデータ移行、バックアップの復元、環境間のデータコピーなどに利用されます。
■ impdpの概要
impdp
は、事前にexpdp
(Data Pump Export)で出力されたデータをOracleデータベースに読み戻すためのコマンドです。
■ impdp実行前に必ず行う準備
Oracleでは、OS上のファイルパスを直接指定するのではなく、**ディレクトリオブジェクト(Oracle DIRECTORYオブジェクト)**を通じてファイルにアクセスします。
そのため、以下の準備が必須となります。
■ impdpの処理の流れ(全体像)
① OS上に .dmp ファイルを配置
② Oracleで DIRECTORY オブジェクトを作成
③ 対象ユーザーに READ/WRITE 権限を付与
④ impdp コマンドでインポートを実行
■ sqlplusによるディレクトリオブジェクトの作成
● sqlplusとは?
Oracleが提供する対話型のコマンドラインSQLツールで、SQLやPL/SQLを実行したり、管理操作を行ったりできます。
● sqlplus / as sysdba
とは?
これはOracleにOS認証で管理者(SYSDBA)としてログインする構文です。通常、Oracleサーバー上でoracle
ユーザーとしてこのコマンドを実行します。
-
sqlplus
:ツールの起動 -
/
:OSユーザー認証(ユーザー名・パスワード不要) -
as sysdba
:SYSDBA権限(管理者)で接続する
● 実行例
sqlplus / as sysdba
CREATE OR REPLACE DIRECTORY dump_dir AS '/u01/dumpfiles';
GRANT READ, WRITE ON DIRECTORY dump_dir TO your_user;
-
dump_dir
:Oracle内でのディレクトリ識別名 -
/u01/dumpfiles
:OS上に実在するディレクトリパス -
your_user
:ダンプファイルを読み込むユーザー名
■ impdpコマンド構文と使用例
基本構文:
impdp ユーザー名/パスワード@サービス名 DIRECTORY=ディレクトリ名 DUMPFILE=ファイル名 LOGFILE=ログファイル名 [その他オプション]
パラメータ | 説明 |
---|---|
ユーザー名/パスワード |
接続するユーザーの認証情報 |
@サービス名 |
接続先のデータベース識別子(TNS名やEZ接続形式など) |
DIRECTORY=ディレクトリ名 |
Oracleディレクトリオブジェクト(OSのパスではない) |
DUMPFILE=ファイル名 |
インポート元のダンプファイル名(複数指定可) |
LOGFILE=ファイル名 |
処理ログの出力ファイル名(任意) |
■ 主なオプション
オプション | 説明 |
---|---|
FULL=Y |
データベース全体をインポート |
SCHEMAS=スキーマ名 |
特定のスキーマ(ユーザー)のみをインポート |
TABLES=テーブル名 |
指定したテーブルのみをインポート |
REMAP_SCHEMA=旧:新 |
スキーマ名を変換してインポート |
REMAP_TABLESPACE=旧:新 |
表領域を変換してインポート |
EXCLUDE=オブジェクト |
指定したオブジェクトを除外 |
INCLUDE=オブジェクト |
指定したオブジェクトだけを含める |
● スキーマ全体をインポート
impdp scott/tiger@orcl DIRECTORY=dump_dir DUMPFILE=scott.dmp LOGFILE=scott.log
● 特定テーブルのみをインポート
impdp scott/tiger@orcl DIRECTORY=dump_dir DUMPFILE=scott.dmp TABLES=emp,dept LOGFILE=emp_import.log
● スキーマを別名に変換してインポート
impdp system/password@orcl DIRECTORY=dump_dir DUMPFILE=scott.dmp REMAP_SCHEMA=scott:hr LOGFILE=remap.log
■ よくあるエラーとその対処法
エラー内容 | 原因と対策 |
---|---|
ORA-39087: directory name is invalid | DIRECTORYが存在しないか、名前の指定ミス |
ORA-39002: invalid operation | 構文ミスまたはユーザーに権限が不足 |
ORA-39070: Unable to open the log file | 指定したディレクトリに書き込み権限がない、またはパスが不正 |
■ 注意点まとめ
項目 | 内容 |
---|---|
ディレクトリオブジェクト | OracleがOSファイルへアクセスするために必要 |
DIRECTORY= |
impdp で使用するOracleディレクトリオブジェクト名 |
DUMPFILE= | ディレクトリ内に存在するファイル名(パスは不要) |
権限付与 | ユーザーにREAD, WRITE権限が必要 |
■ expdpとの連携例(ダンプと復元)
expdp your_user/your_password@orcl DIRECTORY=dump_dir DUMPFILE=export.dmp LOGFILE=export.log
impdp your_user/your_password@orcl DIRECTORY=dump_dir DUMPFILE=export.dmp LOGFILE=import.log
■ 「.dmpファイルを渡されたけどどう使えばいいの?」という場合は?
以下の情報を確認しましょう:
-
.dmp
ファイルの保存場所(OSパス) - Oracleの接続情報(ユーザー、パスワード、サービス名)
- 復元対象(テーブル単位、スキーマ単位、全体など)
状況に応じたimpdp
コマンド例を提供できます。