exp/impを使用したデータ移行手順
本項では、オリジナルのエクスポート(exp)、インポートユーティリティ(imp)を使用したデータ移行手順について説明します。
オリジナルのexp/impは、Oracle Database 11gからは原則としてサポートされなくなったため、利用される場面は少なくなりました。それでも9i以前のバージョンからのデータ移行作業などでは、まだまだexp/impを使用する場面はあります。システム更改時にexp/impを使用したデータ移行作業やバックアップ作業の際に参考にして頂ければと思います。
作業前の前提条件
catexp.sqlまたはcatalog.sqlスクリプトが実行されたことの確認
スクリプトを実行すると、次の処理が行われ、データベースはエクスポートおよびインポート操作に備えて調整されます。
・データ・ディクショナリへの必要なエクスポート・ビューおよびインポート・ビューの作成
・EXP_FULL_DATABASEロールおよびIMP_FULL_DATABASEロールの作成
・EXP_FULL_DATABASEおよびIMP_FULL_DATABASEロールへのすべての必要な権限の割当て
・DBAロールへのEXP_FULL_DATABASEおよびIMP_FULL_DATABASEの割当て
・インストールされているcatexp.sqlのバージョンの記録
エクスポート・ファイルを書き込むための十分なディスクまたはテープ記憶域が存在することの確認
十分な領域がないと、エクスポート・ユーティリティは書込み失敗エラーが発生して終了します。どれくらいの空き容量が必要なのか分からない場合は、表のサイズから必要な最大領域を見積もることもできます。表のサイズは、Oracleデータ・ディクショナリのUSER_SEGMENTSビューで確認できます。
必要なアクセス権限を所有していることの確認
オリジナルのエクスポート(exp)、インポートユーティリティ(imp)を使用するには、Oracle Databaseに対するCREATE SESSION権限が必要です。また別のユーザーが所有している表をエクスポートするには、EXP_FULL_DATABASEロールを有効にする必要があります。
|
本項で紹介する移行手順は、exp/impの『ユーザモード』になります。システム更改に伴い、ハードウェアやソフトウェアのバージョン変更はもちろんのこと、データベースのインスタンスやユーザの統合や分離も想定されます。そういったケースでも柔軟に対応が可能な『ユーザモード』での移行手順を紹介したいと思います。
※移行モードや移行対象オブジェクトの詳細は、移行モードごとの移行対象オブジェクトを参照
【前提】今回の移行対象ユーザは、「POYO」とします。
@ 移行対象ユーザのオブジェクト一覧を確認 (作業対象サーバ:移行元)
$ sqlplus / as sysdba
SQL> select object_name, object_type from dba_objects where owner='POYO' order by object_name;
$ exit
|
上記のSQLの出力結果は、正しくオブジェクトが移行されたかを確認する際の比較データに使用するためファイルに保存しておきます。
A エクスポート (作業対象サーバ:移行元)
$ exp system/****** owner='POYO' file=poyo.dmp log=poyo.log;
$ grep '^ORA-' *.log
|
※カレントディレクトリにダンプファイルとログファイルが作成されます。またエクスポート中にORAエラーが発生していないことを確認します。
B ダンプファイルの移動 (作業対象サーバ:移行元⇒移行先)
手段は様々ですが、ネットワーク経由もしくは物理的に運送し新環境にAのダンプファイルを配置します。
※ネットワーク経由でダンプファイルを転送する場合は、圧縮処理をお勧めします。
C インポート (作業対象サーバ:移行先)
$ imp system/****** fromuser='POYO' touser='POYO' file=poyo.dmp log=poyo.log;
$ grep '^ORA-' *.log
|
※上記コマンドでは、移行先のPOYOスキーマオブジェクトとしてインポートを行っています。またインポート中にORAエラーが発生していないことを確認します。
<C-1 別のユーザへのインポート>
$ imp system/****** fromuser='POYO' touser='HOGE' file=poyo.dmp log=poyo.log; |
※HOGEスキーマオブジェクトとしてインポートを行っています。
<C-2 特定テーブルのみインポート>
$ imp system/****** fromuser='POYO' touser='POYO' tables='TPOYO' file=poyo.dmp
log=poyo.log; |
※TPOYOテーブルのみのインポートを行っています。
D インポート後のオブジェクト一覧を確認 (作業対象サーバ:移行先)
$ sqlplus / as sysdba
SQL> select object_name, object_type from dba_objects where owner='POYO' order by object_name;
$ exit
|
※インポート後に、POYOスキーマオブジェクトを出力し、@と差分がないことを確認します。
◎ エクスポート/インポート(exp/imp)を用いたデータ移行
|-エクスポート/インポート(exp/imp)について
|-移行モードごとの移行対象オブジェクトについて
|-exp/impを使用したデータ移行手順
◎ DataPump(expdp/impdp)を用いたデータ移行
|-DataPump(expdp/impdp)について
|-DataPump(expdp/impdp)を使用したデータ移行手順
◎ SQL*Loaderを用いたデータ移行
|-SQL*Loaderについて
|-SQL*Loaderを使用したデータ移行手順
◎ OracleGoldenGateを用いたデータ移行
|-OracleGoldenGateについて
|
スポンサードリンク
|