システムユーザーでスキーマに対してデータベースのフルインポート権限を与えておく
GRANT DATAPUMP_IMP_FULL_DATABASE TO <schema>
impdp <user>/<password> DUMPFILE=<.dump file> DIRECTORY=<directory>
オプション | 説明 |
---|---|
DIRECTORY=<dir> | インポートファイルが置いてあるディレクトリを指定する。ただし、これはOS上のフルパスではなくディレクトリオブジェクトであることに注意する。 |
DUMPFILE=<file_name> | インポートファイルのファイル名を指定する |
LOGFILE=<file_name> | インポート時のログファイル名を指定する。 |
CONTENT | インポート対象を指定する。 data_only = 表のデータのみ metadata_only = オブジェクト定義のみ all = 定義とデータ(デフォルト) |
TABLE_EXISTS_ACTION | テーブルが存在する場合の動作を指定する。 skip = テーブルがあればスキップ append = データがあればスキップ。なければ追加する。 truncate = 既存の行を削除して上書きする。 replace = 既存のテーブルを一旦削除してからインポート。 |
FULL=<Y/N> | データベース全体をリストアする。 |
TABLESPACES | テーブルスペースを指定する。 |
SCHEMAS | スキーマを指定する。 |
TABLES | テーブルを指定する。 |
スキーマおよびそのオブジェクトが残っていると、インポート時にエラーが発生する。 そのため、ユーザーとそのオブジェクトを削除しておくと良い。
DROP USER <schema_name> cascade
テーブルデータのみインポートしたい場合やインポートする条件が細かく複数ある場合に、パラメータの指定が煩雑になってしまう。また、コマンドで直接パラメータを指定した場合、OSによってはパラメータをシングルクォーテーションでくくる必要があるなどの影響も考えられる。そこで、指定したいパラメータを記載しておくと管理がしやすくなる。 パラメータを指定して以下のように実行する
impdp SYSTEM/password PARFILE=param.par
パラメータファイル例(param.par)
SCHEMAS=take DUMPFILE=exported.dmp DIRECTORY=take_data_pump LOGFILE=import.log TABLE_EXISTS_ACTION=replace EXCLUDE=USER EXCLUDE=SEQUENCE EXCLUDE=PACKAGE EXCLUDE=PROCEDURE EXCLUDE=PACKAGE_BODY