小さい頃はエラ呼吸

いつのまにやら肺で呼吸をしています。


Oracle11gでData Pumpを使ったテーブルのインポートとエクスポート

f:id:replication:20150211192119p:plain

はじめに

Oracleデータベースでテーブル内のデータを一時的にバックアップしておきたいときは、Data Pumpという機能でファイルにエクスポートすることができます。
この記事では、Data Pumpを使ったテーブル単位でのエクスポートとインポートの方法について書いています。

【オラクル認定資格試験対策書】ORACLE MASTER Bronze[Bronze DBA11g](試験番号:1Z0-018)完全詳解+精選問題集 (オラクルマスタースタディガイド)
エディフィストラーニング株式会社 飯室 美紀 岡野 友紀 西 昭彦 鈴木 佐和
ソフトバンククリエイティブ
売り上げランキング: 8,271

環境
  • Oracle Database 11g EE 11.2.0.1.0
  • Windows Server 2008 R2 SP1
事前準備

はじめに、エクスポートデータを格納するディレクトリを用意します。(ここではTEST_DIR)
sysユーザでログインして、TEST_DIR=cドライブ直下であることをOracleに定義します。

create or replace directory ディレクトリ名 as 'ファイルの場所';
conn sys/pwd as sysdba
create or replace directory TEST_DIR as 'C:¥';

続いて、ユーザにTEST_DIRに対する読み取り権限と書き込み権限を付与します。

grant read, write on directory ディレクトリ名 to ユーザ名; 
grant read, write on directory TEST_DIR to hoge; 
テーブルのエクスポート

テーブルのエクスポートはexpdbコマンドを使います。
コマンドプロンプトを起動して(sql*plusではありません)、以下のコマンドを実行します。

expdp ユーザID/パスワード directory=ディレクトリ名 tables=対象となるテーブル名
expdp hoge/hoge_pwd directory=test_dir tables=table01,table02

エクスポートが完了すると、c:¥EXPDAT.DMPというファイルができます。

テーブルのインポート

インポートも同様に、c:¥EXPDAT.DMPが存在する状態で、impdpを実行します。
このとき、インポート対象のテーブルが存在するとエラーになるので、table01とtable02は事前にdrop tableしておきます。

impdp ユーザID/パスワード directory=ディレクトリ名 dumpfile=ダンプファイル tables=対象となるテーブル名
impdp hoge/hoge_pwd directory=test_dir dumpfile=EXPDAT.DMP tables=table01,table02