Oracle DB へのインポート
インポートとは、簡単に言うと「データベースに外部ファイルからデータを登録すること」。
Oracle DB へインポートを行う際、 datapump ユーティリティを使用するのが一般的。
実行する際は、エクスポート時に出力した dmp (ダンプファイル)がインプットとなる。
対象は業務データそのものだけではなく、メタデータ(データディクショナリで管理される定義情報)も扱える。
旧 imp コマンドに比べはるかに高速になり、対象データ単位やインポート時の変更など、
オプション・パラメータを使い分けることで柔軟な対応が可能となっている。
例えば、impdp でデータのみを対象とする(content=data_only)、事前に既存データを削除する(table_exists_action=truncate)などが良く使われるオプション。
また、スキーマの変更(remap_schema)や、表領域の変更(remap_tablespace)などの構成変更も行える。
バージョンアップの度に新機能が追加されており、現在主力の Oracle 12c はもちろん、
最新 Oracle18c においても実装されているので、覚えておきたいコマンド。
import単位
データベース全体
impdp ユーザ/パスワード directory=datapumpディレクトリ dumpfile=dmpファイル full=y
表領域モード
impdp ユーザ/パスワード directory=datapumpディレクトリ dumpfile=dmpファイル tablespaces=表領域
スキーマモード
impdp ユーザ/パスワード directory=datapumpディレクトリ dumpfile=dmpファイル schemas=スキーマ
テーブルモード
impdp ユーザ/パスワード directory=datapumpディレクトリ dumpfile=dmpファイル tables=スキーマ.テーブル
トランスポータブル表領域モード
トランスポートは、単純な export & import より高速のため、大容量の表領域移送に適している。ただし色々と制限事項もあるため、特殊な移行要件でなければ上記4つのモードから選択するのが一般的。
主なオプション
上記 import 単位のコマンドに続けて「オプション名 = 値」のように指定する。
デフォルト値が未記載のオプションを使用する場合は、任意の値を入力可能。
logfile オプション
ディレクトリオブジェクトのパスに、ログファイルが出力される。
対象となるディレクトリオブジェクトの権限がある場合は、ディレクトリ名も省略可能。
nologfile オプション
ログファイルを出力しない。
ログファイルを出力する。
content オプション
定義とデータ両方をインポートする。
テーブル自体が存在しない状態で、定義だけをインポートする。
定義が作成済みのテーブルにデータのみをインポートする。
table_exists_action オプション
※content=data_only の場合、table_exists_action オプションは無効。
table_exists_action=skip では、テーブルが存在する場合、データのインポートは行わない。
table_exists_action=truncate では、テーブルが存在する場合、既存データ行を内部的に truncate してからデータをインポートする。クラスタ表では使用できない。
table_exists_action=append では、テーブルが存在する場合、既存データ行を変更せずにインポートする。append パラメータの注意点としては、制約に引っかかった際に、重複していないデータも含め全件がスキップされてしまうこと。
table_exists_action=replace では、テーブルが存在する場合、テーブルそのものを内部的に drop してから再作成して、データをインポートする。旧 imp コマンドの ignore 相当のパラメータ。
exclude オプション
exclude に指定することで、インポート対象から除外する。
オブジェクトタイプには、table や index をはじめ、constraint (制約) や、grant (オブジェクト・システム権限) なども指定可能。更に、指定したタイプから除外対象を絞り込む場合、以下のように指定する。
exclude=table:\”= \’hoge\’\”
exclude=table:\”like \’hoge%\’\”
remap_schema オプション
異なるスキーマへ変更する。
remap_tablepsace オプション
異なる表領域へ変更する。
remap_tablespace=users:hogetbs (この場合 users 表領域から hogetbs 表領域へ変更)
remap_table オプション
異なるテーブルへ変更する。
reuse_datafiles オプション
既存のデータファイルを初期化・再利用する。
既存のデータファイルを初期化・再利用しない。
data_options オプション
append ヒントを無効化する。
制約違反が発生しても、ロールバックせずにインポートする。
encryption_password オプション
暗号化データを対象とする場合のセキュリティ強化に使用する。
※ Enterprise Edition で Advanced Security オプションライセンスが必要。
parallel オプション
※ Enterprise Edition