OracleのEXPDP/IMPDP(エクスポート・インポート)の使い方

Oracleのエクスポート/インポート(expdp/dmpdp)について。

この記事の内容はコチラです

  • Oracleのデータをエクスポートする
  • Oracleにデータをインポートする
  • データベース全体、表領域、スキーマ、テーブル単位でバックアップする

今回は、Oracleのエクスポート/インポート(expdp/dmpdp)について紹介します!

Oracleのexpdp/impdp(エクスポート/インポート)

Oracleのデータをバックアップする方法の1つに、エクスポート/インポート(expdp/dmpdp)があります。

エクスポート(expdp)はデータベースを外部ファイル(dumpファイル)へ出力します。インポート(impdp)はdumpファイルからデータベースへ戻します。

エクスポート/インポート(expdp/dmpdp)は4種類のモードがあります。

  • データベース全体
  • 表領域
  • スキーマ
  • テーブル

これら4種類のエクスポート/インポートコマンドは下記の通りです。

データベース全体をエクスポート/インポートする

-- データベース全体をバックアップ
EXPDP/IMPDP {ユーザー}/{パスワード}@{接続文字列} 
  DIRECTORY={ディレクトリ} 
  DUMPFILE={ファイル名} 
  LOG={ログファイル名} 
  FULL=Y

-- 例
EXPDP test/pass@orcl DIRECTORY=dp_dir DUMPFILE=dmp_db.dmp LOG=exp.log FULL=Y
IMPDP test/pass@orcl DIRECTORY=dp_dir DUMPFILE=dmp_db.dmp LOG=imp.log FULL=Y

データベース全体をエクスポート/インポート(expdp/dmpdp)するには「FULL=Y」とします。バックアップに迷ったら、とりあえず全体をとっておくことをオススメします。

ディレクトリは事前に設定しておく必要があります。

表領域をエクスポート/インポートする

-- 表領域tabsp1を指定してバックアップ 
EXPDP/IMPDP {ユーザー}/{パスワード}@{接続文字列}
 DIRECTORY={ディレクトリ} 
 DUMPFILE={ファイル名} 
 LOG={ログファイル名} 
 TABLESPACES={表領域}

-- 例
EXPDP test/pass@orcl DIRECTORY=dp_dir DUMPFILE=dmp_file.dmp 
 LOGFILE=exp.log TABLESPACES=tabsp1

IMPDP test/pass@orcl DIRECTORY=dp_dir DUMPFILE=dmp_file.dmp
 LOGFILE=imp.log TABLESPACES=tabsp1

表領域単位でエクスポート/インポート(expdp/dmpdp)するには「TABLESPACES=表領域名」とします。

スキーマをエクスポート/インポートする

-- スキーマtestを指定してバックアップ 
EXPDP/IMPDP {ユーザー}/{パスワード}@{接続文字列}
 DIRECTORY={ディレクトリ} 
 DUMPFILE={ファイル名} 
 LOG={ログファイル名} 
 SCHEMAS={スキーマ} 

-- 例
EXPDP test/pass@orcl DIRECTORY=dp_dir DUMPFILE=dmp_file.dmp 
 LOGFILE=exp.log SCHEMAS=test
IMPDP test/pass@orcl DIRECTORY=dp_dir DUMPFILE=dmp_file.dmp 
 LOGFILE=imp.log SCHEMAS=test

スキーマ単位でエクスポート/インポート(expdp/dmpdp)するには「SCHEMAS=スキーマ名」とします。

テーブルをエクスポート/インポートする

-- スキーマtestのempテーブルを指定してバックアップ
EXPDP/IMPDP {ユーザー}/{パスワード}@{接続文字列} 
 DIRECTORY={ディレクトリ} 
 DUMPFILE={ファイル名} 
 LOG={ログファイル名} 
 TABLES={テーブル}

-- 例
EXPDP test/pass@orcl DIRECTORY=dp_dir DUMPFILE=dmp_table.dmp 
 LOGFILE=exp.log TABLES=test.emp
IMPDP test/pass@orcl DIRECTORY=dp_dir DUMPFILE=dmp_table.dmp 
 LOGFILE=imp.log TABLES=test.emp

テーブル単位でエクスポート/インポート(expdp/dmpdp)するには「TABLES=テーブル名」とします。

expdp/impdp(エクスポート/インポート)のオプション

DIRECTORY

ディレクトリオブジェクトを指定しています。事前にディレクトリを作成しておく必要があります。上記では「dp_dir」になります。ディレクトリについてはこちらを参照してください。

DUMPFILE

バックアップ先、バックアップ元のダンプファイル名を指定します。拡張子は「.dmp」です。

LOGFILE

ログファイル名を指定します。省略可能です。

CONTENT

対象を「データのみ」か「テーブルの定義のみ」かに絞ることができるオプションです。

  • DATA_ONLY ・・・テーブルのデータのみ
  • METADATA_ONLY ・・・テーブルの定義のみ
  • ALL ・・・テーブルのデータ・定義を両方

データのみインポートする場合は、「CONTENT=data_only」をIMPDPに追加します。

TABLE_EXISTS_ACTION

インポート時に使用できるオプションです。

  • SKIP ・・・ テーブルがあればスキップします
  • APPEND ・・・データがあればスキップ。なければ追加します
  • TRUNCATE ・・・既存の行を削除して上書きします
  • REPLACE ・・・既存のテーブルを一旦削除してからインポートします

データをすべてまっさらにして上書きする場合は、「TABLE_EXISTS_ACTION = REPLACE」をIMPDPに追加します。

 

以上、Oracleのデータを論理バックアップするエクスポート/インポート(expdp/impdp)でした。

 

コメント