engineer diary

エンジニアの日々の感想です

Oracle DataPump expdp/impdpについて

本番環境のデータベースを検証環境に持って行く必要があり、
expdp/impdpを用いて、移行作業を行いました。

本番環境及び検証環境のOracleのバージョンは12cです。

expdp/impdpとは

Oracle Database 10g から搭載された、コマンドで起動するエクスポート/インポート・ユーティリティです。
dpは、Data Pump(データ・ポンプ)の略となります。

以下がコマンド文です。
今回は、スキーマ単位で行いました。

エクスポート

expdp {ユーザー名}/{パスワード}@{接続文字列} directory={ディレクトリ名} dumpfile={ダンプファイル名} log={ログファイル名} schemas={スキーマ名}

インポート(テーブルのデータ/定義両方インポート)

impdp {ユーザー名}/{パスワード}@{接続文字列} directory={ディレクトリ名} dumpfile={ダンプファイル名} log={ログファイル名} schemas={スキーマ名}

インポート(テーブルのデータのみインポート)

impdp {ユーザー名}/{パスワード}@{接続文字列} directory={ディレクトリ名} dumpfile={ダンプファイル名} log={ログファイル名} schemas={スキーマ名} content=data_only

 


 

・directoryには、ディレクトリオブジェクト名を指定してください。
 SELECT * FROM ALL_DIRECTORIES
 上記SQLで取得したDIRECTORY_NAMEを指定してください。
 ※権限付与の問題で、取得できない場合があります
 SYSユーザなどでログインし、実行する)

・インポート先のテーブルに既にデータがある場合は、impdpにtable_exists_action=truncateを追加してください。
 既存データを削除してから、インポートを行います。

・エラーになった場合、権限が不足している可能性があります。
 grant read, write on directory {ディレクトリ名} to {ユーザー名}
 上記SQLを実行権限があるユーザー(SYSユーザなど)で実行してください。

以上がimpdp/expdpの説明となります。

 

以下、実行手順を備忘録として残す。

①本番環境でexpdpを実行(その際、ディレクトリオブジェクトへの権限が無かったため、SYSユーザーで権限を付与)
②出来たdmpファイルを検証環境へ持って行く
③検証環境でimpdpを実行(その際、ディレクトリオブジェクトへの権限が無かったため、SYSユーザーで権限を付与)