タイトル
TOPOracle → This Page

インポート(impdp)(Data Pump Import)

概要

impdp(Data Pump Import)はOracleが標準で提供するユーティリティ。
expdp(Data Pump Export)ユーティリティで出力したエクスポート・ダンプ・ファイルからオブジェクトや行データなどを取り込むことが可能。
Oracle 9iまではメインだったexp,impより若干面倒な部分はあるものの、
色々とパワーアップしててOracle 10g からは exp,imp ではなく expdp,impdp(Data Pump Export/Import)の使用が推奨されています。

コマンド

IMPORTは impdp コマンドで実行可能
実行方法は以下の3つがある。

impdp
順に問い合わせされるパラメータを入力していく対話方式。

impdp パラメータ名=パラメータ値 [,パラメータ名=パラメータ値,...]
コマンドの後ろに各種パラメータを付加して実行する。

impdp parfile=パラメータファイル
前もってパラメータを記述したファイルを指定して実行する。

モード

モードには以下の4つがある。

・全体モード
 データベース全体のインポート
・表領域モード
 指定表領域のインポート
・スキーマ・モード
 指定ユーザのスキーマにある全てのオブジェクトをインポート
・表モード
 指定表およびパーティションのインポート

準備

従来のexp,impと最も異なる点。
それが DIRECTORY 指定。
クライアント側のディレクトリではなく、Oracleサーバ側が見るディレクトリを設定する必要がある。
そのディレクトリにダンプ・ファイル(dmpファイル)を配置、ログもそこに出力される。

(例)
CREATE DIRECTORY DATA_PUMP_DIR AS '/opt/oracle/data/datapump';
dxpdp,impdpで指定するディレクトリは上記例でいうとDATA_PUMP_DIRになる。
実際のパスである /opt/oracle/data/datapump ではないので注意。

権限

実行には CREATE SESSION 権限、指定 DIRECTORY への READ, WRITE 権限が必要。
実行モードを全体モードで実行する場合は IMP_FULL_DATABASE ロールも必要。

(例)DIRECTORY への READ, WRITE 権限付与
GRANT READ, WRITE ON DIRECTORY DATA_PUMP_DIR TO TEST_USER;

パラメータ一覧

準備中

実行例

全体モードでインポート
impdp usr1/pass1@db1 directory=DATA_PUMP_DIR dumpfile=test.dmp logfile=test.log full=y


表領域モードでインポート
表領域TS_1のオブジェクトをインポート
impdp usr1/pass1@db1 directory=DATA_PUMP_DIR dumpfile=test.dmp logfile=test.log tablespaces=TS_1

表領域モードでインポート(複数表領域)
表領域TS_1,TS_2のオブジェクトをインポート
impdp usr1/pass1@db1 directory=DATA_PUMP_DIR dumpfile=test.dmp logfile=test.log tablespaces=TS_1,TS_2

表領域モードでインポート
表領域TS_OLDのオブジェクトを表領域TS_NEWへインポート
impdp usr1/pass1@db1 directory=DATA_PUMP_DIR dumpfile=test.dmp logfile=test.log tablespaces=TS_OLD remap_tablespace=TS_OLD:TS_NEW

表領域モードでインポート(複数表領域)
表領域TS_OLD_1,TS_OLD_2のオブジェクトを表領域TS_NEW_1,TS_NEW_2へインポート
impdp usr1/pass1@db1 directory=DATA_PUMP_DIR dumpfile=test.dmp logfile=test.log tablespaces=TS_OLD_1,TS_OLD_2 remap_tablespace=(TS_OLD_1:TS_NEW_1,TS_OLD_2:TS_NEW_2)
※環境によっては以下のように括弧記号の前に円マーク必要になります。
impdp usr1/pass1@db1 directory=DATA_PUMP_DIR dumpfile=test.dmp logfile=test.log tablespaces=TS_OLD_1,TS_OLD_2 remap_tablespace=\(TS_OLD_1:TS_NEW_1,TS_OLD_2:TS_NEW_2\)


