Oracle exp/impエクスポートインポートツールの使用


一.エクスポートツールexp 1.オペレーティングシステムの次の実行可能なファイルです
ディレクトリを保存/ORACLE_HOME/bin
expエクスポートツールは、データベース内のデータバックアップをバイナリシステムファイルに圧縮する.異なるOS間で移行可能
  
3つのパターンがあります.
a.ユーザーモード:ユーザーのすべてのオブジェクト及びオブジェクトのデータをエクスポートする;
b.テーブルモード:ユーザーのすべてのテーブルまたは指定したテーブルをエクスポートする;
c.データベース全体:データベース内のすべてのオブジェクトをエクスポートします.
2.エクスポートツールexpインタラクティブコマンドライン方式の使用例
 
$exp test/test123@appdb
Enter array fetch buffer size:4096>リターン
Export file: expdat.dmp>m.dmpエクスポートされたファイル名を生成
(1)E(ntire database), (2)U(sers), or (3)T(ables): (2)U > 3
Export table data(yes/no):yes>リターン
Compress extents(yes/no):yes>リターン
Export done in ZHS16GBK character set and ZHS16GBK NCHAR character set
About to export specified tables via Conventional Path ...
Table(T)or Partition(T:P)to be exported:(RETURN to quit)>cmamenuエクスポートするテーブル名
. . exporting table CMAMENU 4336 rows exported
Table(T)or Partition(T:P)to be exported:(RETURN to quit)>エクスポートするテーブル名n
Table(T)or Partition(T:P)to be exported:(RETURN to quit)>リターン
Export terminated successfully without warnings.
 
3.エクスポートツールexp非インタラクティブコマンドライン方式の例
$exp scott/tiger tables=(emp,dept) file=/directory/scott.dmp grants=y 
 
説明:scottユーザーの2つのテーブルemp,deptをファイル/directory/scottにエクスポートします.dmp
$exp scott/tiger tables=emp query=\"where job=\'salesman\' and sal\<1600\" file=/directory/scott2.dmp 
 
説明:expにempをエクスポートするクエリー条件job='salesman'and sal<1600を追加
   
(個人的にはあまり使いませんが、条件を満たすレコードをテンポラリテーブルに生成してからexpを使うと便利です)
$
exp parfile=username.par file=/directory1/username_1.dmp,/directory1/username_2.dmp filesize=2000M log=/directory2/username_exp.log
パラメータファイルpar内容
userid=username/userpassword
buffer=8192000
compress=n
grants=y
説明:username.parはエクスポートツールexp用のパラメータファイルで、具体的なパラメータは必要に応じて変更できます
filesize生成されたバイナリバックアップファイルの最大バイト数を指定
    
(一部のOSで2 G物理ファイルの制限を解決し、圧縮速度を速め、履歴データディスクを容易に刻むことができるなど)
二.インポートツールimp
1.オペレーティングシステムの次の実行可能ファイル格納ディレクトリ/ORACLE_HOME/bin
impインポートツールは、EXPで形成するバイナリシステムファイルをデータベースにインポートする.
3つのパターンがあります.
a.ユーザーモード:ユーザーのすべてのオブジェクト及びオブジェクトのデータをエクスポートする;
b.テーブルモード:ユーザーのすべてのテーブルまたは指定したテーブルをエクスポートする;
c.データベース全体:データベース内のすべてのオブジェクトをエクスポートします.
      
IMPしか持っていないFULL_DATABASEとDBA権限のユーザーは、データベース全体のインポートを行うことができます.
  
impステップ:
   (1) create table  (2) insert data  (3) create index (4) create triggers,constraints
2.インポートツールimpインタラクティブコマンドライン方式の例
$ imp
Import: Release 8.1.6.0.0 - Production on     12  7 17:01:08 2001
(c) Copyright 1999 Oracle Corporation.  All rights reserved.
   :  test
  :****
   : Oracle8i Enterprise Edition Release 8.1.6.0.0 - 64bit Production
With the Partitioning option
JServer Release 8.1.6.0.0 - Production
    : expdat.dmp> /tmp/m.dmp
         (    8192 ) 30720>
         EXPORT:V08.01.06     
  :      TEST   ,        
    ZHS16GBK    ZHS16GBK NCHAR        
          (yes/no):no>
       ,       (yes/no):no> yes
    (yes/no):yes>
     (yes/no):yes>
        (yes/no):no> yes
.    TEST       SCOTT
. .                             "CMAMENU"       4336    
      ,     。 
 
3.インポートツールimp非インタラクティブコマンドライン方式の例
$ imp system/manager fromuser=jones tables=(accts)
$ imp system/manager fromuser=scott tables=(emp,dept)
$ imp system/manager fromuser=scott touser=joe tables=emp
$ imp scott/tiger file = expdat.dmp full=y
$ imp scott/tiger file =/mnt1/t1.dmp show=n buffer=2048000 ignore=n commit=y grants=y full=y log=/oracle_backup/log/imp_scott.log
$ imp system/manager parfile=params.dat
params.dat内容
file=dba.dmp show=n ignore=n grants=y fromuser=scott tables=(dept,emp)
4.インポートツールimpで発生する可能性のある問題
(1)データベースオブジェクトは既に存在する
一般的には、データをインポートする前に、ターゲットデータの下のテーブル、シーケンス、関数/プロシージャ、トリガなどを徹底的に削除する必要があります. 
データベース・オブジェクトはすでに存在し、デフォルトのimpパラメータではインポートに失敗します.
パラメータignore=yを使用するとexpファイル内のデータ内容がインポートされます
テーブルに一意のキーワードの制約がある場合、条件に合わないとインポートされません.
テーブルに一意のキーワードの制約がない場合、レコードの重複が発生します.
(2)データベースオブジェクトにプライマリ外部キー制約がある
プライマリ外部キー制約に合致しない場合、データのインポートに失敗します.
解決策:プライマリ・テーブルをインポートしてから依存テーブルをインポートする
disableターゲットはオブジェクトのプライマリ外部キー制約をインポートし、データをインポートした後、enableをインポートします.
(3)権限が足りない
AユーザーのデータをBユーザーにインポートするには、Aユーザーにimp_が必要です.full_database権限
(4)大テーブルのインポート(80 Mより大きい)に失敗した場合のストレージ割当て
デフォルトのEXPの場合、compress=Y、つまりすべてのデータを1つのブロックに圧縮する.
インポート時に、大きなブロックが1つ連続して存在しない場合、インポートに失敗します.
80 M以上の大きなテーブルを導出場合、compress=Nを覚えておくと、このようなエラーは起こらない.
(5)impとexpで使用する文字セットが異なる
文字セットが異なる場合、インポートに失敗する場合は、unix環境変数またはNTレジストリのNLS_を変更できます.LANG関連情報
インポートが完了してから変更する.
(6)impとexpバージョンの互換性が向上しない
impは低バージョンexpで生成されたファイルを正常にインポートでき、高バージョンexpで生成されたファイルをインポートできません.
状況に応じて
$ imp username/password@connect_string
説明:connect_stringは/ORACLE_HOME/network/admin/tnsnames.ora
定義されたローカルまたはリモート・データベースの名前
注意事項:
UNIX:/etc/hostsローカルまたはリモート・データベース・サーバのホスト名を定義するには
win 98:windowshostsとIPアドレスの対応関係
win2000:  winnt\system32\drivers\etc\hosts