====== データベースのリストア ======
[[database:oracledb|一つ上へ]]
===== 前提 =====
システムユーザーでスキーマに対してデータベースのフルインポート権限を与えておく
grant DATAPUMP_IMP_FULL_DATABASE to
===== 構文 =====
impdp / DUMPFILE=<.dump file> DIRECTORY=
^オプション^説明^
|DIRECTORY=
|インポートファイルが置いてあるディレクトリを指定する。ただし、これはOS上のフルパスではなくディレクトリオブジェクトであることに注意する。|
|DUMPFILE=|インポートファイルのファイル名を指定する|
|LOGFILE=|インポート時のログファイル名を指定する。|
|CONTENT|インポート対象を指定する。\\ data_only = 表のデータのみ \\ metadata_only = オブジェクト定義のみ \\ all = 定義とデータ(デフォルト)|
|TABLE_EXISTS_ACTION|テーブルが存在する場合の動作を指定する。\\ skip = テーブルがあればスキップ \\ append = データがあればスキップ。なければ追加する。\\ truncate = 既存の行を削除して上書きする。\\ replace = 既存のテーブルを一旦削除してからインポート。|
|FULL=|データベース全体をリストアする。|
|TABLESPACES|テーブルスペースを指定する。|
|SCHEMAS|スキーマを指定する。|
|TABLES|テーブルを指定する。|
===== 例 =====
==== スキーマ削除後にインポートする ====
スキーマおよびそのオブジェクトが残っていると、インポート時にエラーが発生する。
そのため、ユーザーとそのオブジェクトを削除しておくと良い。
drop user 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