【Oracle Database】備忘録-Export/Import

業務で若干触れたので、備忘録として…
情報のバージョンがバラバラの可能性があります。

そもそもの話

Export/Importとは
Oracle DatabaseにおけるExport/Importは、
テーブル等のオブジェクトをバックアップ、移行する為の仕組みです。
そもそも単語としてOracle DBの専門用語ではないので、イメージはし易いかもしれません。
Exportによって作成されるファイルをダンプファイルと言い、バイナリ形式です。
このファイルはExport/Importのみで扱う事ができ、FTPで転送可能となります。
Importによってダンプファイルからデータを読み込みます。

主な目的
データベースのバックアップや他のDBへのデータ移行に使う事が多いです。

Export/Importの種類

Export/Import
exp、impコマンドで起動するオリジナルのExport/Import

Data Pump
expdp、impdpコマンドで起動するExport/Import
高速に動作するOracle Database10gから使用可能です。

違い
一番の違いはExportによって作成されるダンプファイルがどこにできるか だと思います。
Export/ImportはクライアントPCから実行し、クライアントPC側にファイルが保存されます。
一方で、Data PumpはDBサーバー側の機能で実行され、サーバー側にファイルが保存されます。

Export/ImportData Pump
メリットデメリット単純だが、遅い複雑だが、早い
コマンドexp、impexpdp、impdp
ダンプファイルの場所クライアントPCサーバー

Data Pump の使い方

基本的な順番は下記の通り
1.ダンプファイルの格納場所準備
2.エクスポート
3.インポート

事前準備が必要です。
ダンプファイルが格納される場所(directory object)を作成します。
/home/dumpはOS上に存在する必要があります。

-- DUMP_DIR: ディレクトリオブジェクト名
CREATE OR REPLACE DIRECTORY DUMP_DIR as '/home/dump';

ディレクトリオブジェクトへの権限があるユーザを用意

GRANT READ, WRITE ON DIRECTORY DUMP_DIR TO SCOTT;

実際にエクスポートする例

expdp scott/tiger directory=TEST_DIR DUMPFILE=scott_table.dmp TABLES=scott.emp REUSE_DUMPFILES=Y
パラメータ内容
scott/tigerログインユーザー名/パスワード
DIRECTORY=TEST_DIRダンプファイルを保存するOracleディレクトリオブジェクト
DUMPFILE=scott_table.dmp出力するダンプファイル名
TABLES=scott.empエクスポート対象のテーブル(スキーマ.テーブル)
REUSE_DUMPFILES=Y既存の同名ファイルを上書きする

インポートの例(同一DBサーバーの場合)
別のDBサーバーにインポートする場合はダンプファイルをインポートするサーバーにコピーし、ディレクトリオブジェクトの作成が必要になります。

impdp scott/tiger directory=DUMP_DIR dumpfile=scott_data.dmp logfile=import.log schemas=SCOTT

別のDBサーバーにインポート

-- まずはダンプファイルのコピー
scp /home/dump/scott_data.dmp oracle@importserver:/home/dump/

インポート先でディレクトリ作成(ディレクトリオブジェクトへの権限があるユーザを用意)

CREATE OR REPLACE DIRECTORY DUMP_DIR AS '/home/dump';
GRANT READ, WRITE ON DIRECTORY DUMP_DIR TO SCOTT;

インポートします。

impdp scott/tiger directory=DUMP_DIR dumpfile=scott_data.dmp tables=SCOTT.EMP logfile=impdp_emp.log

「table_exists_action」でインポートする際に既存のオブジェクトが存在した時の動きを制御できます。

table_exists_action(12c)

https://docs.oracle.com/cd/E57425_01/121/SUTIL/GUID-C9664F8C-19C5-4177-AC20-5682AEABA07F.htm

参考

初心者向け公式ドキュメント(Oracle DB 11g)

https://www.oracle.com/jp/a/tech/docs/technical-resources/20100908-expimp-beginner.pdf

コメント

タイトルとURLをコピーしました