スキーマ・モードでインポート
usr1のオブジェクトをインポート
impdp usr1/pass1@db2 directory=DATA_PUMP_DIR dumpfile=test.dmp logfile=test.log schemas=usr1

スキーマ・モードでインポート(複数スキーマ)
usr1,usr2のオブジェクトをインポート
impdp usr1/pass1@db1 directory=DATA_PUMP_DIR dumpfile=test.dmp logfile=test.log schemas=usr1,usr2

スキーマ・モードでインポート
usr1のオブジェクトをusr2にインポート
impdp usr1/pass1@db1 directory=DATA_PUMP_DIR dumpfile=test.dmp logfile=test.log schemas=usr1 remap_schema=usr1:usr2

スキーマ・モードでインポート(複数スキーマ)
usr1,usr2のオブジェクトをusr3,usr4にインポート
impdp usr1/pass1@db1 directory=DATA_PUMP_DIR dumpfile=test.dmp logfile=test.log schemas=usr1,usr2 remap_schema=(usr1:usr3,usr2:usr4)
※環境によっては以下のように括弧記号の前に円マーク必要になります。
impdp usr1/pass1@db1 directory=DATA_PUMP_DIR dumpfile=test.dmp logfile=test.log schemas=usr1,usr2 remap_schema=\(usr1:usr3,usr2:usr4\)


表モードでインポート
impdp usr1/pass1@db1 directory=DATA_PUMP_DIR dumpfile=test.dmp logfile=test.log tables=tbl1

表モードでインポート(複数表)
impdp usr1/pass1@db1 directory=DATA_PUMP_DIR dumpfile=test.dmp logfile=test.log tables=tbl1,tbl2

表モードでレコードだけをインポート(表は既に存在する)
impdp usr1/pass1@db1 directory=DATA_PUMP_DIR dumpfile=test.dmp logfile=test.log tables=tbl1 content=data_only

表モードでインポート
usr1でimpdp実行するがusr2のスキーマの表をインポート
impdp usr1/pass1@db1 directory=DATA_PUMP_DIR dumpfile=test.dmp logfile=test.log tables=usr2.tbl1
※tablesに指定する表名の前にスキーマ名とドットを付けるだけ


表モードでインポート(応用)
スキーマUSER_OLDの表TBL_1,TBL_2をスキーマUSER_NEWかつ表領域TS_OLD_1,TS_OLD_2から表領域TS_NEW_1,TS_NEW_2へインポート
impdp usr1/pass1@db1 directory=DATA_PUMP_DIR dumpfile=test.dmp logfile=test.log tables=USER_OLD.TBL_1,USER_OLD.TBL_2 remap_schema=USER_OLD:USER_NEW remap_tablespace=(TS_OLD_1:TS_NEW_1,TS_OLD_2:TS_NEW_2)
※環境によっては以下のように括弧記号の前に円マーク必要になります。
impdp usr1/pass1@db1 directory=DATA_PUMP_DIR dumpfile=test.dmp logfile=test.log tables=USER_OLD.TBL_1,USER_OLD.TBL_2 remap_schema=USER_OLD:USER_NEW remap_tablespace=\(TS_OLD_1:TS_NEW_1,TS_OLD_2:TS_NEW_2\)


バッファを使って高速化(10MBごとにコミット)
imp usr1/pass1@db1 directory=DATA_PUMP_DIR dumpfile=test.dmp logfile=test.log buffer=10485760

注意点

上位バージョンのエクスポートで生成したエクスポート・ダンプ・ファイルを、下位バージョンのインポートで使用するには制限があります。
※逆は大丈夫。
・expdp時にVERSIONパラメータを付けてエクスポートする必要がある
・expdpとimpdpのバージョン差は最大2まで
・古いバージョンに存在しない新しいデータ型や機能はインポート不可

更新履歴

2026/02/28 新規作成


TOPOracle → This Page