ヘッダーをスキップ

Oracle Databaseユーティリティ
11g リリース1(11.1)

E05768-02
目次
目次
索引
索引

戻る 次へ

20 オリジナルのエクスポートおよびインポート

この章では、それぞれexpおよびimpコマンドで起動するオリジナルのエクスポート・ユーティリティおよびインポート・ユーティリティの使用方法について説明します。これらのユーティリティは、Oracle Database 10g から使用可能となるOracle Data Pump ExportおよびImportユーティリティと区別するために、オリジナルのエクスポート・ユーティリティおよびインポート・ユーティリティと呼びます。データ・ポンプのエクスポートおよびインポート・ユーティリティは、それぞれexpdpおよびimpdpコマンドで起動します。


注意:

オリジナルのエクスポート・ユーティリティは、Oracle Database 11g からは一般的な使用としてサポートされません。オリジナルのエクスポート・ユーティリティの使用が11g でサポートされるのは、10g リリース2(10.2)以前の下位のデータベース・バージョンにXMLTypeデータを移行する場合のみです。したがって、次のようにオリジナルのエクスポートおよびインポート・ユーティリティが必要な場合を除いて、新しいデータ・ポンプ・エクスポートおよびインポート・ユーティリティの使用をお薦めします。

  • オリジナルのエクスポート・ユーティリティ(exp)を使用して作成されたファイルをインポートする場合。

  • オリジナルのインポート・ユーティリティ(imp)を使用したインポートを予定しているファイルをエクスポートする場合。たとえば、Oracle Database 10g からデータをエクスポートして、そのデータを旧リリースのデータベースにインポートする場合です。

 

参照:

 第I部「Oracle Data Pump」 

この章の内容は、次のとおりです。

エクスポート・ユーティリティおよびインポート・ユーティリティとは

エクスポート・ユーティリティおよびインポート・ユーティリティを使用すると、異なるハードウェア構成およびソフトウェア構成のプラットフォーム上にあるOracle Database間で、データ・オブジェクトの転送が簡単にできます。

Oracle Databaseに対してエクスポートを実行すると、まずオブジェクト(表など)が抽出され、次にそれに関連するオブジェクト(索引、コメント、権限など)が抽出されます。抽出されたデータは、エクスポート・ファイルに書き込まれます。インポート・ユーティリティは、ダンプ・ファイルからオブジェクトの定義および表データを読み込みます。

エクスポート・ファイルは、通常、ディスクまたはテープにあるバイナリ形式のOracleダンプ・ファイルです。ダンプ・ファイルは、FTPを使用して別サイトに転送、または物理的に移送(テープの場合)できます。そのため、インポート・ユーティリティでエクスポート・ファイルを使用することで、ネットワークで接続されていないシステム上のデータベース間でデータを転送できます。また、標準のバックアップ手順以外のバックアップとしても使用できます。

エクスポート・ダンプ・ファイルは、Oracleのインポート・ユーティリティを使用した場合のみ読取りが可能です。ダンプ・ファイルの作成に使用したエクスポート・ユーティリティより前のバージョンのインポート・ユーティリティは使用できません。

また、実際にインポートを実行せずにエクスポート・ファイルの内容を表示することもできます。この場合は、インポート・ユーティリティのSHOWパラメータを使用します。詳細は、「SHOW」を参照してください。

ASCII固定形式ファイルまたは区切りファイルからデータをロードするには、SQL*Loaderユーティリティを使用します。

参照

 

エクスポート・ユーティリティおよびインポート・ユーティリティを使用する前に

エクスポート・ユーティリティおよびインポート・ユーティリティを使用する前に、次のことを行う必要があります。

catexp.sqlまたはcatalog.sqlの実行

エクスポート・ユーティリティおよびインポート・ユーティリティを使用するには、データベースを作成するかまたはOracle Database 10g へ移行した後で、スクリプトcatexp.sqlまたは(catexp.sqlを実行する)catalog.sqlを実行する必要があります。

データベースに対して、catexp.sqlまたはcatalog.sqlを実行するのは1回のみです。スクリプトを実行すると、次の処理が行われ、データベースはエクスポートおよびインポート操作に備えて調整されます。

エクスポート操作に十分なディスク領域の確保

エクスポートを実行する前に、エクスポート・ファイルの書込み先であるディスク上またはテープ上に、十分な記憶領域があることを確認してください。十分な領域がない場合は、書込み失敗というエラーでエクスポートの処理が中止されます。

表サイズを使用して、必要な最大容量を見積もることができます。表サイズは、Oracleデータ・ディクショナリのUSER_SEGMENTSビューで参照できます。次の問合せを行うと、すべての表に関するディスクの使用状況が表示されます。

SELECT SUM(BYTES) FROM USER_SEGMENTS WHERE SEGMENT_TYPE='TABLE';

問合せの結果には、LOB(ラージ・オブジェクト)列、VARRAY列またはパーティション表に格納されているデータに使用されているディスク領域は含まれません。

参照:

ディクショナリ・ビューの詳細は、『Oracle Databaseリファレンス』を参照してください。 

エクスポートおよびインポート操作のアクセス権限の確認

エクスポート・ユーティリティおよびインポート・ユーティリティを使用するには、Oracle Databaseに対するCREATE SESSION権限が必要です。この権限は、データベースの作成時に設定されるCONNECTロールに含まれます。別のユーザーが所有する表をエクスポートする場合は、EXP_FULL_DATABASEロールを使用可能にしておく必要があります。このロールは、すべてのデータベース管理者(DBA)に付与されています。

EXP_FULL_DATABASEロールに含まれるシステム権限がない場合、別のユーザーのスキーマに格納されているオブジェクトをエクスポートすることはできません。シノニムを作成しても、別のユーザーのスキーマの表はエクスポートできません。

多数のシステム・スキーマは、ユーザー・スキーマではないため、エクスポートできません。システム・スキーマには、Oracleが管理するデータおよびメタデータが含まれています。エクスポートされないスキーマの例としては、SYSORDSYSMDSYSなどがあります。

他のユーザーが作成したエクスポート・ファイルをインポートすることもできます。ただし、EXP_FULL_DATABASEロールを所有するユーザーが作成したエクスポート・ファイルをインポートするには、IMP_FULL_DATABASEロールが必要です。通常、データベース管理者(DBA)にはこれらの両方のロールが割り当てられています。

エクスポート・ユーティリティおよびインポート・ユーティリティの起動

次のいずれかの方法を使用して、エクスポート・ユーティリティおよびインポート・ユーティリティの起動およびパラメータの指定ができます。

これらのいずれかの方法を使用する前に、使用可能なパラメータについての説明を必ず読んでください。「エクスポート・パラメータ」および「インポート・パラメータ」を参照してください。


注意:

LOG_USERおよびPRIV_USERなどのインポート・ジョブの属性は、エクスポート操作時の値に関係なく、インポートを実行するユーザーに常に設定されます。たとえば、ユーザーscottとしてエクスポートを実行した後に、ユーザーsystemとしてインポートすると、ダンプ・ファイル・セットのジョブはすべてLOG_USERおよびPRIV_USER = SYSTEMで作成されます。

この制限に対処するには、ジョブの所有者としてジョブをエクスポートおよびインポートする必要があります。 


SYSDBAでのエクスポート・ユーティリティおよびインポート・ユーティリティの起動

SYSDBAは内部的に使用され、一般ユーザーとは異なる特別な機能を持ちます。そのため、通常、次の場合以外は、エクスポート・ユーティリティまたはインポート・ユーティリティをSYSDBAで起動する必要はありません。

コマンドライン

次の構文を使用して、すべての有効なパラメータおよびその値をコマンドラインから指定できます(ユーザー名とパスワードを入力するように要求されます)。

exp PARAMETER=value

または

exp PARAMETER=(value1,value2,...,valuen)

システムでのコマンドラインの最大長を超える数のパラメータは指定できません。この例では、使用してエクスポート・ユーティリティを起動するexpのかわりに、impを使用してインポート・ユーティリティを起動できます。

パラメータ・ファイル

この項の情報は、エクスポート・ユーティリティおよびインポート・ユーティリティの両方に該当しますが、例ではエクスポート・コマンドのexpを使用します。

パラメータ・ファイルに、すべての有効なパラメータおよびその値を指定できます。パラメータを1つのファイルに格納することによって、パラメータを簡単に変更または再利用できるため、エクスポート・ユーティリティの起動方法としてパラメータを1つのファイルに格納することをお薦めします。データベースごとに別のパラメータを使用する場合は、複数のパラメータ・ファイルを作成できるので、それぞれにパラメータ・ファイルを用意すると便利です。

フラット・ファイル用のテキスト・エディタを使用してパラメータ・ファイルを作成します。コマンドライン・オプションPARFILE=filenameを指定すると、エクスポート・ユーティリティは、コマンドラインからではなく指定されたファイルからパラメータを読み込みます。次に例を示します。

パラメータ・ファイルは、次のいずれかの構文を使用して指定します。

PARAMETER=value
PARAMETER=(value)
PARAMETER=(value1, value2, ...)

次に、パラメータ・ファイル内のリストの一部を示します。

FULL=y
FILE=dba.dmp
GRANTS=y
INDEXES=y
CONSISTENT=y


注意:

パラメータ・ファイルの最大サイズは、オペレーティング・システムによって制限されます。また、パラメータ・ファイル名はオペレーティング・システムのネーミング規則に従います。 


シャープ(#)記号を使用すると、パラメータ・ファイルにコメントを追加できます。シャープ(#)の右側にある文字はすべて無視されます。

コマンドラインでのパラメータの入力と同時にパラメータ・ファイルを指定できます。実際、パラメータ・ファイルとコマンドラインの両方に同じパラメータを指定することもできます。コマンドラインでのPARFILEパラメータと他のパラメータの位置によって、優先されるパラメータが決まります。たとえば、パラメータ・ファイルparams.datでパラメータINDEXES=yを指定し、エクスポート・ユーティリティを次のコマンドで起動するとします。

exp PARFILE=params.dat INDEXES=n

この場合、INDEXES=nPARFILE=params.datの後にあるため、パラメータ・ファイルに指定されているINDEXESパラメータの値は、INDEXES=nによって上書きされます。

参照:

 

対話方式モード

プロンプトで各パラメータの値を入力する場合は、コマンドラインでexpまたはimpのいずれかを指定するだけです。ユーザー名とパスワードを入力するように要求されます。

その後、一般的に使用されるパラメータが表示されます。デフォルト値を受け入れるか(示された場合)、または異なる値を入力できます。コマンドライン対話方式では、すべての機能に関してプロンプトが表示されるわけではありません。また、コマンドライン対話方式は下位互換用のみに提供されています。対話方式のインタフェースを使用する場合は、Oracle Enterprise Managerのエクスポートまたはインポート・ウィザードの使用をお薦めします。

エクスポート・ユーティリティの対話方式を使用する際の制限事項

対話方式を使用する場合は、次のことに注意してください。

オンライン・ヘルプの利用

エクスポート・ユーティリティおよびインポート・ユーティリティでは、オンライン・ヘルプが提供されます。エクスポート・ユーティリティのヘルプを起動するにはコマンドラインにexp help=yを入力します。インポート・ユーティリティのヘルプを起動するにはimp help=yを入力します。

オブジェクトをスキーマにインポートする方法

表20-1に、自分のスキーマにオブジェクトをインポートするために必要な権限を示します。これらのすべての権限は、あらかじめRESOURCEロールに含まれています。

表20-1    自分のスキーマにオブジェクトをインポートするために必要な権限 
オブジェクト  必要な権限(該当する場合の権限タイプ) 

クラスタ 

CREATE CLUSTER(システム)またはUNLIMITED TABLESPACE(システム)。ユーザーに表領域割当て制限が割り当てられている必要があります。 

データベース・リンク 

CREATE DATABASE LINK(システム)およびリモート・データベースの場合はCREATE SESSION(システム) 

表のトリガー 

CREATE TRIGGER(システム) 

スキーマのトリガー 

CREATE ANY TRIGGER(システム) 

索引 

CREATE INDEX(システム)またはUNLIMITED TABLESPACE(システム)。ユーザーに表領域割当て制限が割り当てられている必要があります。 

整合性制約 

ALTER TABLE(オブジェクト) 

ライブラリ 

CREATE ANY LIBRARY(システム) 

パッケージ 

CREATE PROCEDURE(システム) 

プライベート・シノニム 

CREATE SYNONYM(システム) 

順序 

CREATE SEQUENCE(システム) 

スナップショット 

CREATE SNAPSHOT(システム) 

ストアド・ファンクション 

CREATE PROCEDURE(システム) 

ストアド・プロシージャ 

CREATE PROCEDURE(システム) 

表データ 

INSERT TABLE(オブジェクト) 

表定義(コメントおよび監査オプションを含む) 

CREATE TABLE(システム)またはUNLIMITED TABLESPACE(システム)ユーザーに表領域割当て制限が割り当てられている必要があります。 

ビュー 

実表の場合は

CREATE VIEW(システム)およびSELECT(オブジェクト)、またはSELECT ANY TABLE(システム) 

オブジェクト型 

CREATE TYPE(システム) 

外部関数ライブラリ 

CREATE LIBRARY(システム) 

ディメンション 

CREATE DIMENSION(システム) 

演算子 

CREATE OPERATOR(システム) 

索引タイプ 

CREATE INDEXTYPE(システム) 

権限のインポート

他のユーザーに付与されている権限をインポートするには、インポートを開始したユーザーがそのオブジェクトの所有者であるか、With Grant Option付きのオブジェクト権限を所有している必要があります。表20-2に、権限がターゲット・システムで有効となるために必要な条件を示します。

表20-2    権限のインポートに必要な権限 
権限  条件 

オブジェクト権限 

オブジェクトがユーザーのスキーマに存在しているか、

ユーザーがWith Grant Option付きのオブジェクト権限を所有しているか、または

IMP_FULL_DATABASEロールを使用可能にする必要があります。 

システム権限 

ユーザーがWith Admin OptionおよびSYSTEM権限を所有している必要があります。 

他のスキーマへのオブジェクトのインポート

オブジェクトを他のユーザーのスキーマにインポートする場合は、IMP_FULL_DATABASEロールを使用可能にしておく必要があります。

システム・オブジェクトのインポート

システム・オブジェクトを全データベース・エクスポート・ファイルからインポートする場合は、IMP_FULL_DATABASEロールを使用可能にする必要があります。エクスポート・ファイルが全体エクスポートの場合にパラメータFULLを指定すると、次のシステム・オブジェクトがインポート対象に含まれます。

処理上の制限事項

エクスポート・ユーティリティおよびインポート・ユーティリティを使用してデータを処理する場合、次の制限が適用されます。

表オブジェクト: インポートの順序

表オブジェクトは、エクスポート・ファイルから読み込まれたとおりにインポートされます。エクスポート・ファイルには、次の順序でオブジェクトが格納されています。

  1. 型定義

  2. 表定義

  3. 表データ

  4. 表索引

  5. 整合性制約、ビュー、プロシージャおよびトリガー

  6. ビットマップ索引、ファンクション索引およびドメイン索引

インポートの順序は次のとおりです。まず、新しい表が作成されます。次にデータがインポートされ、索引が作成されます。その後トリガーがインポートされ、整合性制約が新しい表で使用可能になり、ビットマップ索引、ファンクション索引またはドメイン索引(あるいはそれらのすべて)が作成されます。このようにインポートされると、表のインポート順序が原因でデータが拒否されることがなくなります。また、同じデータについて、トリガーが重複して2回(最初の挿入時に1回、インポート中に1回)起動することもなくなります。

たとえば、emp表にdept表に対する参照整合性制約が指定されて、emp表が最初にインポートされた場合、この制約が使用可能になっていると、まだdeptにインポートされていない部門を参照するすべてのemp行が拒否されます。

データが既存の表にインポートされた場合でも、インポートの順序によっては参照整合性のエラーが発生することがあります。前述の状況で、emp表がすでに存在していて、参照整合性制約が使用可能になっている場合、多くの行が拒否されることがあります。

その表自体への参照整合性制約がある場合にも、同様の状況が発生します。たとえば、emp表においてscottの管理者がdrakeで、drakeの行がまだロードされていない場合、インポートが終了した場合には有効になるとしても、scottの行はロードされません。


注意:

このような理由から、既存の表にインポートする場合は、参照制約を使用禁止にすることをお薦めします。インポートの完了後、再度制約を使用可能にできます。 


既存の表へのインポート

この項では、既存の表にデータをインポートする場合に考慮すべき点について説明します。

データのインポート前に手動で表を作成する方法

エクスポート・ファイルから表にデータをインポートする前に手動で表を作成する場合は、以前使用した表定義を使用するか、互換性のある形式を使用して表を作成します。たとえば、列幅の増加および列順序の変更はできますが、次のことはできません。

参照制約を使用禁止にする方法

通常のインポートの順序では、参照制約はすべての表がインポートされた後にインポートされます。この順序でインポートすることによって、まだインポートされていないデータに対する参照整合性制約が存在する場合に発生するエラーを回避できます。

データが既存の表にロードされる場合に、このようなエラーが発生することがあります。たとえば、表empmgr列に参照整合性制約が定義されており、その制約によって表emp内のマネージャ番号が検証される場合、マネージャの行がインポートされていない時点では、従業員の行が基準を満たしていても、参照整合性制約の違反になることがあります。

このようなエラーが発生すると、エラー・メッセージが生成され、失敗した行をバイパスして、引き続き他の行が表にインポートされます。制約を手動で使用禁止にすると、このエラーを回避できます。

複数の表にまたがって参照制約が存在すると、問題になることがあります。たとえば、emp表の順序がエクスポート・ファイル内でdept表より先であるにもかかわらず、emp表からdept表へ参照チェックが行われると、参照制約違反のため、emp表のいくつかの行がインポートされないことがあります。

このようなエラーが発生しないようにするには、データを既存の表にインポートするときに、参照整合性制約を使用禁止にします。

手動によるインポートの順序付け

インポート後に制約が再び使用可能にされると、表全体がチェックされますが、大きな表の場合はチェックに時間がかかることがあります。表のチェックにかかる時間が長すぎる場合、インポートを手動で順序付ける方が効率的なこともあります。

そのためには、エクスポート・ファイルからのインポートを1回ではなく複数回に分けて実行します。まず、参照チェックのターゲットである表をインポートします。次に、これらの表を参照する表をインポートします。表が循環的に相互参照している場合、および表がその表自体を参照している場合を除き、この方法は有効です。

インポート操作上のスキーマおよびデータベース・トリガーの影響

特定のスキーマに対するDDLイベントまたはデータベースに対するDDL関連イベントで実行するように定義されているトリガーは、システム・トリガーです。これらのトリガーは、特定のインポート操作に悪い影響を与える場合があります。たとえば、表などのデータベース・オブジェクトを正常に再作成できない場合があります。これによって、トリガーが原因で問題が発生したということがわからないエラーが返されます。

データベース管理者およびシステム・トリガーを作成するユーザーは、このようなトリガーによって、ユーザーが、権限を持つデータベースの操作を実行できなくなることがないように確認する必要があります。システム・トリガーをテストするには、次の手順に従います。

  1. トリガーを定義します。

  2. データベース・オブジェクトを作成します。

  3. 表モードまたはユーザーモードでオブジェクトをエクスポートします。

  4. オブジェクトを削除します。

  5. オブジェクトをインポートします。

  6. オブジェクトが正常に再作成されていることを確認します。


    注意:

    全体エクスポートでは、スキーマSYSが所有するトリガーはエクスポートされません。SYSトリガーは、全体インポートの前後のいずれかに手動で再作成する必要があります。SYSトリガーによってインポートの進行を妨げるような処理が定義されないように、SYSトリガーはインポートの後に再作成することをお薦めします。 


エクスポート・モードおよびインポート・モード

エクスポート・ユーティリティおよびインポート・ユーティリティには、次の4種類の操作モードがあります。

表20-3に、各モードでエクスポートおよびインポートされるオブジェクトのリストを示します。


注意:

表モードを使用してANYDATA型の列を含む表をインポートする場合、次のエラーが発生する場合があります。

ORA-22370: Nonexistent typeメソッドの使用方法が正しくありません。

このメッセージは、ANYDATA列が、データベースに存在しない他の型に依存することを示します。表モードを使用してANYDATA型を使用する表をインポートする前に、手動で、ターゲット・データベース内に依存型を作成する必要があります。 


IMP_FULL_DATABASEロールを持つユーザーは、これらのモードのいずれかを指定する必要があります。指定しない場合、インポートはエラーになります。IMP_FULL_DATABASEロールを持たないユーザーがこれらのモードをいずれも指定しない場合は、ユーザー・レベルのインポートが実行されます。

従来型パス・エクスポートまたはダイレクト・パス・エクスポートは、表領域モード以外のモードで使用できます。従来型パス・エクスポートとダイレクト・パス・エクスポートの違いの詳細は、「従来型パス・エクスポートおよびダイレクト・パス・エクスポート」を参照してください。

参照:

  • 『Oracle Database管理者ガイド』

  • トランスポータブル表領域の機能の詳細は、『Oracle Database概要』を参照してください。

 

表20-3    各モードでエクスポートおよびインポートされるオブジェクト 
オブジェクト  表モード  ユーザー・モード  全データベース・モード  表領域モード 

分析クラスタ 

なし 

あり 

あり 

なし 

分析表/統計 

あり 

あり 

あり 

あり 

アプリケーション・コンテキスト 

なし 

なし 

あり 

なし 

監査情報 

あり 

あり 

あり 

なし 

Bツリー索引、ビットマップ索引、ドメイン・ファンクション索引 

あり1 

あり 

あり 

あり 

クラスタ定義 

なし 

あり 

あり 

あり 

列コメントおよび表コメント 

あり 

あり 

あり 

あり 

データベース・リンク 

なし 

あり 

あり 

なし 

デフォルト・ロール 

なし 

なし 

あり 

なし 

ディメンション 

なし 

あり 

あり 

なし 

ディレクトリ別名 

なし 

なし 

あり 

なし 

外部表(データなし) 

あり 

あり 

あり 

なし 

外部関数ライブラリ 

なし 

あり 

あり 

なし 

表の所有者以外のユーザーが所有する索引 

あり(特権ユーザーのみ) 

あり 

あり 

あり 

索引タイプ 

なし 

あり 

あり 

なし 

JavaリソースおよびJavaクラス 

なし 

あり 

あり 

なし 

ジョブ・キュー 

なし 

あり 

あり 

なし 

ネストした表のデータ 

あり 

あり 

あり 

あり 

オブジェクト権限 

あり(表および索引のみ) 

あり 

あり 

あり 

表で使用されるオブジェクト型定義 

あり 

あり 

あり 

あり 

オブジェクト型 

なし 

あり 

あり 

なし 

演算子 

なし 

あり 

あり 

なし 

パスワード履歴 

なし 

なし 

あり 

なし 

インスタンスの事後処理およびオブジェクト 

なし 

なし 

あり 

なし 

スキーマの事後プロシージャ処理およびオブジェクト 

なし 

あり 

あり 

なし 

表の事後処理 

あり 

あり 

あり 

あり 

表の事後プロシージャ処理およびオブジェクト 

あり 

あり 

あり 

あり 

スキーマの事前プロシージャ・オブジェクトおよび処理 

なし 

あり 

あり 

なし 

表の事前処理 

あり 

あり 

あり 

あり 

表の事前プロシージャ処理 

あり 

あり 

あり 

あり 

プライベート・シノニム 

なし 

あり 

あり 

なし 

プロシージャ・オブジェクト 

なし 

あり 

あり 

なし 

プロファイル 

なし 

なし 

あり 

なし 

パブリック・シノニム 

なし 

なし 

あり 

なし 

参照整合性制約 

あり 

あり 

あり 

なし 

リフレッシュ・グループ 

なし 

あり 

あり 

なし 

リソース・コスト 

なし 

なし 

あり 

なし 

ロール権限 

なし 

なし 

あり 

なし 

ロール 

なし 

なし 

あり 

なし 

ロールバック・セグメント定義 

なし 

なし 

あり 

なし 

表のセキュリティ・ポリシー 

あり 

あり 

あり 

あり 

順序番号 

なし 

あり 

あり 

なし 

スナップショット・ログ 

なし 

あり 

あり 

なし 

スナップショットおよびマテリアライズド・ビュー 

なし 

あり 

あり 

なし 

システム権限 

なし 

なし 

あり 

なし 

表制約(主キー制約、一意制約、CHECK制約) 

あり 

あり 

あり 

あり 

表データ 

あり 

あり 

あり 

あり 

表定義 

あり 

あり 

あり 

あり 

表領域定義 

なし 

なし 

あり 

なし 

表領域割当て制限 

なし 

なし 

あり 

なし 

トリガー 

あり 

あり2 

あり3 

あり 

他のユーザーが所有するトリガー 

あり(特権ユーザーのみ) 

なし 

なし 

なし 

ユーザー定義 

なし 

なし 

あり 

なし 

ユーザー・プロキシ 

なし 

なし 

あり 

なし 

ユーザー・ビュー 

なし 

あり 

あり 

なし 

ユーザー・ストアド・プロシージャ、ユーザー・ストアド・パッケージおよびユーザー・ストアド・ファンクション 

なし 

あり 

あり 

なし 

1 非特権ユーザーがエクスポートおよびインポートできるのは、そのユーザー自身が所有する表に関する索引のみです。他のユーザーが所有する表に関する索引や、ユーザー自身が所有する表に関して他のユーザーが作成した索引はエクスポートできません。特権ユーザーは、エクスポートおよびインポート対象に指定したユーザーの表に関する索引が、表の所有者以外のユーザーが作成したものであっても、その索引をエクスポートおよびインポートできます。指定したユーザーが他のユーザーの表に関する索引を所有しているときは、エクスポートするユーザーのリストに表の所有者であるユーザーを指定しないかぎり、その索引はエクスポートされません。

2 特権ユーザーも非特権ユーザーも、そのユーザー自身が所有するすべてのトリガーを(他のユーザーが所有する表に関するトリガーの場合でも)、エクスポートおよびインポートできます。

3 全体エクスポートでは、スキーマSYSが所有するトリガーはエクスポートされません。SYSトリガーは、全体インポートの前後のいずれかに手動で再作成する必要があります。SYSトリガーによってインポートの進行を妨げるような処理が定義されないように、SYSトリガーはインポートの後に再作成することをお薦めします。

表レベル・エクスポートおよびパーティション・レベル・エクスポート

表、パーティションおよびサブパーティションのエクスポートは、次のように実行できます。

どのモードの場合も、パーティション・データは、インポート時にパーティション単位またはサブパーティション単位で選択できる形式でエクスポートされます。

表レベル・エクスポート

表レベル・エクスポートでは、パーティション表または非パーティション表は、索引およびその他の表に依存するオブジェクトとともに全体的にエクスポートされます。パーティション表の場合は、すべてのパーティションおよびサブパーティションもエクスポートされます。ダイレクト・パス・エクスポートおよび従来型パス・エクスポートの両方とも、この点は同じです。表レベル・エクスポートは、いずれのエクスポート・モードでも実行できます。

パーティション・レベル・エクスポート

パーティション・レベル・エクスポートでは、表の1つ以上のパーティションまたはサブパーティションを指定してエクスポートできます。パーティション・レベル・エクスポートは、表モードでのみ実行できます。

表レベル・エクスポートおよびパーティション・レベル・エクスポートの指定方法の詳細は、「TABLES」を参照してください。

表レベル・インポートおよびパーティション・レベル・インポート

表、パーティションおよびサブパーティションのインポートは、次のように実行できます。

既存の表にデータをロードするときは、パラメータIGNORE=yを指定します。詳細は、「IGNORE」を参照してください。

表レベル・インポートの使用に関するガイドライン

表レベル・インポートでは、指定した各表に関して表のすべての行がインポートされます。表レベル・インポートの特長は次のとおりです。

表が存在しない場合で、なおかつエクスポートされた表がパーティション表である場合は、表レベル・インポートによってパーティション表が作成されます。表が正常に作成されると、エクスポート・ファイルからすべてのソース・データが読み込まれ、ターゲット表に書き込まれます。インポート後、ターゲット表には、エクスポート・ファイル内のソース表に対応付けられたすべてのパーティションおよびサブパーティションに関するパーティション定義が格納されます。この処理によって、ソース・パーティションの物理属性および論理属性(パーティションの境界を含む)が、インポート時に維持されます。

パーティション・レベル・インポートの使用に関するガイドライン

パーティション・レベル・インポートを指定できるのは、表モードでインポートを実行する場合のみです。パーティション・レベル・インポートでは、エクスポート・ファイル内の特定のパーティションまたはサブパーティションを選択してデータをロードすることができます。パーティション・レベル・インポートを使用する場合は、次のガイドラインに注意してください。

パーティションと表の間のデータ移行

コンポジット・パーティションのパーティション名を指定しない場合、コンポジット・パーティション内のすべてのサブパーティションが、ソースとして使用されます。

次の例では、パーティション名によって指定されたパーティションは、コンポジット・パーティションです。すべてのサブパーティションがインポートされます。

imp SYSTEM FILE=expdat.dmp FROMUSER=scott TABLES=b:py

次の例では、表scott.eのパーティションqcおよびqdの行データが、表scott.eにインポートされます。

imp scott FILE=expdat.dmp TABLES=(e:qc, e:qd) IGNORE=y

インポート・ターゲット・データベースに表eが存在しない場合は、表eの作成後、同じパーティションにデータが挿入されます。インポート前にターゲット・システムに表eが存在する場合、行データは、挿入可能な範囲を持つパーティションに挿入されます。行データは、最終的にqcおよびqd以外の名前のパーティションに挿入することもできます。


注意:

既存の表にパーティション・レベル・インポートを実行する場合は、ターゲット・パーティションまたはサブパーティションを正しく設定し、IGNORE=yを指定してください。 


エクスポート・パラメータ

この項では、エクスポート・コマンドライン・パラメータについて説明します。

BUFFER

デフォルト: オペレーティング・システムによって異なります。このパラメータのデフォルト値については、ご使用のオペレーティング・システム固有のOracleマニュアルを参照してください。

行のフェッチに使用されるバッファのサイズをバイト単位で指定します。これにより、エクスポート・ユーティリティによってフェッチされる配列内の最大行数が決まります。バッファ・サイズの計算には、次の計算式を使用してください。

buffer_size = rows_in_array * maximum_row_size

0(ゼロ)を指定すると、1回に1行のみフェッチされます。

LOB、LONGBFILEREFROWIDLOGICAL ROWIDまたはDATE型の列が含まれる表は、1回に1行ずつフェッチされます。


注意:

BUFFERパラメータを使用できるのは、従来型パス・エクスポートの場合のみです。ダイレクト・パス・エクスポートの場合は、このパラメータの指定による影響はありません。ダイレクト・パス・エクスポートでは、エクスポート・ファイルへの書込みに使用するバッファのサイズは、RECORDLENGTHパラメータで指定します。 


バッファ・サイズの計算

ここでは、バッファ・サイズの計算方法の例を示します。

次の表を作成します。

CREATE TABLE sample (name varchar(30), weight number);

name列の最大サイズは30で、インジケータ用に2バイトをプラスします。weight列の最大サイズは22(Oracle のNUMBERデータ型の内部表現のサイズ)で、インジケータ用に2バイトをプラスします。

したがって、行の最大サイズは56(30+2+22+2)になります。

100行単位で配列の操作を実行するには、バッファ・サイズを5600に指定する必要があります。

COMPRESS

デフォルト: y

エクスポート・ユーティリティおよびインポート・ユーティリティによる、表データの初期エクステントの管理方法を指定します。

デフォルトのCOMPRESS=yを指定すると、インポート時に表データを1つの初期エクステントに整理統合するためのフラグが付きます。エクステント・サイズが大きい場合(たとえば、PCTINCREASEパラメータが指定されている場合)、データの格納に必要以上の領域が割り当てられます。

COMPRESS=nを指定すると、エクスポート・ユーティリティは、初期エクステントのサイズおよび第2エクステントのサイズが指定されている現行の記憶域パラメータを使用します。パラメータの値は、CREATE TABLE文またはALTER TABLE文で指定された値、あるいはデータベース・システムによって変更された値になります。たとえば、表が大きくなった場合、およびPCTINCREASEパラメータに0(ゼロ)以外の値が指定されている場合は、第2エクステントのサイズが変更されることがあります。

COMPRESSパラメータはビットマップ表領域では機能しません。


注意:

実際に整理統合が実行されるのはインポート時ですが、COMPRESSパラメータを指定できるのはインポート時ではなくエクスポート時のみです。記憶域パラメータなどのデータ定義は、インポート・ユーティリティではなく、エクスポート・ユーティリティによって生成されるためです。したがって、エクスポート時にCOMPRESS=yを指定した場合、そのデータは整理統合形式でのみインポートできます。 



注意:

LOBデータもサブパーティション・データも圧縮されません。エクスポート時の初期エクステントのサイズおよび第2エクステントのサイズの値が使用されます。 


CONSISTENT

デフォルト: n

エクスポート・ユーティリティによって読み込まれたデータのある時点における一貫性を維持し、expコマンドの実行中に変更されないようにするために、SET TRANSACTION READ ONLY文を使用するかどうかを指定します。エクスポート開始後に、他のアプリケーションによってそのデータベースが更新されることがわかっている場合は、CONSISTENT=yを指定してください。

CONSISTENT=nを使用すると、通常、各表は1つのトランザクションでエクスポートされます。ただし、表の内部にネストした表がある場合は、外部表および各内部表は別のトランザクションでエクスポートされます。パーティション表の場合は、パーティションごとに別のトランザクションでエクスポートされます。

したがって、ネストした表やパーティション表が別のアプリケーションによって更新中の場合、エクスポートされるデータが一貫性を維持できないことがあります。このような危険性をできるだけ低くするために、これらの表のエクスポートは、更新中でないときに実行してください。

表20-4に、2人のユーザーによるイベントの順序を示します。user1が表のパーティションをエクスポートし、user2が同じ表のデータを更新するとします。

表20-4    2人のユーザーによる更新時のイベントの順序 
時系列  user1  user2 

TAB:P1のエクスポートを開始 

アクティビティなし 

アクティビティなし 

TAB:P2を更新
TAB:P1を更新
トランザクションをコミット 

TAB:P1のエクスポートを終了 

アクティビティなし 

TAB:P2をエクスポート 

アクティビティなし 

エクスポートでCONSISTENT=yを指定すると、user2によって実行された更新はエクスポート・ファイルには書き込まれません。

エクスポートでCONSISTENT=nを指定すると、TAB:P1に対する更新はエクスポート・ファイルには書き込まれません。ただし、TAB:P2に対する更新はTAB:P2のエクスポート開始前にコミットされているため、更新がエクスポート・ファイルに書き込まれます。その結果、user2のトランザクションは部分的にのみエクスポート・ファイルに書き込まれるため、エクスポート・ファイルではデータの一貫性を維持できません。

CONSISTENT=yを指定しているときに更新量が多いと、ロールバック・セグメントの使用量が大きくなります。また、ロールバック・セグメントをスキャンしてコミットされていないトランザクションを探すため、各表のエクスポートにかかる時間が長くなります。

CONSISTENT=yを指定する場合は、次のことに注意してください。

CONSTRAINTS

デフォルト: y

表制約をエクスポートするかどうかを指定します。

DIRECT

デフォルト: n

ダイレクト・パス・エクスポートの使用を指定します。

DIRECT=yを指定すると、エクスポート・ユーティリティが、(バッファを調べ)SQLコマンド処理レイヤーをバイパスしてデータを直接読み込み、データを抽出します。この方法は、従来型パス・エクスポートに比べて非常に高速です。

セキュリティおよびパフォーマンスに関する考慮点を含むダイレクト・パス・エクスポートの詳細は、「ダイレクト・パス・エクスポートの起動」を参照してください。

FEEDBACK

デフォルト: 0(ゼロ)

n行分のエクスポートを1つのピリオドで示すプログレス・バーの表示を指定します。たとえば、FEEDBACK=10を指定すると、10行分のエクスポートが終了するたびにピリオドが1つ表示されます。FEEDBACK値は、エクスポートされるすべての表に適用されるため、各表に対して個別に設定できません。

FILE

デフォルト: expdat.dmp

エクスポート・ダンプ・ファイル名を指定します。デフォルトの拡張子は.dmpですが、別の拡張子を指定できます。エクスポート・ユーティリティは、複数ファイルのエクスポートをサポートしているため、複数のファイル名を指定できます。次に例を示します。

exp scott/tiger FILE = dat1.dmp, dat2.dmp, dat3.dmp FILESIZE=2048

FILESIZEに指定した最大値までエクスポートが実行されると、現行のファイルへの書込みは中止され、FILEパラメータで次のファイル名として指定した名前のエクスポート・ファイルがオープンされます。エクスポートが完了するまで、またはFILESIZEの最大値に再度到達するまでエクスポートが続行されます。指定したエクスポート・ファイル名が十分でないためにエクスポートを完了できない場合は、ファイル名を追加するためのプロンプトが表示されます。

FILESIZE

デフォルト: データは、表20-5に示す最大サイズに到達するまで、1つのファイルに書き込まれます。

エクスポート・ユーティリティでは、複数のエクスポート・ファイルへの書込みがサポートされており、インポート・ユーティリティでは、複数のエクスポート・ファイルからの読取りが可能です。FILESIZEパラメータの値(バイト制限)を指定すると、エクスポート・ユーティリティによって、それぞれのダンプ・ファイルに指定したバイト数のみ書き込まれます。

エクスポートで書き込まれるデータの量がFILESIZEに指定した最大値を超えると、次のエクスポート・ファイルの名前がFILEパラメータで指定されるか(「FILE」を参照)、またはFILEパラメータで指定したすべての名前が使用されている場合は、新しいエクスポート・ファイル名を指定するためのプロンプトが表示されます。FILESIZEの値を指定しない場合(0の指定は、FILESIZEの指定なしを意味する)は、FILEパラメータで指定したファイルの数にかかわらず、1つのファイルのみに書き込まれます。


注意:

エクスポート・ファイルの領域要件が使用可能なディスク領域を超えている場合は、エクスポートが終了するため、十分なディスク領域を確保した後で再度エクスポートする必要があります。 


FILESIZEパラメータの最大値は、64ビットで格納できる最大値と同じです。

表20-5 に、ご使用のオペレーティング・システムおよびOracle Databaseのリリースによって異なるダンプ・ファイルの最大サイズを示します。

表20-5    ダンプ・ファイルの最大サイズ 
オペレーティング・システム  Oracle Databaseのリリース  最大サイズ 

すべて 

8.1.5より前 

2GB 

32ビット・システム 

8.1.5 

2GB 

64ビット・システム 

8.1.5以上 

無制限 

32ビット・ファイルを扱う32ビット・システム 

すべて 

2GB 

64ビット・ファイルを扱う32ビット・システム 

8.1.6以上 

無制限 

ファイルに格納可能な最大値は、オペレーティング・システムによって異なります。この最大値については、FILESIZEを指定する前に、ご使用のオペレーティング・システム固有のOracleマニュアルで確認してください。また、エクスポートで指定するファイル・サイズが、インポートを実行するシステムでサポートされていることも確認してください。

FILESIZEの値は、数字にKB(キロバイト数)を付けて指定できます。たとえば、FILESIZE=2KBは、FILESIZE=2048と同じです。同様に、MBはメガバイト(1024×1024)を、GBはギガバイト(1024の3乗)を表します。Bはバイトの省略です。この場合、最終的なファイルサイズの算出に乗算は不要です(FILESIZE=2048Bは、FILESIZE=2048と同じです)。

FLASHBACK_SCN

デフォルト: なし

エクスポートで使用されるシステム変更番号(SCN)を指定して、フラッシュバックを使用可能にします。エクスポート・オペレーションは、この指定されたSCNにおけるデータの一貫性を維持したまま実行されます。

参照:

フラッシュバックの使用方法の詳細は、『Oracle Databaseアドバンスト・アプリケーション開発者ガイド』を参照してください。 

次に、SCNの指定例を示します。エクスポートを実行すると、SCN 3482971におけるデータの一貫性が維持されます。

> exp FILE=exp.dmp FLASHBACK_SCN=3482971

FLASHBACK_TIME

デフォルト: なし

タイムスタンプを指定できます。エクスポート・ユーティリティによって、指定されたタイムスタンプに一番近いSCNが検索されます。このSCNを使用して、フラッシュバックを使用可能にします。エクスポート・オペレーションは、このSCNにおけるデータの一貫性を維持したまま実行されます。

DBMS_FLASHBACK.ENABLE_AT_TIMEプロシージャで使用可能な形式で時間を指定できます。次のいずれかの方法で指定できます。

> exp FILE=exp.dmp FLASHBACK_TIME="TIMESTAMP '2002-05-01 11:00:00'"

> exp FILE=exp.dmp FLASHBACK_TIME="TO_TIMESTAMP('12-02-2001 14:35:00', 'DD-MM-YYYY HH24:MI:SS')"

また、下位互換性を維持するために、次の例に示す古い形式も使用可能です。

> exp FILE=exp.dmp FLASHBACK_TIME="'2002-05-01 11:00:00'"

参照:

  • フラッシュバックの使用方法の詳細は、『Oracle Databaseアドバンスト・アプリケーション開発者ガイド』を参照してください。

  • DBMS_FLASHBACKパッケージの詳細は、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照してください。

 

FULL

デフォルト: n

エクスポートが、全データベース・モードのエクスポートであること(データベース全体のエクスポート)を示します。全データベース・モードでエクスポートするには、FULL=yを指定します。このモードでのエクスポートには、EXP_FULL_DATABASEロールが必要です。

全データベースのエクスポートおよびインポートについての考慮点

全データベースのエクスポートおよびインポートは、データベースの複製およびクリーンアップに有効です。ただし、問題が発生しないように、次の点に注意する必要があります。

GRANTS

デフォルト: y

オブジェクト権限をエクスポートするかどうかを指定します。エクスポートされるオブジェクト権限は、エクスポート・モードが全データベース・モードかユーザー・モードかによって異なります。全データベース・モードでは、表に対するすべての権限がエクスポートされます。一方、ユーザー・モードでは、表の所有者が付与した権限のみがエクスポートされます。システム権限は常にエクスポートされます。

HELP

デフォルト: なし

エクスポート・パラメータの説明を表示します。ヘルプを起動するには、コマンドラインでexp help=yを入力します。

INDEXES

デフォルト: y

索引をエクスポートするかどうかを指定します。

LOG

デフォルト: なし

情報メッセージおよびエラー・メッセージを受け取るファイル名(export.logなど)を指定します。

このパラメータを指定すると、メッセージはログ・ファイルに記録されるとともに端末画面に表示されます。

OBJECT_CONSISTENT

デフォルト: n

エクスポート・ユーティリティによって読み込まれたデータのある時点における一貫性を維持し、エクスポート中に変更されないようにするために、SET TRANSACTION READ ONLY文を使用するかどうかを指定します。OBJECT_CONSISTENTyに設定した場合、オブジェクトがパーティション化されている場合でも、読取り専用トランザクションに各オブジェクトをエクスポートできます。これに対し、CONSISTENTパラメータを使用する場合、読取り専用トランザクションは1つのみです。

参照:

「CONSISTENT」 

OWNER

デフォルト: なし

ユーザー・モード・エクスポートでエクスポートすることを示します。エクスポートの対象となるオブジェクトを所有するユーザー名のリストを表示します。データベース管理者(DBA)ユーザーがエクスポートを起動している場合は、複数のユーザーがリストされる場合があります。

ユーザー・モードのエクスポートは、1人以上のデータベース・ユーザーのバックアップに使用可能です。たとえば、削除されたユーザーの表を、DBAが一定の期間バックアップを取る場合などに有効です。ユーザー・モードは、ユーザーが自分自身のデータのバックアップを取る場合や、ある所有者のオブジェクトを別の所有者に移す場合にも適しています。

PARFILE

デフォルト: なし

エクスポート・パラメータのリストが格納されているファイルのファイル名を指定します。パラメータ・ファイルの使用方法の詳細は、「エクスポート・ユーティリティおよびインポート・ユーティリティの起動」を参照してください。

QUERY

デフォルト: なし

表モード・エクスポートの実行時に、一連の表から行のサブセットを選択できるようにします。QUERYパラメータの値は、TABLESパラメータにリストされたすべての表(または表パーティション)に適用されるSQLのSELECT文のWHERE句を含む文字列です。

たとえば、ユーザーscottが、職種がSALESMANで、給与が1600より少ない従業員のみをエクスポートする場合は、次のように指定します(この例はUNIXベースの場合)。

exp scott/tiger TABLES=emp QUERY=\"WHERE job=\'SALESMAN\' and sal \<1600\"


注意:

QUERYパラメータの値には空白が含まれるため、ほとんどのオペレーティング・システムでは、すべての文字列WHERE job=\'SALESMAN\'およびsal\<1600を二重引用符で囲むか、なんらかの方法でリテラルとしてマークする必要があります。オペレーティング・システムの予約文字も、エスケープする必要があります。システムの特殊文字および予約文字の詳細は、ご使用のオペレーティング・システム固有のOracleマニュアルを参照してください。 


この問合せの実行時、エクスポート・ユーティリティによって、次のようにSQLのSELECT文が構築されます。

SELECT * FROM emp WHERE job='SALESMAN' and sal <1600; 
 

QUERYパラメータに指定された値は、TABLESパラメータでリストされたすべての表(または表パーティション)に適用されます。たとえば、次の文では、問合せと一致するempおよびbonusの両方の行がアンロードされます。

exp scott/tiger TABLES=emp,bonus QUERY=\"WHERE job=\'SALESMAN\' and sal\<1600\"
 

また、エクスポート・ユーティリティによって次のSQL文が実行されます。

SELECT * FROM emp WHERE job='SALESMAN' and sal <1600;

SELECT * FROM bonus WHERE job='SALESMAN' and sal <1600;

QUERY句で指定された列が表にない場合は、エラー・メッセージが表示されて、行はエクスポートされません。

QUERYパラメータ使用時の制限事項

RECORDLENGTH

デフォルト: オペレーティング・システムによって異なります。

ファイル・レコードの長さをバイト単位で指定します。RECORDLENGTHパラメータは、異なるデフォルト値を使用する別のオペレーティング・システムにエクスポート・ファイルを転送する場合に指定する必要があります。

このパラメータを指定しない場合は、ご使用のプラットフォーム固有のバッファ・サイズのデフォルト値が採用されます。

RECORDLENGTHは、ご使用のシステムのバッファ・サイズの値以上の任意の値に設定できます(最大値は64KB)。RECORDLENGTHパラメータの変更により影響を受けるのは、ディスクに書き出す前に累積されるデータのサイズのみです。オペレーティング・システム・ファイルのブロック・サイズには影響しません。


注意:

このパラメータは、エクスポートのI/Oバッファのサイズ指定に使用できます。 


RESUMABLE

デフォルト: n

RESUMABLEパラメータを使用して、再開可能な領域割当てを有効または無効にします。このパラメータはデフォルトでは無効なため、関連するRESUMABLE_NAMEパラメータおよびRESUMABLE_TIMEOUTパラメータを使用するには、RESUMABLE=yに設定する必要があります。

参照:

  • 『Oracle Database概要』

  • 再開可能な領域割当ての詳細は、『Oracle Database管理者ガイド』を参照してください。

 

RESUMABLE_NAME

デフォルト: 'User USERNAME (USERID), Session SESSIONID, Instance INSTANCEID'

再開可能な文を指定します。この値はユーザー定義のテキスト文字列で、USER_RESUMABLEまたはDBA_RESUMABLEビューに挿入して、一時停止されている特定の再開可能な文を識別できます。

RESUMABLEパラメータをyに設定して、再開可能な領域割当てを有効にしないかぎり、このパラメータは無視されます。

RESUMABLE_TIMEOUT

デフォルト: 7200秒(2時間)

エラー修正に必要な時間を指定します。タイムアウト時間内にエラーを修正できない場合は、文の実行が終了します。

RESUMABLEパラメータをyに設定して、再開可能な領域割当てを有効にしないかぎり、このパラメータは無視されます。

ROWS

デフォルト: y

表のデータ行をエクスポートするかどうかを指定します。

STATISTICS

デフォルト: ESTIMATE

エクスポートされたデータのインポート時に生成されるデータベース・オプティマイザ統計のタイプを指定します。オプションは、ESTIMATECOMPUTEおよびNONEです。インポート・パラメータの詳細は、「STATISTICS」および「統計情報のインポート」を参照してください。

エクスポート・ユーティリティによって、ANALYZE文および計算済統計情報がエクスポート・ファイルに書き込まれ、統計情報が再生成される場合もあります。

ただし、システムによって生成された名前を持つ列が表に含まれる場合、計算済オプティマイザ統計は、エクスポート時に使用されません。

次の場合は、エクスポート時に、計算済オプティマイザ統計に問題ありのフラグが付きます。

TABLES

デフォルト: なし

表モード・エクスポートでエクスポートすることを指定します。エクスポートの対象となる表名、パーティション名およびサブパーティション名をリストとして指定します。表名を指定するときに、次の項目を指定できます。

構文の形式は、次のとおりです。

schemaname.tablename:partition_name
schemaname.tablename:subpartition_name

tablename:partition_nameを使用する場合、指定された表はパーティション化される必要があり、partition_nameはパーティションまたはサブパーティションのうちのいずれかの名前である必要があります。指定された表がパーティション化されていない場合、partition_nameは無視され、表全体がエクスポートされます。

パーティション・レベル・エクスポートの例は、「パーティション・レベル・エクスポートでのエクスポート・セッションの例」を参照してください。

表名の制限

表名には次の制限があります。

TABLESPACES

デフォルト: なし

TABLESPACESパラメータを使用して、表領域のすべての表がエクスポート・ダンプ・ファイルへエクスポートされるように指定します。これには、表領域のリストに含まれるすべての表およびパーティションを持つすべての表が含まれます。索引は、格納されている場所にかかわらず、表とともにエクスポートされます。

TABLESPACESを使用して表領域のすべての表をエクスポートするには、EXP_FULL_DATABASEロールが必要です。

TABLESPACESTRANSPORT_TABLESPACE=yと組み合せて使用すると、表領域の一部のリストをデータベースからエクスポート・ファイルへエクスポートするように指定できます。

TRANSPORT_TABLESPACE

デフォルト: n

yを指定すると、トランスポータブル表領域のメタデータをエクスポートできるようになります。

暗号化された列は、トランスポータブル表領域モードではサポートされていません。


注意:

トランスポータブル表領域をエクスポートした後、それよりも古いリリース・レベルのデータベースにインポートすることはできません。ターゲット・データベースのリリース・レベルは、ソース・データベース以上である必要があります。 


参照:

 

TRIGGERS

デフォルト: y

トリガーをエクスポートするかどうかを指定します。

TTS_FULL_CHECK

デフォルト: n

yを設定すると、エクスポート・ユーティリティによって、リカバリ・セット(リカバリの対象となる表領域のセット)にリカバリ・セット外のオブジェクト(またはその逆)に対する依存関係(特にINポインタ)がないことが確認されます。

USERID(ユーザー名/パスワード)

デフォルト: なし

エクスポートを実行するユーザーのユーザー名、パスワードおよびオプションの接続文字列を指定します。パスワードを指定しないと、入力するように要求されます。

ユーザーSYSとして接続する場合は、接続文字列にAS SYSDBAも指定する必要があります。オペレーティング・システムによっては、AS SYSDBAを特殊文字列とみなし、その文字列全体を引用符で囲む必要があります。

参照:

  • 『Oracle Database Heterogeneous Connectivity管理者ガイド』

  • Oracle Netに接続文字列を指定する方法の詳細は、ご使用のOracle Netプロトコルのユーザーズ・ガイドを参照してください。

 

VOLSIZE

デフォルト: なし

各テープ・ボリュームのエクスポート・ファイルに最大バイト数を指定します。

VOLSIZEパラメータの最大値は、ご使用のプラットフォーム上に64ビットで格納できる最大値と同じです。

VOLSIZEの値は、数字にKB(キロバイト数)を付けて指定できます。たとえば、VOLSIZE=2KBは、VOLSIZE=2048と同じです。同様に、MBはメガバイト(1024×1024)を、GBはギガバイト(1024の3乗)を表します。Bはバイトの省略です。この場合、最終的なファイル・サイズの算出に乗算は不要です(VOLSIZE=2048BVOLSIZE=2048と同じ)。

インポート・パラメータ

この項では、インポート・コマンドライン・パラメータについて説明します。

BUFFER

デフォルト: オペレーティング・システムによって異なります。

BUFFERに指定された整数は、転送したデータ行を格納するバッファのバイト数です。

BUFFERによって、インポートで挿入される配列の行数が決定します。所定の行配列の挿入に必要なバッファ・サイズは、次のように計算できます。

buffer_size = rows_in_array * maximum_row_size

LOBが含まれている表およびLONGBFILEREFROWIDUROWIDまたはTIMESTAMPの列が含まれている表は、1回に1行ずつ挿入されます。バッファ・サイズは(LOBおよびLONG列の場合以外は)、行全体を格納できるだけの容量が必要です。バッファ・サイズが足りずに表の最長の行を格納できない場合、インポート・ユーティリティはさらに大きいサイズのバッファを割り当てようとします。

DATE列の場合は、バッファの大きさが十分であれば一度に複数の行が挿入されます。


注意:

このパラメータのデフォルト値については、ご使用のオペレーティング・システム固有のOracleマニュアルを参照してください。 


COMMIT

デフォルト: n

配列を挿入するたびにコミットするかどうかを指定します。デフォルトでは、各表はロードされた後にのみコミットされ、エラーが発生した場合はロールバックを実行してから次のオブジェクトに進みます。

表にネストした表の列または属性が含まれている場合、ネストした表の内容は、それぞれ別の表としてインポートされます。したがって、ネストした表の内容は、常に、外部表をコミットしたトランザクションとは別のトランザクションとしてコミットされます。

パーティション表の場合にCOMMIT=nを指定すると、エクスポート・ファイルのそれぞれのパーティションおよびサブパーティションは、別のトランザクションとしてインポートされます。

LOB、LONGBFILEREFROWIDまたはUROWIDの列が含まれている表は、配列単位では挿入できません。COMMIT=yが指定されていると、各行の挿入後に表がコミットされます。

COMPILE

デフォルト: y

パッケージ、プロシージャおよびファンクションを、作成時にインポート・ユーティリティでコンパイルするかどうかを指定します。

COMPILE=nの場合、これらのユニットは最初の使用時にコンパイルされます。たとえば、ドメイン索引作成に使用されるパッケージは、ドメイン索引作成時にコンパイルされます。

参照:

「ストアド・プロシージャ、ファンクションおよびパッケージのインポート」 

CONSTRAINTS

デフォルト: y

表の制約をインポートするかどうかを指定します。デフォルトでは、制約をインポートします。制約をインポートしないようにするには、このパラメータ値をnに設定します。

IOTおよびオブジェクト表の主キー制約は、常にインポートされます。

DATAFILES

デフォルト: なし

TRANSPORT_TABLESPACEyを指定した場合、データベースに転送するデータ・ファイルを、このパラメータを使用して表示します。

参照:

「TRANSPORT_TABLESPACE」 

DESTROY

デフォルト: n

データベースを構成している既存のデータ・ファイルを再利用するかどうかを指定します。DESTROY=yを指定してSQLのCREATE TABLESPACE文のdatafile句にREUSEオプションを付けることによって、元のデータベースのデータ・ファイルの内容を削除した後でこれらのファイルを再利用します。

エクスポート・ファイルには、各表領域で使用されるデータ・ファイル名が格納されています。DESTROY=yを指定し、(テストや他の目的で)同一システム上に2番目のデータベースを作成しようとすると、表領域の作成時に、元のデータベースのデータ・ファイルが上書きされます。このような場合、デフォルトのDESTROY=nを指定すると、表領域作成時にすでにデータ・ファイルがある場合は、エラーが返されます。また、元のデータベースへインポートする必要がある場合は、IGNORE=yを指定し、既存のデータ・ファイルを置換せずに追加します。


注意:

データ・ファイルがRAWデバイスに格納されている場合は、DESTROY=nを指定しても、ファイルは上書きされます。 


FEEDBACK

デフォルト: 0(ゼロ)

n行分のインポートを1つのピリオドで示すプログレス・バーの表示を指定します。たとえば、FEEDBACK=10を指定すると、10行分のインポートが終了するたびにピリオドが1つ表示されます。FEEDBACK値は、インポートされるすべての表に適用されるため、各表に対して個別には設定できません。

FILE

デフォルト: expdat.dmp

インポートするエクスポート・ファイル名を指定します。デフォルトの拡張子は、.dmpです。エクスポート・ユーティリティは、複数ファイルのエクスポートをサポートしているため(次のFILESIZEパラメータの説明を参照)、複数のインポート・ファイル名が必要な場合もあります。次に例を示します。

imp scott/tiger IGNORE=y FILE = dat1.dmp, dat2.dmp, dat3.dmp FILESIZE=2048
 

ユーザー自身がエクスポートしたファイルでなくても指定できますが、そのファイルに対する読取り権限が必要です。他のユーザーがエクスポートしたエクスポート・ファイルの場合は、IMP_FULL_DATABASEロールが必要です。

FILESIZE

デフォルト: オペレーティング・システムによって異なります。

エクスポート・ユーティリティでは、複数のエクスポート・ファイルへの書込みがサポートされており、インポート・ユーティリティでは、複数のエクスポート・ファイルからの読取りが可能です。エクスポートFILESIZEパラメータの値(バイト制限)を指定すると、エクスポート・ユーティリティでは、それぞれのダンプ・ファイルに指定したバイト数のみが書き込まれます。インポート・ユーティリティでは、エクスポートの最大ダンプ・ファイル・サイズを指定するために、インポートFILESIZEパラメータを使用する必要があります。


注意:

許容最大サイズは、オペレーティング・システムによって異なります。この最大値については、FILESIZEを指定する前に、ご使用のオペレーティング・システム固有のOracleマニュアルで確認してください。 


FILESIZEの値は、数字にKB(キロバイト数)を付けて指定できます。たとえば、FILESIZE=2KBは、FILESIZE=2048と同じです。同様に、MBはメガバイト(1024×1024)を、GBはギガバイト(1024の3乗)を表します。Bはバイトの省略です。この場合、最終的なファイルサイズの算出に乗算は不要です(FILESIZE=2048Bは、FILESIZE=2048と同じです)。

ダンプ・ファイルの最大サイズの詳細は、表20-5を参照してください。

FROMUSER

デフォルト: なし

インポートするスキーマをカンマで区切ったリスト。このパラメータは、IMP_FULL_DATABASEロールを持つユーザーにのみ関係があります。このパラメータで、複数のスキーマを含むエクスポート・ファイル(たとえば、全体エクスポート・ダンプ・ファイルまたは複数スキーマのユーザー、ユーザー・モードのエクスポート・ダンプ・ファイルなど)からスキーマのサブセットをインポートできます。

ファンクション索引、ファンクション、プロシージャ、トリガー、型本体、ビューなどの内部に表示されるスキーマ名は、FROMUSERまたはTOUSERの処理には影響されません。影響を受けるのは、オブジェクト名のみです。インポートの完了後、TOUSERスキーマに含まれる項目が古いスキーマ(FROMUSER)を参照しているかどうかを手動で確認し、必要に応じて修正する必要があります。

通常は、インポート・パラメータTOUSERFROMUSERを組み合せて使用し、インポートのターゲットとなるスキーマの所有者ユーザー名のリストを指定します(「TOUSER」を参照)。インポート操作の前にターゲット・データベース内にTOUSERで指定するユーザーが存在している必要があります。存在していない場合、エラーが返されます。

TOUSERを指定しない場合、インポート操作では次のことが行われます。

FULL

デフォルト: y

エクスポート・ダンプ・ファイル全体をインポートするかどうかを指定します。

GRANTS

デフォルト: y

オブジェクト権限をインポートするかどうかを指定します。

デフォルトでは、エクスポートされたオブジェクト権限はすべてインポートされます。ユーザー・モードでエクスポートが実行されている場合は、第1レベルのオブジェクト権限(所有者によって付与されているもの)のみがエクスポート・ファイルにインポートされます。

全データベース・モードでエクスポートが実行されている場合は、下位レベルのオブジェクト権限(With Grant Optionで権限が付与されたユーザーによって付与されているもの)を含むすべての権限が、エクスポート・ファイルにインポートされます。GRANTS=nを指定すると、オブジェクト権限はインポートされません (GRANTS=nを指定しても、システム権限はインポートされます)。


注意:

エクスポート・ユーティリティでは、セキュリティ上の理由から、インポートに影響するデータ・ディクショナリ・ビューの権限はエクスポートされません。このような権限がエクスポートされると、インポートしたユーザーが気付かないうちに、アクセス権が変更される場合があります。 


HELP

デフォルト: なし

インポート・パラメータの説明を表示します。ヘルプを起動するには、コマンドラインでimp HELP=yを入力します。

IGNORE

デフォルト: n

オブジェクト作成エラーの処理方法を指定します。デフォルトのIGNORE=nが指定されている場合は、オブジェクト作成エラーがログに記録または表示されて、インポートが続行されます。

IGNORE=yを指定すると、データベース・オブジェクトの作成時に作成エラーが発生しても、このエラーは無視され、エラーはレポートされずに継続します。

無視されるのはオブジェクト作成エラーのみです。オペレーティング・システム、データベース、SQLなどのエラーは無視されず、場合によっては処理が停止します。

IGNORE=yが指定され、1つのエクスポート・ファイルから何回もリフレッシュが行われる場合、オブジェクトが何回も作成される場合があります(ただし、各オブジェクトには一意のシステム定義名が付けられます)。特定のオブジェクト(たとえば、制約など)に対しては、CONSTRAINTS=nを指定してインポートを実行すると、この問題を回避できます。CONSTRAINTS=nを指定して全インポートを実行すると、表の制約はインポートされません。

表がすでに存在する場合、IGNORE=yを指定すると、行は既存の表にインポートされ、エラーやメッセージは出力されません。新しい記憶域パラメータを使用するため、またはクラスタにすでに表を作成済であるため、すでに存在する表にデータをインポートする場合があります。

表がすでに存在する場合、IGNORE=nを指定すると、エラーがレポートされ、表は、行が挿入されないままスキップされます。また、表に依存するオブジェクト(索引、権限、制約など)は作成されません。


注意:

既存の表へのインポート時に、表の列の索引が一意でない場合、行データが重複することがあります。 


INDEXES

デフォルト: y

索引をインポートするかどうかを指定します。LOB索引、OID索引、一意制約索引など、システムによって作成される索引は、このパラメータの指定に関係なく、インポート・ユーティリティによって自動的に再作成されます。

INDEXES=nを指定すると、すべてのユーザー作成索引をインポートの終了後に作成できます。

インポート時、ターゲット表にすでに索引が存在する場合は、データ挿入時にターゲット表の索引のメンテナンスを実行します。

INDEXFILE

デフォルト: なし

索引作成文を受け取るファイルを指定します。

このパラメータを指定すると、指定したモードでの索引作成文は、データベース中に索引を作成するために使用されるのではなく、抽出されて指定のファイルに書き込まれます。データベース・オブジェクトはインポートされません。

インポート・パラメータCONSTRAINTSyを設定している場合、索引ファイルに表制約も書き込まれます。

その後、このファイルを編集して(記憶域パラメータの変更など)、索引を作成するためのSQLスクリプトとして使用できます。

ファイル内で定義されている索引をさらに簡単に識別するために、エクスポート・ファイルのCREATE TABLE文およびCREATE CLUSTER文がコメントとして含まれます。

この機能を使用するには、次の手順を実行します。

  1. INDEXFILEパラメータを使用してインポートを行い、索引作成文のファイルを作成します。

  2. ファイルを編集して、有効なパスワードをconnect文字列に追加します。

  3. INDEXES=nを指定してインポートを再実行します。

    (この手順でデータベース・オブジェクトがインポートされますが、エクスポート・ファイルに格納されている索引定義は使用されません。)

  4. 索引作成文のファイルをSQLスクリプトとして実行し、索引を作成します。

    INDEXFILEパラメータを指定できるのは、FULL=yFROMUSERTOUSERまたはTABLESパラメータを指定した場合のみです。

LOG

デフォルト: なし

情報メッセージおよびエラー・メッセージを受け取るファイル(import.logなど)を指定します。ログ・ファイルを指定すると、端末画面およびログ・ファイルの両方にインポートに関する情報が書き込まれます。

PARFILE

デフォルト: なし

インポート・パラメータのリストを格納するファイルのファイル名を指定します。パラメータ・ファイルの使用方法の詳細は、「パラメータ・ファイル」を参照してください。

RECORDLENGTH

デフォルト: オペレーティング・システムによって異なります。

ファイル・レコードの長さをバイト単位で指定します。RECORDLENGTHパラメータは、異なるデフォルト値を使用する別のオペレーティング・システムにエクスポート・ファイルを転送する場合に指定する必要があります。

このパラメータを指定しない場合、ご使用のプラットフォーム固有のBUFSIZのデフォルト値が採用されます。

RECORDLENGTHは、ご使用のシステムのBUFSIZの値以上の任意の値に設定できます(最大値は64KBです)。RECORDLENGTHパラメータの変更により影響を受けるのは、データベースに書き出す前に累積されるデータのサイズのみです。オペレーティング・システム・ファイルのブロック・サイズには影響しません。

このパラメータは、インポート・ユーティリティのI/Oバッファのサイズ指定にも使用できます。

RESUMABLE

デフォルト: n

RESUMABLEパラメータを使用して、再開可能な領域割当てを有効または無効にします。このパラメータはデフォルトでは無効なため、関連するRESUMABLE_NAMEパラメータおよびRESUMABLE_TIMEOUTパラメータを使用するには、RESUMABLE=yに設定する必要があります。

参照:

  • 『Oracle Database概要』

  • 再開可能な領域割当ての詳細は、『Oracle Database管理者ガイド』を参照してください。

 

RESUMABLE_NAME

デフォルト: 'User USERNAME (USERID), Session SESSIONID, Instance INSTANCEID'

再開可能な文を指定します。この値はユーザー定義のテキスト文字列で、USER_RESUMABLEまたはDBA_RESUMABLEビューに挿入して、一時停止されている特定の再開可能な文を識別できます。

RESUMABLEパラメータをyに設定して、再開可能な領域割当てを有効にしないかぎり、このパラメータは無視されます。

RESUMABLE_TIMEOUT

デフォルト: 7200秒(2時間)

エラー修正に必要な時間を指定します。タイムアウト時間内にエラーを修正できない場合は、文の実行が終了します。

RESUMABLEパラメータをyに設定して、再開可能な領域割当てを有効にしないかぎり、このパラメータは無視されます。

ROWS

デフォルト: y

表のデータ行をインポートするかどうかを指定します。

ROWS=nを指定すると、インポート操作の終了後、インポートされたすべての表の統計がロックされます。

SHOW

デフォルト: n

SHOW=yを指定すると、エクスポート・ダンプ・ファイルの内容が画面に表示されますが、インポートは実行されません。エクスポート・ファイルに含まれるSQL文は、インポート・ユーティリティでその文が実行される順序で表示されます。

SHOWパラメータを指定できるのは、FULL=yFROMUSERTOUSERまたはTABLESパラメータを指定した場合のみです。

SKIP_UNUSABLE_INDEXES

デフォルト: 初期化パラメータ・ファイルで指定した、Oracle Databaseの構成パラメータSKIP_UNUSABLE_INDEXESの値

SKIP_UNUSABLE_INDEXESパラメータは、インポート・ユーティリティおよびOracle Databaseの両方で提供されます。インポート・ユーティリティのSKIP_UNUSABLE_INDEXESパラメータは、インポート・ユーティリティのコマンドラインで指定します。Oracle DatabaseのSKIP_UNUSABLE_INDEXESパラメータは、初期化パラメータ・ファイルの構成パラメータとして指定します。相互に与える影響を理解しておく必要があります。

インポート・ユーティリティのコマンドラインでSKIP_UNUSABLE_INDEXESの値を指定しない場合、初期化パラメータ・ファイルで指定した、SKIP_UNUSABLE_INDEXES構成パラメータのデータベース設定が使用されます。

インポート・ユーティリティのコマンドラインでSKIP_UNUSABLE_INDEXESの値を指定した場合、この値は初期化パラメータ・ファイルで指定した、SKIP_UNUSABLE_INDEXES構成パラメータの値を上書きします。

yの値を指定すると、(システムまたはユーザーのいずれかによって)索引使用禁止状態に設定されている索引の作成が、インポート・ユーティリティではスキップされます。他の索引(事前に索引使用禁止に設定されていない索引)に対しては、行の挿入時にメンテナンス処理が行われます。

このパラメータを使用すると、選択した索引パーティションに対する索引のメンテナンスを、行データの挿入が完了するまで延期できます。インポート後、影響を受けた索引パーティションの再作成が必要です。


注意:

一意で使用禁止状態の索引に対しては、索引メンテナンスをスキップできません。したがって、一意の索引はSKIP_UNUSABLE_INDEXESパラメータの影響を受けません。 


INDEXES=nを指定してINDEXFILEパラメータを使用すると、索引の再作成を行うSQLスクリプトを作成できます。SKIP_UNUSABLE_INDEXESパラメータを指定しない場合、行挿入によって使用禁止索引をメンテナンスすると、その行挿入によってエラーが発生します。

参照:

『Oracle Database SQL言語リファレンス』のALTER SESSION文についての説明を参照してください。 

STATISTICS

デフォルト: ALWAYS

インポート時のデータベース・オプティマイザ統計の処理方法を指定します。

メニュー項目は次のとおりです。

STREAMS_CONFIGURATION

デフォルト: y

エクスポート・ダンプ・ファイル内に存在する一般的なStreamsメタデータをインポートするかどうかを指定します。

参照:

『Oracle Streamsレプリケーション管理者ガイド』 

STREAMS_INSTANTIATION

デフォルト: n

エクスポート・ダンプ・ファイル内に存在するStreamsインスタンス化メタデータをインポートするかどうかを指定します。ストリーム環境でインスタンス化の一部としてインポートする場合は、yを指定します。

参照:

『Oracle Streamsレプリケーション管理者ガイド』 

TABLES

デフォルト: なし

表モード・インポートでインポートすることを指定します。インポートの対象となる表名、パーティション名およびサブパーティション名をリストとして指定します。表レベル・インポートでは、パーティション表または非パーティション表全体をインポートできます。TABLESパラメータでは、インポート対象は、表およびその関連オブジェクトに限定されます(表20-3を参照)。TABLESパラメータでは、次の値を指定できます。

構文の形式は、次のとおりです。

tablename:partition_name

tablename:subpartition_name

tablename:partition_nameを使用する場合、指定された表はパーティション化される必要があり、partition_nameはパーティションまたはサブパーティションのうちのいずれかの名前である必要があります。指定された表がパーティション化されていない場合、partition_nameは無視され、表全体がインポートされます。

一度に指定できる表の数は、コマンドラインの制限によって決まります。

エクスポート・ファイルの処理中、エクスポート・ファイルの各表名は、パラメータで指定された順に、リスト中の各表名と比較されます。あいまいな処理が行われたり、処理時間が極端に長くならないように、固有の表名がリストの始めに表示され、一般的な表名(パターンを使用したもの)がリストの終わりに表示される必要があります。

エクスポート時には表名をスキーマ名(scott.empなど)で修飾できますが、インポート時にはできません。次に、間違って指定されたTABLESパラメータの例を示します。

imp TABLES=(jones.accts, scott.emp, scott.dept)

これらの表をインポートするには、次のように指定します。

imp FROMUSER=jones TABLES=(accts)
imp FROMUSER=scott TABLES=(emp,dept)

詳細は、「パターン一致を使用して様々な表をインポートする例」を参照してください。


注意:

UNIXなど一部のオペレーティング・システムで、カッコなどの特殊文字を使用する場合は、特殊文字として扱われないように、その文字の前にエスケープ文字を使用する必要があります。UNIXでは、次の例に示すように、エスケープ文字としてバックスラッシュ(\)を使用します。

TABLES=\(emp,dept\)
 

表名の制限

表名には次の制限があります。

TABLESPACES

デフォルト: なし

TRANSPORT_TABLESPACEyを指定した場合、データベースに転送する表領域を、このパラメータを使用して表示します。エクスポート・ファイルに複数の表領域がある場合は、そのすべての表領域をインポート操作の一部として指定する必要があります。

詳細は、「TRANSPORT_TABLESPACE」を参照してください。

TOID_NOVALIDATE

デフォルト: なし

型を参照している表のインポート時に、その名前の型がすでにデータベースに存在している場合は、その既存の型が、実際にその表で使用されているかどうか(実際は異なる型で、単に同じ名前であるだけではないか)を確認します。

この検証のために、型の一意の識別子(TOID)と、エクスポート・ファイルに格納された識別子が比較されます。TOIDが一致しない場合、その表の行はインポートされません。

この妥当性チェックをしてはいけない型もあります(たとえば、その型がカートリッジのインストールによって作成された場合)。TOID_NOVALIDATEパラメータを使用して、TOIDと比較しない型を指定できます。

構文は次のようになります。

TOID_NOVALIDATE=([schemaname.]typename [, ...])

次に例を示します。

imp scott/tiger TABLES=jobs TOID_NOVALIDATE=typ1
imp scott/tiger TABLES=salaries TOID_NOVALIDATE=(fred.typ0,sally.typ2,typ3)

その型にスキーマ名を指定しない場合、インポートするユーザーのスキーマがデフォルトになります。たとえば、前述の最初の例では、型typ1scott.typ1がデフォルトになり、2番目の例では、型typ3scott.typ3がデフォルトになります。

TOID_NOVALIDATEは、表の列型のみを処理します。表型には影響しません。

通常のインポートでは、削除される型が含まれていると、次のように出力されます。

[...]
. importing IMP3's objects into IMP3
. . skipping TOID validation on type IMP2.TOIDTYP0
. . importing table                  "TOIDTAB3"          
[...]


注意:

型の識別子を比較しないように指定する場合は、ユーザーの責任において、インポートされる型の属性リストを既存の型の属性リストと一致させるようにしてください。これらの属性リストが一致しない場合、インポート結果は保証されません。 


TOUSER

デフォルト: なし

インポートの対象となるスキーマを所有するユーザー名のリストを指定します。インポート操作の前にユーザー名が存在している必要があります。存在していない場合は、エラーが返されます。このパラメータを使用するには、IMP_FULL_DATABASEロールが必要です。オブジェクトがもともと入っていたスキーマと異なるスキーマにインポートする場合は、TOUSERを指定してください。次に例を示します。

imp FROMUSER=scott TOUSER=joe TABLES=emp

複数のスキーマを指定する場合、スキーマ名は対で指定します。次の例では、scottのオブジェクトをjoeのスキーマに、fredのオブジェクトをtedのスキーマにインポートします。

imp FROMUSER=scott,fred TOUSER=joe,ted

FROMUSERリストがTOUSERリストより長い場合、残りのスキーマは、通常のデフォルトの規則に従って、FROMUSERスキーマにインポートされるか、またはインポートを実行するユーザーのスキーマにインポートされます。余分なオブジェクトがTOUSERスキーマにインポートされるようにするには、次の構文を使用します。

imp FROMUSER=scott,adams TOUSER=ted,ted

ユーザーtedは2回指定されています。

参照:

FROMUSERおよびTOUSERを使用する場合の制限の詳細は、「FROMUSER」を参照してください。 

TRANSPORT_TABLESPACE

デフォルト: n

yを指定した場合、エクスポート・ファイルからトランスポータブルの表領域メタデータがインポートされます。

暗号化された列は、トランスポータブル表領域モードではサポートされていません。


注意:

トランスポータブル表領域をエクスポートした後、それよりも古いリリース・レベルのデータベースにインポートすることはできません。ターゲット・データベースのリリース・レベルは、ソース・データベース以上である必要があります。 


TTS_OWNERS

デフォルト: なし

TRANSPORT_TABLESPACEyを指定した場合、このパラメータを使用して、一連のトランスポータブル表領域のデータの所有者ユーザーを表示できます。

詳細は、「TRANSPORT_TABLESPACE」を参照してください。

USERID(ユーザー名/パスワード)

デフォルト: なし

インポートを実行するユーザーのユーザー名、パスワードおよびオプションの接続文字列を指定します。

ユーザーSYSとして接続する場合は、接続文字列にAS SYSDBAも指定する必要があります。オペレーティング・システムによっては、AS SYSDBAを特殊文字列とみなし、その文字列全体を引用符で囲む必要があります。

参照:

  • 『Oracle Database Heterogeneous Connectivity管理者ガイド』

  • Oracle Netに接続文字列を指定する方法の詳細は、ご使用のOracle Netプロトコルのユーザーズ・ガイドを参照してください。

 

VOLSIZE

デフォルト: なし

各テープ・ボリュームのダンプ・ファイルに最大バイト数を指定します。

VOLSIZEパラメータの最大値は、ご使用のプラットフォーム上に64ビットで格納できる最大値と同じです。

VOLSIZEの値は、数字にKB(キロバイト数)を付けて指定できます。たとえば、VOLSIZE=2KBは、VOLSIZE=2048と同じです。同様に、MBはメガバイト(1024×1024)を、GBはギガバイト(1024の3乗)を表します。Bはバイトの省略です。この場合、最終的なファイル・サイズの算出に乗算は不要です(VOLSIZE=2048Bは、VOLSIZE=2048と同じです)。

エクスポート・セッションの例

この項では、次のタイプのエクスポート・セッションの例を示します。

各例で、コマンドライン方式およびパラメータ・ファイル方式の両方の使用方法を示します。一部の例では、例の出力を含めるには長すぎた部分を示すために縦の省略記号を使用しています。

全データベース・モードでのエクスポート・セッションの例

全データベース・モードでエクスポートを実行できるのは、DBAロールまたはEXP_FULL_DATABASEロールを持つユーザーのみです。この例では、すべてのGRANTS(付与されている権限)およびすべてのデータとともにデータベース全体をファイルdba.dmpにエクスポートします。

パラメータ・ファイル方式

> exp PARFILE=params.dat

params.datファイルには、次の情報が格納されています。

FILE=dba.dmp
GRANTS=y
FULL=y
ROWS=y

コマンドライン方式

> exp FULL=y FILE=dba.dmp GRANTS=y ROWS=y

エクスポート・メッセージ

使用しているエクスポート・ユーティリティのリリース情報および接続しているOracle Databaseのリリース情報が表示されます。状態メッセージは、データベースが完全にエクスポートされると出力されます。最終の完了メッセージは、エクスポートが警告もなく正常に完了した場合に返されます。

ユーザー・モードでのエクスポート・セッションの例

ユーザー・モードのエクスポートは、1人以上のデータベース・ユーザーのバックアップに使用可能です。たとえば、削除されたユーザーの表を、DBAが一定の期間バックアップを取る場合などに有効です。ユーザー・モードは、ユーザーが自分自身のデータのバックアップを取る場合や、ある所有者のオブジェクトを別の所有者に移す場合にも適しています。次の例では、ユーザーscottが自分が所有する表をエクスポートします。

パラメータ・ファイル方式

> exp scott/tiger PARFILE=params.dat

params.datファイルには、次の情報が格納されています。

FILE=scott.dmp
OWNER=scott
GRANTS=y
ROWS=y
COMPRESS=y

コマンドライン方式

> exp scott/tiger FILE=scott.dmp OWNER=scott GRANTS=y ROWS=y COMPRESS=y 

エクスポート・メッセージ

使用しているエクスポート・ユーティリティのリリース情報および接続しているOracle Databaseのリリース情報が表示されます。その後で、次に示すような状態メッセージが表示されます。

.
.
. about to export SCOTT's tables via Conventional Path ...
. . exporting table                          BONUS          0 rows exported
. . exporting table                           DEPT          4 rows exported
. . exporting table                            EMP         14 rows exported
. . exporting table                       SALGRADE          5 rows exported
.
.
.
Export terminated successfully without warnings.

表モードでのエクスポート・セッションの例

表モードでは、表データまたは表定義のみをエクスポートできます。(エクスポートする行がない場合は、CREATE TABLE文がエクスポート・ファイルに書き込まれます。このとき、権限付与および索引が指定されると、これらもエクスポート・ファイルに書き込まれます。)

EXP_FULL_DATABASEロールを持つユーザーは、表モードでTABLES=schemaname.tablenameを指定することによって、どのユーザーのスキーマに属する表でもエクスポートできます。

schemanameを指定しない場合、エクスポート実行者のスキーマ名がデフォルト値として採用されます。次の例では、a表およびc表に対して、SYSTEMスキーマがデフォルトとして採用されます。

> exp TABLES=(a, scott.b, c, mary.d)

EXP_FULL_DATABASEロールを持つユーザーは、他のユーザーが所有する依存オブジェクトのエクスポートも実行できます。権限を持たないユーザーは、そのユーザー自身が所有し、指定した表の依存オブジェクトのみをエクスポートできます。

表モードのエクスポートには、クラスタ定義がありません。このため、データはクラスタ化されていない表としてエクスポートされます。したがって、表モードは、表の非クラスタ化に使用できます。

例1: DBAによる2人のユーザーの表のエクスポート

この例では、DBAが2人のユーザーの表を指定してエクスポートします。

パラメータ・ファイル方式

> exp PARFILE=params.dat

params.datファイルには、次の情報が格納されています。

FILE=expdat.dmp
TABLES=(scott.emp,blake.dept)
GRANTS=y
INDEXES=y

コマンドライン方式

> exp FILE=expdat.dmp TABLES=(scott.emp,blake.dept) GRANTS=y INDEXES=y

エクスポート・メッセージ

使用しているエクスポート・ユーティリティのリリース情報および接続しているOracle Databaseのリリース情報が表示されます。その後で、次に示すような状態メッセージが表示されます。

.
.
.
About to export specified tables via Conventional Path ...
Current user changed to SCOTT
. . exporting table                            EMP         14 rows exported
Current user changed to BLAKE
. . exporting table                           DEPT          8 rows exported
Export terminated successfully without warnings.

例2: ユーザーによる自分が所有する表のエクスポート

この例では、ユーザーblakeが自分が所有している表の中から選択した表をエクスポートします。

パラメータ・ファイル方式

> exp blake/paper PARFILE=params.dat

params.datファイルには、次の情報が格納されています。

FILE=blake.dmp
TABLES=(dept,manager)
ROWS=y
COMPRESS=y

コマンドライン方式

> exp blake/paper FILE=blake.dmp TABLES=(dept, manager) ROWS=y COMPRESS=y

エクスポート・メッセージ

使用しているエクスポート・ユーティリティのリリース情報および接続しているOracle Databaseのリリース情報が表示されます。その後で、次に示すような状態メッセージが表示されます。

.
.
.

About to export specified tables via Conventional Path ...
. . exporting table                           DEPT          8 rows exported
. . exporting table                        MANAGER          4 rows exported
Export terminated successfully without warnings.

例3: パターン一致を使用した様々な表のエクスポート

この例では、パターン一致を使用して、ユーザーscottおよびユーザーblakeの様々な表をエクスポートします。

パラメータ・ファイル方式

> exp PARFILE=params.dat

params.datファイルには、次の情報が格納されています。

FILE=misc.dmp
TABLES=(scott.%P%,blake.%,scott.%S%)

コマンドライン方式

> exp FILE=misc.dmp TABLES=(scott.%P%,blake.%,scott.%S%)

エクスポート・メッセージ

使用しているエクスポート・ユーティリティのリリース情報および接続しているOracle Databaseのリリース情報が表示されます。その後で、次に示すような状態メッセージが表示されます。

.
.
.
About to export specified tables via Conventional Path ...
Current user changed to SCOTT
. . exporting table                           DEPT          4 rows exported
. . exporting table                            EMP         14 rows exported
Current user changed to BLAKE
. . exporting table                           DEPT          8 rows exported
. . exporting table                        MANAGER          4 rows exported
Current user changed to SCOTT
. . exporting table                          BONUS          0 rows exported
. . exporting table                       SALGRADE          5 rows exported
Export terminated successfully without warnings.

パーティション・レベル・エクスポートでのエクスポート・セッションの例

パーティション・レベル・エクスポートでは、エクスポートの対象を表のパーティションおよびサブパーティション単位で指定できます。

例1: パーティションを指定しない表のエクスポート

従業員名にパーティションが指定されているemp表があるとします。mおよびzの2つのパーティションがあります。次の例に示すように、パーティションを指定しないでエクスポートを実行すると、すべてのパーティションがエクスポートされます。

パラメータ・ファイル方式

> exp scott/tiger PARFILE=params.dat

params.datファイルには、次の情報が格納されています。

TABLES=(emp)
ROWS=y

コマンドライン方式

> exp scott/tiger TABLES=emp rows=y

エクスポート・メッセージ

使用しているエクスポート・ユーティリティのリリース情報および接続しているOracle Databaseのリリース情報が表示されます。その後で、次に示すような状態メッセージが表示されます。

.
.
.
About to export specified tables via Conventional Path ...
. . exporting table                            EMP
. . exporting partition                              M          8 rows exported
. . exporting partition                              Z          6 rows exported
Export terminated successfully without warnings.

例2: パーティションを指定した表のエクスポート

従業員名にパーティションが指定されているemp表があるとします。mおよびzの2つのパーティションがあります。次の例に示すように、パーティションを指定して表をエクスポートすると、指定したパーティションのみがエクスポートされます。

パラメータ・ファイル方式

 > exp scott/tiger PARFILE=params.dat

params.datファイルには、次の情報が格納されています。

TABLES=(emp:m)
ROWS=y

コマンドライン方式

> exp scott/tiger TABLES=emp:m rows=y

エクスポート・メッセージ

使用しているエクスポート・ユーティリティのリリース情報および接続しているOracle Databaseのリリース情報が表示されます。その後で、次に示すような状態メッセージが表示されます。

.
.
.
About to export specified tables via Conventional Path ...
. . exporting table                            EMP
. . exporting partition                              M          8 rows exported
Export terminated successfully without warnings.

例3: コンポジット・パーティションのエクスポート

empは、2つのパーティションmおよびzで構成されているパーティション表です。empは、コンポジット・メソッドでパーティション化されます。パーティションmにはサブパーティションsp1およびsp2があり、パーティションzにはサブパーティションsp3およびsp4があります。次の例に示すように、コンポジット・パーティションmをエクスポートする場合、すべてのサブパーティション(sp1およびsp2)がエクスポートされます。サブパーティション(sp4)を指定して表をエクスポートすると、指定したサブパーティションのみがエクスポートされます。

パラメータ・ファイル方式

> exp scott/tiger PARFILE=params.dat

params.datファイルには、次の情報が格納されています。

TABLES=(emp:m,emp:sp4)
ROWS=y

コマンドライン方式

> exp scott/tiger TABLES=(emp:m, emp:sp4) ROWS=y

エクスポート・メッセージ

使用しているエクスポート・ユーティリティのリリース情報および接続しているOracle Databaseのリリース情報が表示されます。その後で、次に示すような状態メッセージが表示されます。

.
.
.
About to export specified tables via Conventional Path ...
. . exporting table                            EMP
. . exporting composite partition                    M
. . exporting subpartition                         SP1          1 rows exported
. . exporting subpartition                         SP2          3 rows exported
. . exporting composite partition                    Z
. . exporting subpartition                         SP4          1 rows exported
Export terminated successfully without warnings.

インポート・セッションの例

この項では、インポート・セッションの例をいくつか取り上げ、パラメータ・ファイル方式およびコマンドライン方式の使用方法を示します。ここでは、次の4つのインポート・セッションの例を示します。

特定のユーザーの表を選択してインポートする例

この例では、管理者が全データベース・エクスポート・ファイルを使用して、dept表およびemp表をscottのスキーマにインポートします。

パラメータ・ファイル方式

> imp PARFILE=params.dat

params.datファイルには、次の情報が格納されています。

FILE=dba.dmp
SHOW=n
IGNORE=n
GRANTS=y
FROMUSER=scott
TABLES=(dept,emp)

コマンドライン方式

> imp FILE=dba.dmp FROMUSER=scott TABLES=(dept,emp)

インポート・メッセージ

使用しているインポート・ユーティリティのリリース情報および接続しているOracle Databaseのリリース情報が表示されます。また、状態メッセージも表示されます。

別のユーザーによってエクスポートされた表をインポートする例

この例では、blakeがエクスポートしたファイルからunit表およびmanager表をscottのスキーマにインポートします。

パラメータ・ファイル方式

> imp PARFILE=params.dat

params.datファイルには、次の情報が格納されています。

FILE=blake.dmp
SHOW=n
IGNORE=n
GRANTS=y
ROWS=y
FROMUSER=blake
TOUSER=scott
TABLES=(unit,manager)

コマンドライン方式

> imp FROMUSER=blake TOUSER=scott FILE=blake.dmp TABLES=(unit,manager)

インポート・メッセージ

使用しているインポート・ユーティリティのリリース情報および接続しているOracle Databaseのリリース情報が表示されます。また、状態メッセージも表示されます。

あるユーザーの表を別のユーザーへインポートする例

この例では、データベース管理者(DBA)がユーザーscottのすべての表をユーザーblakeのアカウントにインポートします。

パラメータ・ファイル方式

 > imp PARFILE=params.dat

params.datファイルには、次の情報が格納されています。

FILE=scott.dmp
FROMUSER=scott
TOUSER=blake
TABLES=(*)

コマンドライン方式

> imp FILE=scott.dmp FROMUSER=scott TOUSER=blake TABLES=(*)

インポート・メッセージ

使用しているインポート・ユーティリティのリリース情報および接続しているOracle Databaseのリリース情報が表示されます。その後で、次に示すような状態メッセージが表示されます。

.
.
.
Warning: the objects were exported by SCOTT, not by you

import done in WE8DEC character set and AL16UTF16 NCHAR character set
. importing SCOTT's objects into BLAKE
. . importing table                        "BONUS"          0 rows imported
. . importing table                         "DEPT"          4 rows imported
. . importing table                          "EMP"         14 rows imported
. . importing table                     "SALGRADE"          5 rows imported
Import terminated successfully without warnings.

パーティション・レベル・インポートでのインポート・セッションの例

この項では、複数のパーティションがある表、パーティションとサブパーティションがある表、および異なる列で再パーティション化した表のインポートについて説明します。

例1: パーティション・レベル・インポート

この例では、empは、P1P2およびP3で構成されているパーティション表です。

表レベルのエクスポート・ファイルを作成するには、次のコマンドを使用します。

> exp scott/tiger TABLES=emp FILE=exmpexp.dat ROWS=y

エクスポート・メッセージ

使用しているエクスポート・ユーティリティのリリース情報および接続しているOracle Databaseのリリース情報が表示されます。その後で、次に示すような状態メッセージが表示されます。

.
.
.
About to export specified tables via Conventional Path ...
. . exporting table                            EMP
. . exporting partition                             P1          7 rows exported
. . exporting partition                             P2         12 rows exported
. . exporting partition                             P3          3 rows exported
Export terminated successfully without warnings.

パーティション・レベルのインポートでは、インポートの対象に、エクスポートした表の特定のパーティションを指定できます。この例では、emp表のP1およびP3を指定します。

> imp scott/tiger TABLES=(emp:p1,emp:p3) FILE=exmpexp.dat ROWS=y 

インポート・メッセージ

使用しているインポート・ユーティリティのリリース情報および接続しているOracle Databaseのリリース情報が表示されます。また、状態メッセージも表示されます。

例2: コンポジット・パーティション表のパーティション・レベル・インポート

この例では、コンポジット・パーティション表のパーティションおよびサブパーティションがインポートされます。empは、2つのコンポジット・パーティションP1およびP2のパーティション表です。パーティションP1には、3つのサブパーティションP1_SP1P1_SP2およびP1_SP3があります。パーティションP2には、2つのサブパーティションP2_SP1およびP2_SP2があります。

表レベルのエクスポート・ファイルを作成するには、次のコマンドを使用します。

> exp scott/tiger TABLES=emp FILE=exmpexp.dat ROWS=y 

エクスポート・メッセージ

使用しているエクスポート・ユーティリティのリリース情報および接続しているOracle Databaseのリリース情報が表示されます。その後で、次に示すような状態メッセージが表示されます。

コマンドラインで実行されると次のエクスポート・メッセージが表示されます。

.
.
.
About to export specified tables via Conventional Path ...
. . exporting table                            EMP
. . exporting composite partition                   P1
. . exporting subpartition                      P1_SP1          2 rows exported
. . exporting subpartition                      P1_SP2         10 rows exported
. . exporting subpartition                      P1_SP3          7 rows exported
. . exporting composite partition                   P2
. . exporting subpartition                      P2_SP1          4 rows exported
. . exporting subpartition                      P2_SP2          2 rows exported
Export terminated successfully without warnings.

次のインポート・コマンドでは、emp表にあるコンポジット・パーティションP1のサブパーティションP1_SP2およびP1_SP3と、emp.表にあるコンポジット・パーティションP2のすべてのサブパーティションがインポートされます。

> imp scott/tiger TABLES=(emp:p1_sp2,emp:p1_sp3,emp:p2) FILE=exmpexp.dat ROWS=y  

インポート・メッセージ

使用しているインポート・ユーティリティのリリース情報および接続しているOracle Databaseのリリース情報が表示されます。その後で、次に示すような状態メッセージが表示されます。

.
.
.
. importing SCOTT's objects into SCOTT
. . importing subpartition              "EMP":"P1_SP2"         10 rows imported
. . importing subpartition              "EMP":"P1_SP3"          7 rows imported
. . importing subpartition              "EMP":"P2_SP1"          4 rows imported
. . importing subpartition              "EMP":"P2_SP2"          2 rows imported
Import terminated successfully without warnings.

例3: 別の列での表の再パーティション化

この例では、emp表に、empno列に基づく2つのパーティションがあります。emp表をdeptno列で再パーティション化します。

別の列で表を再パーティション化するには、次の手順を実行してください。

  1. エクスポートを実行して、データを保存します。

  2. データベースから表を削除します。

  3. 表を新しいパーティションに分割して再作成します。

  4. 表データをインポートします。

次に、これらの手順の例を示します。

> exp scott/tiger table=emp file=empexp.dat 
.
.
.

About to export specified tables via Conventional Path ...
. . exporting table                            EMP
. . exporting partition                        EMP_LOW          4 rows exported
. . exporting partition                       EMP_HIGH         10 rows exported
Export terminated successfully without warnings.

SQL> connect scott/tiger
Connected.
SQL> drop table emp cascade constraints;
Statement processed.
SQL> create table emp
  2    (
  3    empno    number(4) not null,
  4    ename    varchar2(10),
  5    job      varchar2(9),
  6    mgr      number(4),
  7    hiredate date,
  8    sal      number(7,2),
  9    comm     number(7,2),
 10    deptno   number(2)
 11    )
 12 partition by range (deptno)
 13   (
 14   partition dept_low values less than (15)
 15     tablespace tbs_1,
 16   partition dept_mid values less than (25)
 17     tablespace tbs_2,
 18   partition dept_high values less than (35)
 19     tablespace tbs_3
 20   );
Statement processed.
SQL> exit

> imp scott/tiger tables=emp file=empexp.dat ignore=y
.
.
.
import done in WE8DEC character set and AL16UTF16 NCHAR character set
. importing SCOTT's objects into SCOTT
. . importing partition                "EMP":"EMP_LOW"          4 rows imported
. . importing partition               "EMP":"EMP_HIGH"         10 rows imported
Import terminated successfully without warnings.

次に示すSQLのSELECT文では、データはdeptno列でパーティション化されます。

SQL> connect scott/tiger
Connected.
SQL> select empno, deptno from emp partition (dept_low);
EMPNO      DEPTNO    
---------- ----------
      7782         10
      7839         10
      7934         10
3 rows selected.
SQL> select empno, deptno from emp partition (dept_mid);
EMPNO      DEPTNO    
---------- ----------
      7369         20
      7566         20
      7788         20
      7876         20
      7902         20
5 rows selected.
SQL> select empno, deptno from emp partition (dept_high);
EMPNO      DEPTNO    
---------- ----------
      7499         30
      7521         30
      7654         30
      7698         30
      7844         30
      7900         30
6 rows selected.
SQL> exit;

パターン一致を使用して様々な表をインポートする例

この例では、パターン一致を使用して、ユーザーscottの様々な表をインポートします。

パラメータ・ファイル方式

imp PARFILE=params.dat

params.datファイルには、次の情報が格納されています。

FILE=scott.dmp
IGNORE=n
GRANTS=y
ROWS=y
FROMUSER=scott
TABLES=(%d%,b%s)

コマンドライン方式

imp FROMUSER=scott FILE=scott.dmp TABLES=(%d%,b%s)

インポート・メッセージ

使用しているインポート・ユーティリティのリリース情報および接続しているOracle Databaseのリリース情報が表示されます。その後で、次に示すような状態メッセージが表示されます。

.
.
.
import done in US7ASCII character set and AL16UTF16 NCHAR character set
import server uses JA16SJIS character set (possible charset conversion)
. importing SCOTT's objects into SCOTT
. . importing table                  "BONUS"          0 rows imported
. . importing table                   "DEPT"          4 rows imported
. . importing table               "SALGRADE"          5 rows imported
Import terminated successfully without warnings.

エクスポート・ユーティリティおよびインポート・ユーティリティを使用したプラットフォーム間のデータベースの移動

ハードウェア・プラットフォーム間で既存のOracle Databaseを移動させるためにOracleでサポートされている方法は、エクスポート・ユーティリティおよびインポート・ユーティリティを使用する方法のみです。これにはUNIXシステムとNTシステム間および異なるプラットフォームで実行されている2つのNTシステム間の移動が含まれます。

次の手順では、プラットフォーム間のデータベースの移動方法の概要を示します。

  1. DBAユーザーとして次のSQL問合せを発行して、すべての表領域の正確な名前を取得します。この情報は後の手順で必要となります。

    SQL> SELECT tablespace_name FROM dba_tablespaces;
    
    
  2. DBAユーザーとして、ソース・データベースからの全体エクスポートを次のように実行します。

    > exp FULL=y FILE=expdat.dmp
    

    参照:

    「全データベースのエクスポートおよびインポートについての考慮点」 

  3. ダンプ・ファイルをターゲット・データベース・サーバーに移動します。FTPを使用する場合は、ファイルの破損を防止するために、(FTPプロンプトでbinaryを入力して)必ずバイナリ形式でコピーします。

  4. ターゲット・サーバーでデータベースを作成します。

    参照:

    データベースの作成方法の詳細は、『Oracle Database管理者ガイド』を参照してください。 

  5. ダンプ・ファイルのインポート前に、手順1で取得した情報を使用し、表領域を作成する必要があります。表領域を作成しなかった場合、対応するデータ・ファイルがソース・データベースと同じファイル構造で作成され、ターゲット・システムのファイル構造と互換性が得られない場合があります。

  6. IGNOREパラメータを使用可能にし、DBAユーザーとして全体インポートを実行します。

    > imp FULL=y IGNORE=y FILE=expdat.dmp
    
    

    IGNORE=yを使用すると、インポート時の作成エラーは無視され、インポートが完了します。

  7. 新しいデータベースの全体バックアップを実行します。

警告、エラーおよび完了メッセージ

この項では、エクスポート・ユーティリティおよびインポート・ユーティリティによって発行される異なるタイプのメッセージについて説明します。また、そのメッセージのログ・ファイルへの保存方法についても説明します。

ログ・ファイル

すべてのエクスポート・メッセージおよびインポート・メッセージは、ログ・ファイルに保存できます。この場合の保存方法は2つあります。1つ目は、LOGパラメータを使用する方法です。2つ目は、システムでサポートされている場合に限定されますが、出力をファイルにリダイレクトする方法です。リダイレクト先のファイルには、正常にアンロードおよびロードされた場合はその内容が、エラーが発生した場合はそのエラーに関する詳細情報が記録されます。

警告メッセージ

リカバリ可能なエラーの場合、エクスポートおよびインポート処理は続行されます。たとえば、表のエクスポート中にエラーが発生した場合は、エラー・メッセージが表示され(またはログが記録され)、次の表にスキップして処理が続けられます。リカバリ可能なエラーは、警告と呼ばれます。

また、インポートおよびエクスポート操作で、無効なオブジェクトが検出された場合にも警告が発行されます。

たとえば、表モード・エクスポートで、存在しない表を指定した場合、エクスポート・ユーティリティは他の表をすべてエクスポートします。その後、警告が発行されて処理が正常に終了されます。

リカバリ不能エラー・メッセージ

エラーの中にはリカバリ不能なものもあり、このようなエラーが発生するとエクスポート・セッションまたはインポート・セッションは終了します。これらのエラーは、内部的な問題が原因であるか、またはメモリーなどのリソースが使用できないか、リソースを使い果たしたことが原因で発生します。たとえば、catexp.sqlスクリプトが実行されていない場合、エクスポート・ユーティリティによって、次のようなリカバリ不能なエラー・メッセージが発行されます。

EXP-00024: Export views not installed, please notify your DBA

完了メッセージ

エクスポートまたはインポートがエラーを返さないで完了した場合、そのことを示すメッセージが表示されます。次に、例を示します。

Export terminated successfully without warnings

リカバリ可能エラーが1つ以上発生しても、ジョブがそのまま続行され、処理が完了した場合は、次のようなメッセージが表示されます。

Export terminated successfully with warnings

リカバリ不能なエラーが発生した場合、ジョブは即時終了し、そのことを示すメッセージが表示されます。次に、例を示します。

Export terminated unsuccessfully

終了コードによる結果の検査と表示

エクスポート・ユーティリティおよびインポート・ユーティリティでは、操作の完了後、すぐに実行結果を確認できます。プラットフォームによっては、実行結果はプロセス終了コードに通知され、ログ・ファイルにも記録されます。これによって、コマンドラインやスクリプトからの出力を確認できます。表20-6に、それぞれの結果に対応する終了コードを示します。

表20-6    エクスポートおよびインポート時の終了コード 
結果  終了コード 

エクスポートは警告なしで正常終了しました。

インポートは警告なしで正常終了しました。 

EX_SUCC 

エクスポートは正常に終了しましたが、警告が発生しました。

インポートは正常に終了しましたが、警告が発生しました。 

EX_OKWARN 

エラーが発生したためエクスポートを終了します。

エラーが発生したためインポートを終了します。 

EX_FAIL 

UNIXの場合、終了コードは次のようになります。

EX_SUCC   0
EX_OKWARN 0
EX_FAIL   1

ネットワークに関する考慮点

この項では、ネットワークを介したエクスポートおよびインポートの実行時に考慮すべき点について説明します。

ネットワークを介してエクスポート・ファイルを転送する方法

エクスポート・ファイルはバイナリ形式であるため、ネットワークを介してそのエクスポート・ファイルを転送するときは、バイナリ転送をサポートしているプロトコルを使用して、ファイルが破損しないようにしてください。たとえば、FTPなどのファイル転送プロトコルを使用して、バイナリ・モードでファイルを転送します。エクスポート・ファイルをキャラクタ・モードで送信すると、ファイルのインポート時にエラーが発生します。

Oracle Netを使用したエクスポートおよびインポート

Oracle Netを使用すると、ネットワークを介してエクスポートおよびインポートを実行できます。たとえば、エクスポート・ユーティリティをローカルで実行して、リモートOracle Databaseのデータをローカル・エクスポート・ファイルに書込みできます。また、インポート・ユーティリティをローカルで実行して、リモートOracle Databaseのデータの読取りができます。

Oracle Netでエクスポート・ユーティリティまたはインポート・ユーティリティを使用するには、expコマンドまたはimpコマンドにユーザー名とパスワードを入力するときに接続修飾文字列@connect_stringを指定する必要があります。この句の構文の詳細は、ご使用のOracle Netプロトコルのユーザーズ・ガイドを参照してください。

参照:

  • 『Oracle Database Net Services管理者ガイド』

  • 『Oracle Database Heterogeneous Connectivity管理者ガイド』

 

キャラクタ・セットおよびグローバリゼーション・サポートに関する考慮点

この項では、ユーザー・データおよびデータ定義言語(DDL)のキャラクタ・セット変換に関連するエクスポート・ユーティリティおよびインポート・ユーティリティのグローバリゼーション・サポートの動作について説明します。

ユーザー・データ

エクスポート・ユーティリティは、常に、エクスポート・サーバーのキャラクタ・セットでUnicodeデータを含むユーザー・データをエクスポートします。(キャラクタ・セットは、データベース作成時に指定されます。)ソース・データベースのキャラクタ・セットが、インポート・データベースのキャラクタ・セットと異なる場合、自動的にデータをインポート・サーバーのキャラクタ・セットに変換するためのキャラクタ・セット変換が実行されます。

変換によるキャラクタ・セットのソート順への影響

エクスポート・キャラクタ・セットのソート順が、インポート・キャラクタ・セットと異なる場合、キャラクタ列をパーティション化した表では、結果が保証されません。たとえば、次のようなASCIIキャラクタ・セットのデータベースの表定義について考えてみます。

CREATE TABLE partlist 
   ( 
   part     VARCHAR2(10), 
   partno   NUMBER(2) 
   ) 
PARTITION BY RANGE (part) 
  ( 
  PARTITION part_low VALUES LESS THAN ('Z') 
    TABLESPACE tbs_1, 
  PARTITION part_mid VALUES LESS THAN ('z') 
    TABLESPACE tbs_2, 
  PARTITION part_high VALUES LESS THAN (MAXVALUE) 
    TABLESPACE tbs_3 
  );

ASCIIキャラクタ・セットでは、Zの後にzがあるため、このパーティション・スキームには意味があります。

この表がEBCDICキャラクタ・セット・ベースのデータベースにインポートされると、EBCDICキャラクタ・セットでは、zZの前にあるため、part_midパーティションのすべての行が、part_lowパーティションに移行します。希望する結果を得るには、partlist表の所有者は、インポート後に表を再パーティション化する必要があります。

参照:

『Oracle Databaseグローバリゼーション・サポート・ガイド』 

DDL

エクスポートおよびインポート操作時に、データ定義言語(DDL)に対して最大3回のキャラクタ・セット変換が必要です。

  1. エクスポート・ファイルは、環境変数NLS_LANGでユーザー・セッション用に指定されたキャラクタ・セットで書き出されます。NLS_LANGの値が、データベースのキャラクタ・セットと異なる場合は、キャラクタ・セット変換が実行されます。

  2. エクスポート・ファイルのキャラクタ・セットが、インポート先ユーザー・セッション用のキャラクタ・セットと異なる場合、ユーザー・セッションのキャラクタ・セットに変換されます。シングルバイト・キャラクタ・セットの場合のみにこの変換が実行されます。マルチバイト・キャラクタ・セットの場合は、インポート・ファイルのキャラクタ・セットがエクスポート・ファイルのキャラクタ・セットと同じである必要があります。

  3. ターゲット・データベースのキャラクタ・セットが、インポート・ユーザー・セッション用のキャラクタ・セットと異なる場合、3回目のキャラクタ・セット変換が実行される場合があります。

キャラクタ・セット変換によるデータの損失を最小限にするには、エクスポート・データベース、エクスポート・ユーザー・セッション、インポート・ユーザー・セッションおよびインポート・データベースのすべてにおいて、同一のキャラクタ・セットを使用するようにしてください。

シングルバイト・キャラクタ・セットとエクスポートおよびインポート

8ビット・キャラクタ・セットのエクスポート・ファイルをインポートすると、8ビット文字の一部が消去されることがあります(同等の7バイトに変換されます)。これが発生するのは、インポートを実行するシステムに、システム固有の7ビット・キャラクタ・セットが存在するか、オペレーティング・システム環境変数NLS_LANGが7ビット・キャラクタ・セットに設定されている場合です。アクセント記号が付いている文字からアクセントが消去されるのが最もよく見られる例です。

このような状況を回避するために、オペレーティング・システム環境変数NLS_LANGにエクスポート・ファイルのキャラクタ・セットを設定できます。

マルチバイト・キャラクタ・セットおよびエクスポートとインポート

ターゲット・キャラクタ・セットに同等の文字がないエクスポート・ファイル中の文字は、変換時にデフォルトの文字に置換されます(デフォルトの文字は、ターゲット・キャラクタ・セットによって定義されます)。100%完全に変換されるためには、ターゲット・キャラクタ・セットはソース・キャラクタ・セットのスーパーセットであるか、ソース・キャラクタ・セットと同等である必要があります。

参照:

『Oracle Databaseグローバリゼーション・サポート・ガイド』 


注意:

インポート・クライアントとインポート・サーバーでキャラクタ・セット幅が異なる場合、変換によってデータが長くなると、データが切り捨てられることがあります。データが切り捨てられると、インポート・ユーティリティによって警告メッセージが表示されます。 


マテリアライズド・ビューおよびスナップショット


注意:

特定の状況、特にデータ・ウェアハウスに関連する場合、スナップショットは、マテリアライズド・ビューと呼ばれます。この項では、そのような場合でもスナップショットという用語を使用します。 


スナップショット・システムには、マスター表、オプションのスナップショット・ログおよびスナップショット自体の3つのオブジェクトがあり、相互に関連しています。表(マスター表、スナップショット・ログ表定義およびスナップショット表)は、個別にエクスポートできます。スナップショット・ログは、対応付けられたマスター表をエクスポートしないかぎり、エクスポートできません。スナップショットをエクスポートできるのは、全データベース・エクスポートおよびユーザー・モード・エクスポートの場合のみです。表モードではエクスポートできません。

参照:

インポート固有の移行と互換性、およびスナップショットとスナップショット・ログの詳細は、『Oracle Databaseアドバンスト・レプリケーション』を参照してください。 

スナップショット・ログ

インポート先のデータベースにマスター表がすでに存在し、そのマスター表にスナップショット・ログがある場合は、ダンプ・ファイルのスナップショット・ログがインポートされます。

ROWIDスナップショット・ログのエクスポートでは、スナップショット・ログに記録されているROWIDはインポートした後には意味を持ちません。このため、各ROWIDのスナップショットによる最初の高速リフレッシュは失敗し、完全リフレッシュが必要であることを示すエラーが発生します。

リフレッシュのエラーを回避するには、ROWIDのスナップショット・ログをインポートしてから完全リフレッシュを実行してください。完全リフレッシュを実行すると、後続の高速リフレッシュが適切に行われます。これに対し、主キー・スナップショット・ログをエクスポートした場合は、インポートした後でも主キーの値は意味を持ちます。したがって、インポートした後でも、主キーのスナップショットにより、高速リフレッシュを実行できます。

スナップショット

エクスポート・ファイルからリストアされたスナップショットは、前の状態に戻ってしまいます。インポートでは、最後のリフレッシュが実行された時刻が、スナップショット表定義の一部としてインポートされます。次のリフレッシュ時刻を計算する機能もインポートされます。

各リフレッシュによって、署名が付けられます。高速リフレッシュでは、スナップショットを最新に保つため、その署名の時刻から日付を決定するログ・エントリが使用されます。高速リフレッシュが完了した時点で署名は削除され、新しい署名が付けられます。他のスナップショットのリフレッシュに必要でないログ・エントリ(残っている最も古い署名よりも前の時刻を持つすべてのログ・エントリ)も削除されます。

スナップショットのインポート

エクスポート・ファイルからスナップショットをリストアすると、問題が発生する場合があります。

スナップショットが時刻Aにリフレッシュされ、時刻Bにエクスポートされ、時刻Cに再びリフレッシュされたとします。破損などの問題が発生したため、スナップショットを削除してインポートしなおすことによってリストアする必要があります。新しくインポートしたスナップショットには、時刻Aに実行した最後のリフレッシュが記録されていますが、高速リフレッシュに必要となるログ・エントリが存在しなくなっている可能性があります。ログ・エントリが存在する場合は(たとえば、リフレッシュする必要のある別のスナップショットに必要なため)、このエントリが使用され、高速リフレッシュは正常に完了します。ログ・エントリが存在しない場合、高速リフレッシュは失敗し、完全リフレッシュが必要であることを示すエラーが発生します。

異なるスキーマへのスナップショットのインポート

スナップショットおよび関連項目は、DDL文で明示的に指定されたスキーマ名でエクスポートされます。異なるスキーマにインポートする場合は、FROMUSERパラメータおよびTOUSERパラメータを使用します。これは、異なるスキーマにインポートできないスナップショット・ログには適用されません。

トランスポータブル表領域

トランスポータブル表領域機能は、一連の表領域を、あるOracle Databaseから他のOracle Databaseに移動できる機能です。


注意:

トランスポータブル表領域をエクスポートした後、それよりも古いリリース・レベルのデータベースにインポートすることはできません。ターゲット・データベースのリリース・レベルは、ソース・データベース以上である必要があります。 


一連の表領域を移動またはコピーするには、表領域を読取り専用にし、表領域のデータ・ファイルをコピーしてから、エクスポートおよびインポートを使用して、データ・ディクショナリに格納されているデータベース情報(メタデータ)を移動します。データ・ファイルおよびメタデータのエクスポート・ファイルの両方を、ターゲット・データベースにコピーする必要があります。これらのファイルの転送は、オペレーティング・システムのコピー機能、バイナリ・モードFTP、CD-ROMへの出力などのような、フラットまたはバイナリ・ファイルのコピー機能を使用して行われます。

データ・ファイルのコピーおよびメタデータのエクスポートの後、表領域を任意に読み書き両用モードにできます。

次のパラメータで、トランスポータブル表領域のメタデータを移動できます。

エクスポート操作でのこれらのパラメータの使用方法の詳細は、「TABLESPACES」および「TRANSPORT_TABLESPACE」を参照してください。

インポート操作でのこれらのパラメータの使用方法の詳細は、「TABLESPACES」および「TRANSPORT_TABLESPACE」を参照してください。

参照:

  • トランスポータブル表領域の管理の詳細は、『Oracle Database管理者ガイド』を参照してください。

  • トランスポータブル表領域の詳細は、『Oracle Database概要』を参照してください。

 

読取り専用表領域

読取り専用表領域はエクスポート可能です。インポートでは、表領域がターゲット・データベース内に存在しない場合、読取り/書込み表領域として表領域が作成されます。読取り専用機能が必要な場合は、インポート後にその表領域を手動で読取り専用にする必要があります。

ターゲット・データベース内に表領域がすでに存在し、読取り専用である場合は、インポート前にこの表領域を読取り/書込み可能にする必要があります。

表領域を削除する方法

インポート前に、オブジェクトに別の表領域を使用するように再定義すると、表領域を削除できます。impコマンドの発行時には、IGNORE=yを指定します。

表領域を削除するには、通常、全データベース・エクスポートを実行し、(ログオフの前に)削除する表領域と同名の表領域をブロック数0(ゼロ)で作成します。IGNORE=yが指定されていると、インポート時にその表領域に関するCREATE TABLESPACE文はエラーとなります。これにより、削除対象である不要な表領域は作成されません。

その表領域のすべてのオブジェクト(ただし、パーティション表、特定の型の表、LOB列またはVARRAY列を含む表またはオーバーフロー・セグメントのあるIOTを除く)が、そのオブジェクトの所有者のデフォルトの表領域にインポートされます。インポート・ユーティリティでは、エラーの原因となった表領域を特定できません。かわりに、ユーザー自身が表の作成後、IGNORE=yを指定して表のインポートを実行する必要があります。

その表領域が存在しない場合、またはデフォルトの表領域に対するユーザーの割当て制限が十分でない場合は、オブジェクトはデフォルトの表領域にインポートされません。

表領域を再編成する方法

ユーザーの割当て制限が十分な場合、そのユーザーの表はエクスポート元と同じ表領域にインポートされます。その表領域がもう存在しないか、またはユーザーの割当て制限が十分でない場合は、そのユーザーに対するデフォルトの表領域が適用されます。ただし、パーティション表、LOB列またはVARRAY列が含まれている表、特定の型の表およびオーバーフロー・セグメントのあるIOTには適用されません。この条件を利用して、表領域間でユーザーの表を移動できます。

たとえば、全データベース・エクスポートを実行した後、joeの表を表領域Aから表領域Bに移動する必要があるとします。この場合には、次の手順を実行します。

  1. joeUNLIMITED TABLESPACE権限を持っている場合、その権限を取り消します。表領域Aに対するjoeの割当て制限を0(ゼロ)に設定します。さらに、このような権限または割当て制限を含む可能性のあるすべてのロールを取り消します。

    ロールの取消しでは、カスケード効果はありません。したがって、joeによって他のロールを付与されたユーザーは影響を受けません。

  2. joeの表をエクスポートします。

  3. 表領域Aからjoeの表を削除します。

  4. joeに表領域Bの割当て制限を付与し、joeのデフォルトの表領域とします。

  5. joeの表をインポートします(デフォルトでは、joeの表は表領域Bにインポートされます)。

ファイングレイン・アクセス・コントロールに対するサポート

ファイングレイン・アクセス・コントロール・ポリシーを使用可能にして、表をエクスポートおよびインポートできます。その場合は、次のことに注意してください。

エクスポートおよびインポートでのインスタンス親和性の使用

インスタンス親和性を使用して、インポートおよびエクスポートするデータベース内のインスタンスにジョブを関連付けることができます。複数のリリースを組み合せて使用している場合は、互換性の問題に注意してください。

参照:

  • 『Oracle Database管理者ガイド』

  • 『Oracle Databaseリファレンス』

  • 『Oracle Databaseアップグレード・ガイド』

 

データベースの断片化を解消する方法

断片化とは、多数の小さな空き領域が散在しているデータベースの状態のことです。断片化しているデータベースを再編成すると、 空き領域をより大きな連続したブロックとして使用できるようになります。次のように全データベース・エクスポートおよびインポートを実行することで、データベースの断片化を解消できます。

  1. データベース全体のバックアップを取るために、全データベース・エクスポート(FULL=y)を実行します。

  2. すべてのユーザーがログオフしてから、Oracle Databaseを停止します。

  3. データベースを削除します。データベース削除の詳細は、ご使用のオペレーティング・システム固有のOracleマニュアルを参照してください。

  4. CREATE DATABASE文を使用して、データベースを再作成します。

  5. データベース全体をリストアするために、全データベース・インポート(FULL=y)を実行します。

    参照:

    データベース作成の詳細は、『Oracle Database管理者ガイド』を参照してください。 

エクスポートおよびインポートでの記憶域パラメータの使用

デフォルトでは、表は、元の表領域にインポートされます。

その表領域が存在しない場合、またはユーザーがその表領域に十分な割当て制限を持っていない場合、次の表の場合を除いて、そのユーザーにはデフォルトの表領域が割り当てられます。

ユーザーがデフォルトの表領域に対する十分な割当て制限を持っていない場合、そのユーザーの表はインポートされません。この制限の利用方法の詳細は、「表領域を再編成する方法」を参照してください。

OPTIMALパラメータ

ロールバック・セグメントのための記憶域パラメータOPTIMALは、エクスポートおよびインポート時には保持されません。

OID索引とLOB列の記憶域パラメータ

表は、その表の現行の記憶域パラメータを使用してエクスポートされます。オブジェクト表に関しては、OIDINDEXの作成時に、OIDINDEXの現行の記憶域パラメータおよび名前が設定されている場合は、それらを使用して作成されます。LOB型列、VARRAY型列またはOPAQUE型列が含まれている表に関しては、LOB型データ、VARRAY型データまたはOPAQUE型データは、それらの現行の記憶域パラメータを使用して作成されます。

エクスポートの前に、ユーザーが既存の表の記憶域パラメータを変更する場合もありますが、このような場合、表は変更された記憶域パラメータを使用してエクスポートされます。ただし、LOBデータの記憶域パラメータは、エクスポートの前には変更できません(たとえば、LOB列のチャンク・サイズ、LOB列がCACHEまたはNOCACHEか、など)。

LOBデータとLOB索引は、格納している表と同じ表領域に常駐することはできません。このデータの表領域は、インポート時に読取り/書込みが可能である必要があります。そうでない場合、表はインポートされません。

LOBデータまたはLOB索引がインポート時に存在しない表領域にある場合、またはユーザーがその表領域に対して必要な割当て制限を持っていない場合、表はインポートされません。表領域の句は、表に関する句も含めて複数の句を同時に指定できるため、インポート時にエラーが発生しても、インポート・ユーティリティではどの表領域句が原因のエラーかを特定できません。

記憶域パラメータの上書き

インポート・ユーティリティを使用してデータをインポートする前に、別の記憶域パラメータで、事前に大きな表を作成した方がよい場合があります。その場合は、コマンドラインまたはパラメータ・ファイルにIGNORE=yを指定します。

エクスポート・パラメータCOMPRESS

エクスポート時のデフォルトによって、初期エクステントにインポートされる表のすべてのデータを整理統合するように、記憶域パラメータが調整されます。初期エクステントのサイズを元のまま保つには、エクスポート時にエクステントが整理統合されないようにCOMPRESS=nを指定します。 詳細は、「COMPRESS」を参照してください。

エクスポート固有の情報

この項では、オリジナルのエクスポート・ユーティリティ固有の事項について説明します。この章の内容は、次のとおりです。

従来型パス・エクスポートおよびダイレクト・パス・エクスポート

エクスポートでは次の2つの方式で表データをエクスポートできます。

従来型パス・エクスポートでは、SQLのSELECT文によって、データベースの表からデータが抽出されます。データはディスクからバッファ・キャッシュに読み込まれ、行は評価バッファに転送されます。式の評価が終了すると、そのデータはエクスポートを実行するクライアントへ転送され、そこでエクスポート・ファイルに書き込まれます。

ダイレクト・パス・エクスポートでは、データがディスクからバッファ・キャッシュに読み込まれ、行がエクスポート・クライアントに直接転送されるため、従来型パス・エクスポートに比べて非常に高速です。評価バッファ(SQLコマンド処理レイヤー)はバイパスします。データは、すでにエクスポート・ユーティリティが要求する形式になっているため、不要なデータ変換をする必要がありません。データはエクスポート・クライアントに転送され、このクライアントでエクスポート・ファイルに書き込まれます。

ダイレクト・パス・エクスポートの起動

ダイレクト・パス・エクスポートを使用するには、コマンドラインまたはパラメータ・ファイルでDIRECT=yパラメータを指定します。デフォルトはDIRECT=nです。この場合、従来型パスで表データが抽出されます。この項の後半では、次の項目について説明します。

ダイレクト・パス・エクスポートのセキュリティに関する考慮点

Oracle仮想プライベート・データベース(VPD)およびOracle Label Securityは、ダイレクト・パス・エクスポート中には施行されません。

次のユーザーは、データベースからデータを抽出するために使用するエクスポート・モード、アプリケーションまたはユーティリティにかかわらず、VPDおよびOracle Label Securityを施行する必要はありません。

EXEMPT ACCESS POLICY権限を付与されたユーザーは、VPDおよびOracle Label Securityを施行する必要はありません。これは強力な権限であるため、慎重に管理する必要があります。この権限は、SELECTINSERTUPDATEおよびDELETEなどの従来のオブジェクト権限の施行には影響しません。ユーザーがEXEMPT ACCESS POLICY権限を付与されていても、これらの権限は施行されます。

参照:

 

ダイレクト・パス・エクスポートのパフォーマンスの考慮点

ダイレクト・パス・エクスポートの起動時に、RECORDLENGTHパラメータの値を大きくすると、パフォーマンスが向上する場合があります。実際のパフォーマンス向上の度合いは、次の要因によって異なります。

RECORDLENGTHの値は、次のように設定することをお薦めします。

ダイレクト・パス・エクスポートで作成された。エクスポート・ファイルのインポートには、従来型パス・エクスポートを使用して作成された、エクスポート・ファイルと同様のインポート時間が必要です。

ダイレクト・パス・エクスポートの制限事項

ダイレクト・パス・モードを使用する場合は、次の制限事項に注意する必要があります。

読取り専用データベースからのエクスポート

ソース・データベースからメタデータを抽出するには、エクスポートで順序付けする句(ソート操作)を含む問合せを使用します。これらの問合せが成功するには、エクスポートを実行しているユーザーがソート・セグメントを割り当てることができる必要があります。これらのソート・セグメントを読取り専用データベースに割り当てるには、ユーザーの一時表領域が、ローカル管理一時表領域を示すように設定する必要があります。

参照:

この環境の設定の詳細は、『Oracle Data Guard概要および管理』を参照してください。 

データベース・オブジェクトのエクスポートに関する考慮点

次の項からは、特定のデータベース・オブジェクトをエクスポートするときに考慮すべき点について説明します。

順序のエクスポート

エクスポート中にトランザクションが順序番号にアクセスすると、順序番号はスキップされる可能性があります。順序番号がスキップされないようにするには、エクスポート中に順序番号にアクセスしないようにします。

順序番号がスキップされる可能性があるのは、キャッシュされている順序番号が使用中の場合のみです。順序番号のキャッシュが割り当てられている場合は、現行のデータベースでこれらの順序番号を使用できます。エクスポートされる値は、その次(キャッシュされている値の後)の順序番号です。キャッシュされても使用されていない順序番号は、順序のインポート時に失われます。

LONGデータ型およびLOBデータ型のエクスポート

エクスポート時、LONGデータ型は、セクション単位でフェッチされます。ただし、各行のすべてのデータ(LONGデータ型を含む)を保持できるだけのメモリーが使用可能である必要があります。

LONG列の長さは、最大2GBです。

LOB列のすべてのデータを、同時にメモリーに置いておく必要はありません。LOBデータのロードおよびアンロードはセクション単位で行われます。


注意:

既存のLONG列をLOB列に変換することをお薦めします。LOB列は、LONG列に比べ、より少ない制限事項が適用されます。また、LOB機能はすべてのリリースで拡張されていますが、LONG機能はいくつかのリリースでは拡張されていません。 


外部関数ライブラリのエクスポート

外部関数ライブラリの内容は、エクスポート・ファイルにはエクスポートされません。全データベース・モード・エクスポートおよびユーザー・モード・エクスポートの場合、ライブラリの仕様(名前、位置)のみがエクスポートされます。データベースを新しい場所に移動する場合、ライブラリの実行可能ファイルを移動し、ライブラリの仕様を更新する必要があります。

オフライン・ローカル管理表領域のエクスポート

エクスポート中のデータにオフライン・ローカル管理表領域が含まれている場合、表領域の定義を完全にエクスポートできず、エラー・メッセージが表示されます。データはインポートできますが、インポートの前に、まずオフライン・ローカル管理表領域を作成し、不完全な表領域を参照するDDLコマンドでエラーが発生しないようにする必要があります。

ディレクトリ別名のエクスポート

ディレクトリ別名の定義は、全データベース・モード・エクスポートの場合のみエクスポートされます。データベースを新しい場所に移動する場合、データベース管理者は、その新しい場所に対応するようにディレクトリ別名を更新する必要があります。

ディレクトリ別名は、ユーザー・モード・エクスポートや表モード・エクスポートの場合はエクスポートされません。したがって、ディレクトリ別名を使用する前に、ターゲット・システムにディレクトリ別名が作成されていることを確認する必要があります。

BFILE列および属性のエクスポート

エクスポート・ファイルには、BFILE列またはその属性から参照される外部ファイルの内容は格納されません。ファイルの名前およびディレクトリ別名のみが、エクスポート時にコピーされ、インポート時にリストアされます。旧ディレクトリからではファイルにアクセスできない場所にデータベースを移動する場合、DBAは、指定されたファイルが格納されているディレクトリを、アクセス可能な新しい場所へ移動する必要があります。

外部表のエクスポート

外部表の内容は、エクスポート・ファイルにはエクスポートされません。全データベース・モード・エクスポートおよびユーザー・モード・エクスポートの場合、表の仕様(名前、位置)のみがエクスポートされます。データベースを新しい場所に移動する場合、外部データを手動で移動して表の仕様を更新する必要があります。

オブジェクト型定義のエクスポート

どのエクスポート・モードでも、エクスポートされる表で使用されているオブジェクト型定義に関する情報はエクスポートされます。オブジェクト名、オブジェクト識別子、オブジェクト構成などの情報は、ターゲット・システムでのオブジェクト型とエクスポート・ファイルに格納されているオブジェクト・インスタンスに整合性があることを検証するために必要となります。これによって、インポート時に、表に必要なオブジェクト型が同一のオブジェクト識別子で作成されます。

ただし、表モード、ユーザー・モードおよび表領域モードで、オブジェクト型に対する実行権がないユーザーがエクスポートを実行している場合は、表に必要なすべてのオブジェクト型定義が、エクスポート・ファイルに保持されるとはかぎりません。この場合、同じオブジェクト型の識別子および同じオブジェクトの構成を持つ型の存在を検証するために必要な情報のみが、インポートのターゲット・システムに書き込まれます。

DBAに協力を求めて型定義を作成するか、DBAが実行した全データベース・モードまたはユーザー・モードのエクスポートから型定義をインポートすることによって、ターゲット・システムに適切な型定義が確実に存在するようにしてください。

すべてのオブジェクト型定義を保持するには、定期的に全データベース・エクスポートを実行することが重要です。また、別のユーザーのスキーマに属するオブジェクト型定義を使用する場合は、DBAが、適切なユーザー・グループのユーザー・モードでエクスポートを実行する必要があります。たとえば、ユーザーscottが所有するtable1blakeのオブジェクト型であるtype1が存在する場合、この表に必要な型定義を保持するには、DBAがユーザー・モードでblakeおよびscottの両方を指定してエクスポートを実行する必要があります。

ネストした表のエクスポート

ネストした表については、外部表がエクスポートされる場合は、必ず内部表のデータもエクスポートされます。内部のネストした表を指定することはできますが、それらを個別にエクスポートすることはできません。

アドバンスト・キュー(AQ)表のエクスポート

キューは表に実装されています。キューのエクスポートおよびインポートは、その基礎となるキュー表および関連するディクショナリ表のエクスポートおよびインポートになります。キューのエクスポートおよびインポートは、キュー表単位でのみ実行できます。

キュー表をエクスポートすると、表定義に関する情報とキュー・データの両方がエクスポートされます。キュー表データと表定義の両方がエクスポートされるため、キュー表のインポート時に、インポートを実行したユーザーがアプリケーション・レベルでのデータの整合性をメンテナンスすることになります。

参照:

『Oracle Streamsアドバンスト・キューイング・ユーザーズ・ガイド』 

シノニムのエクスポート

シノニムおよびもう1つのオブジェクトとして使用される名前を参照する、コンパイル済のオブジェクトをエクスポートする場合は、注意が必要です。これらのオブジェクトをエクスポートおよびインポートすると、強制的に再コンパイルされ、オブジェクトの定義が変更される可能性があります。

次の例では、この問題について説明します。

CREATE PUBLIC SYNONYM emp FOR scott.emp;

CONNECT blake/paper;
CREATE TRIGGER t_emp BEFORE INSERT ON emp BEGIN NULL; END;
CREATE VIEW emp AS SELECT * FROM dual;

前述の例では、データベースがエクスポートされた場合、トリガーのempに対する参照では、scottの表ではなくblakeのビューが参照されます。このため、インポート時にt_empトリガーを再確立しようとすると、エラーになります。

Javaシノニムに関連して発生する可能性があるエクスポート・エラー

対応するDBMS_JAVAパッケージがないとき、またはJavaがロードされていないか、不適切にロードされているときに、エクスポート操作でDBMS_JAVAという名前のシノニムをエクスポートしようとした場合、エラーが発生して、エクスポートは終了します。この場合に生成されるエラー・メッセージにはEXP-00008、ORA-00904、ORA-29516などがあります。

Javaが使用可能な場合、エクスポート・ユーティリティを再実行する前に、DBMS_JAVAシノニムとDBMS_JAVAパッケージの両方が作成済であり、有効であることを確認します。

Javaが使用可能でない場合、エクスポート・ユーティリティを再実行する前にJava関連のオブジェクトを削除します。

インポート固有の情報

この項では、オリジナルのインポート・ユーティリティ固有の事項について説明します。この章の内容は、次のとおりです。

インポート操作中のエラー処理

この項では、データベース・オブジェクトのインポート時に発生する可能性のあるエラーについて説明します。

行エラー

整合性制約違反またはデータが無効なために行のインポートが拒否されると、警告メッセージが表示されますが、その表の残りの行は引き続き処理されます。「tablespace full」というエラーなど、後続のすべての行に影響するエラーもあります。このようなエラーの場合には、現行の表の処理は停止され、次の表にスキップします。

RESUMABLE=yパラメータが指定されている場合、「tablespace full」エラーによって、インポートが一時停止することもあります。

整合性制約違反

次の整合性制約に違反している行があると行エラーが発生します。

無効なデータ

データベース内の表の列定義が、エクスポート・ファイル内の列定義と異なるときにも行エラーが発生します。無効データ・エラーは、新しい表の列より長いデータの挿入、無効なデータ型またはその他のINSERTエラーによって発生します。

データベース・オブジェクトのインポートでのエラー

データベース・オブジェクトをインポートするときにエラーが発生する理由にはいろいろありますが、この項ではその理由について説明します。これらのエラーが発生すると、現行のデータベース・オブジェクトのインポートは中断されます。その後、インポート・ユーティリティでは、エクスポート・ファイルの次のデータベース・オブジェクトが継続して処理されます。

既存オブジェクト

インポートするオブジェクトがデータベース中にすでに存在していると、オブジェクト作成エラーが発生します。これ以降の処理は、IGNOREパラメータに指定されている値によって異なります。

IGNORE=n(デフォルト)が指定されている場合、エラーが報告され、次のデータベース・オブジェクトが継続して処理されます。現行のデータベース・オブジェクトは置き換えられません。オブジェクトが表の場合、エクスポート・ファイル内の行はインポートされません。

IGNORE=yが指定されている場合、オブジェクト作成エラーは報告されません。データベース・オブジェクトは置き換えられません。オブジェクトが表の場合、行がインポートされます。無視できるエラーはオブジェクト作成エラーのみです。他のすべてのエラー(オペレーティング・システムのエラー、データベースのエラー、SQLのエラーなど)は報告されます。また、処理が停止することもあります。


注意:

IGNORE=yを指定した場合、表の1つ以上の列に対して一意制約を指定しないかぎり、その表に対して重複した行が挿入されます。たとえば、誤って2回インポートを実行した場合などがこれに該当します。 


順序

インポート処理で、順序番号をエクスポート・ファイルの値に設定しなおす必要がある場合は、順序を削除してください。インポートでは、既存の順序の削除と再作成は行われません。そのため、順序は、インポートの前に削除されない場合、エクスポート・ファイルに保存されている値には設定されません。順序がすでに存在している場合、エクスポート・ファイルのCREATE SEQUENCE文は失敗し、その順序はインポートされません。

リソース・エラー

リソースの制限によって、オブジェクトがインポートされないことがあります。たとえば、表のインポート中に、内部的な問題またはメモリーなどのリソース不足によって、リソース・エラーが発生する場合があります。

行のインポート中にリソース・エラーが発生すると、現行の表の処理が中止され、次の表にスキップします。COMMIT=yを指定している場合、現行の表のインポート済の部分がコミットされます。指定していない場合は、現行の表の処理がロールバックされた後で、インポートが続行されます。「COMMIT」を参照してください。

ドメイン索引メタデータ

ドメイン索引は、無名PL/SQLブロックでインポートされる、アプリケーション固有のメタデータと関連付けることができます。これらのPL/SQLブロックは、インポート時にCREATE INDEX文より優先して実行されます。PL/SQLブロックにエラーが発生した場合、メタデータが索引の一部分とみなされるため、関連付けられた索引は作成されません。

索引作成およびメンテナンスの制御

この項では、索引作成およびメンテナンスに関連するインポートの動作について説明します。

索引作成の延期

インポート・ユーティリティには、索引の作成およびメンテナンスの実行を、インポートが完了し、エクスポート・データの挿入が終了するまで延期させる機能が用意されています。インポート完了後に索引の作成、再作成またはメンテナンスを実行すると、通常、その処理時間は、インポートで各行が挿入されるたびにメンテナンスを実行するより短くなります。

索引作成には時間がかかるため、他のすべてのオブジェクトのインポートが完了してから行った方が効率的です。INDEXES=nを指定すると、インポートの終了後に索引を作成できます。(デフォルトはINDEXES=yです。)その後、INDEXFILEパラメータを使用してインポートを実行し、SQLスクリプト内の未作成の索引定義を格納できます。索引作成文は、このように指定しない場合、インポート・ユーティリティから発行されますが、このように指定した場合、指定されたファイルに書き込まれます。

インポート完了後、索引を作成する必要があります。索引を作成するには、通常、CONNECT文にパスワードを指定した後、INDEXFILEで指定したファイルの内容をSQLスクリプトとして使用します。

索引作成およびメンテナンスの制御

SKIP_UNUSABLE_INDEXES=yを指定すると、インポート前に索引使用禁止に設定されていた索引のメンテナンスはすべて延期されます。他の索引(事前に索引使用禁止に設定されていない索引)に対しては、行の挿入時にメンテナンス処理が行われます。これにより、既存の表をインポートする間、索引の更新が保存されます。

索引のメンテナンスが延期されると、その索引で設定されている既存の一意整合性制約に対して違反が発生することがあります。表に一意整合性制約が存在しても、INDEXES=nを指定してインポートした表内の重複キーは回避できません。このため、その索引は、重複キーが削除されて索引が再構築されるまでは、UNUSABLE状態となります。

索引更新延期の例

パーティションp1およびp2を持つパーティション表tが、インポート・ターゲット・システムに存在するとします。また、パーティションp1にローカル索引p1_ind、パーティションp2にローカル索引p2_indが存在するとします。このパーティションp1には既存の表tのデータが入っており、そのデータ量は、エクスポート・ファイル(expdat.dmp)を使用して挿入されるデータの量よりはるかに多いとします。一方、パーティションp2はその逆であるとします。

表データ挿入時にp1_indの索引メンテナンスを実行すると、パーティション索引の再作成時に実行するより、処理効率が高くなります。p2_indについては、この逆になります。

また、p2_indについては、インポート中のローカル索引のメンテナンスを延期できます。延期するには、次の手順を実行します。

  1. インポート前に、次のSQL文を発行します。

    ALTER TABLE t MODIFY PARTITION p2 UNUSABLE LOCAL INDEXES;
    
    
  2. 次のインポート・コマンドを発行します。

    imp scott/tiger FILE=expdat.dmp TABLES = (t:p1, t:p2) IGNORE=y
    SKIP_UNUSABLE_INDEXES=y
    
    

    この例では、インポートの実行前にALTER SESSION SET SKIP_UNUSABLE_INDEXES=y文を実行します。

  3. インポート後に次のSQL文を発行します。

    ALTER TABLE t MODIFY PARTITION p2 REBUILD UNUSABLE LOCAL INDEXES;
    
    

この例では、p1のローカル索引p1_indは、インポート中、表データがパーティションp1に挿入されるときにメンテナンスされます。一方、p2のローカル索引p2_indは、インポート後の索引再作成時にメンテナンスされます。

統計情報のインポート

統計情報がエクスポート時に必要で、表にアナライザ統計が利用できる場合、表の統計情報の再計算に使用されるANALYZE文が、エクスポートによってダンプ・ファイルに含まれます。ほとんどの場合、表、索引および列に対する計算済オプティマイザ統計情報も、ダンプ・ファイルにエクスポートされます。エクスポート・パラメータの詳細は、「STATISTICS」を、インポート・パラメータの詳細は、「STATISTICS」を参照してください。

ANALYZE文の実行には時間がかかるため、通常のインポートでは、エクスポートによって保存されるANALYZE文を計算するのではなく、表(およびその索引や列)の計算済オプティマイザ統計情報を使用してください。デフォルトでは、エクスポート・ダンプ・ファイルにある計算済統計情報が使用されます。

エクスポート・ユーティリティによって、計算済統計情報に問題ありというフラグが付けられる場合もあります。次の状況では、計算済統計情報ではなく、問題のない統計情報のみをインポートする必要がある場合があります。

場合によっては、インポート時に、計算済統計情報ではなく、常にANALYZE文を使用する必要があります。たとえば、分散データベースから収集した統計情報は、そのデータが圧縮形式でインポートされると、適切でなくなる場合があります。このような場合は、インポート時にSTATISTICS=RECALCULATEを指定して、統計情報を再計算する必要があります。

インポート時に統計情報を確定しない場合は、STATISTICS=NONEを指定する必要があります。

インポート操作のチューニングに関する考慮点

この項では、インポート操作のパフォーマンスを向上させる方法を説明します。パフォーマンスを向上させる方法は、次のとおりです。

システム・レベル・オプションの変更

システム・レベル・オプションに関して次の点を考慮すると、インポート操作のパフォーマンスの向上につながる場合があります。

初期化パラメータの変更

初期化パラメータ・ファイルの設定に関して次の点を考慮すると、インポート操作のパフォーマンスの向上につながる場合があります。

インポート・オプションの変更

インポート・オプションの使用について次の点を考慮すると、パフォーマンスの向上につながる場合があります。「インポート・パラメータ」に示す使用可能なオプションの各説明も参照してください。

大量のLOBデータの処理

大量のLOBデータをインポートする場合は、次のことに注意してください。

索引を削除すると、総インポート時間が大幅に削減されます。LOBロケータには、インポート時に明示的に削除または無視できない主キーが存在するため、LOBデータのインポート時には特別な注意が必要です。

データのロードを完了するために使用できる十分な領域が、大きな連続したチャンクで存在することを確認してください。

大量のLONGデータの処理

LONG列を持つ表をインポートすると、I/Oおよびディスクの使用率が高くなり、その結果、インポート操作のパフォーマンスが低くなります。大量のLONGデータのインポート時にパフォーマンスを向上させる特定のパラメータは存在しませんが、この項で説明したチューニングに関する一般的な考慮点に注意することによって、パフォーマンス全体が向上する場合があります。

参照:

「LONG列のインポート」 

データベース・オブジェクトのインポートに関する考慮点

次の項では、特定のデータベース・オブジェクトをインポートする場合の、制限事項および考慮点について説明します。

オブジェクト識別子のインポート

Oracle Databaseでは、オブジェクト型、オブジェクト表およびオブジェクト表内の行を一意に識別できるように、オブジェクト識別子が割り当てられます。オブジェクト識別子はインポート・ユーティリティによって保持されます。

型を参照している表のインポート時に、その名前の型がすでにデータベースに存在している場合は、その既存の型が、実際にその表で使用されているかどうか(実際は異なる型で、単に同じ名前であるだけではないか)を確認します。

この確認のために、型の一意の識別子(TOID)とエクスポート・ファイルに格納された識別子が比較されます。これらの識別子が一致する場合は、型の一意のハッシュ・コードとエクスポート・ファイルに格納されたハッシュ・コードが比較されます。TOIDまたはハッシュ・コードが一致しない場合、その表の行はインポートされません。

この妥当性チェックをしてはいけない型もあります(たとえば、その型がカートリッジのインストールによって作成された場合)。パラメータTOID_NOVALIDATEを使用して、TOIDおよびハッシュ・コードと比較しない型を指定できます。詳細は、「TOID_NOVALIDATE」を参照してください。


注意:

型比較は、不正なデータを発生させないための非常に重要な機能であるため、TOID_NOVALIDATEの使用には、特に注意してください。この機能を使用禁止にする場合は、データ型の妥当性チェックとその処理について十分な知識を持つユーザーが行ってください。 


次の基準によって、オブジェクト型、オブジェクト表およびオブジェクト表の行の処理方法が決まります。

インポート・ユーティリティにオブジェクト型とオブジェクト表に関するオブジェクト識別子が保持されるため、FROMUSERパラメータおよびTOUSERパラメータを使用して、あるユーザー・スキーマから別のユーザー・スキーマにオブジェクトをインポートする場合は、次のことを考慮してください。

既存のオブジェクト表およびオブジェクト型の含まれている表のインポート

表領域の使用方法または表の記憶域パラメータを変更するため、インポートの前に表を作成することがよくあります。表を作成する場合、以前(記憶域パラメータ以外に対して)使用していた定義と同じ定義で作成するか、互換性のある形式で作成する必要があります。オブジェクト表や、オブジェクト型の列を含む表の場合は、形式の互換性がさらに制限されます。

オブジェクト表およびオブジェクト列を含む表の場合、表が参照する各オブジェクトは、その名前、構造およびバージョン情報をエクスポート・ファイルに書き出されます。エクスポート・ユーティリティでは、必要に応じて、異なるスキーマのオブジェクト型の情報も含まれます。

インポート・ユーティリティは、表データをインポートする前に、表に必要な各オブジェクト型の存在を確認します。この確認機能には、オブジェクト型の名前の確認、インポート・システムのオブジェクト型の構造およびバージョンと、エクスポート・ファイルに書き込まれた情報との比較が含まれます。

オブジェクト型名がインポート・システムで検出され、構造またはバージョンがエクスポート・ファイルと一致しない場合、エラー・メッセージが生成され、表データはインポートされません。

インポート・パラメータTOID_NOVALIDATEを使用して、特定のオブジェクトのオブジェクト型の構造およびバージョンの確認機能を使用禁止にできます。

ネストした表のインポート

内部のネストした表は外部表とは別にエクスポートされます。したがって、内部のネストした表が正しくインポートされない場合、次のような状況が予想されます。

常にログ・ファイルを調べて、外部表および内部表にエラーがないかどうかを確認する必要があります。データに一貫性を持たせるためには、表データの変更や削除が必要になることがあります。

内部にネストした表は、外部表とは別にインポートされるので、インポート中に、このネストした表のデータにアクセスしようとしても失敗することがあります。たとえば、内部表の行がインポートされる前に、外部表の行にアクセスすると、ユーザーには不完全な行が返されます。

REFデータのインポート

REF列および属性には、参照されている型のインスタンスを示すROWIDが隠されていることがあります。インポート・ユーティリティでは、ターゲット・データベースに対するROWIDは、自動的には再設定されません。ROWIDを適切な値に再設定するには、次の文を実行します。

ANALYZE TABLE [schema.]table VALIDATE REF UPDATE;

参照:

ANALYZE TABLE文の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。 

BFILE列およびディレクトリ別名のインポート

BFILE列および属性で参照されているデータは、ソース・データベースからターゲット・データベースへはコピーされません。BFILE列で参照されているファイルの名前とディレクトリ別名が伝達されるのみです。BFILE列および属性で参照されている実際のファイルは、DBAまたはユーザーが移動してください。

BFILE列を含む表データをインポートする場合、BFILEロケータは、ディレクトリ別名およびエクスポート時のファイル名でインポートされます。インポート・ユーティリティでは、そのディレクトリ別名またはファイルが存在するかどうかの確認は行われません。ディレクトリ別名またはファイルが存在しない場合、ユーザーがBFILEデータにアクセスするとエラーが発生します。

ディレクトリ別名に関しては、エクスポート・システムで使用しているオペレーティング・システムのディレクトリ構文がインポート・システムで有効でない場合でも、インポート時にエラーは通知されません。ユーザーがインポート後に、そのファイルのデータにアクセスするとエラーが返されます。ディレクトリ別名がインポート・システムで有効かどうかは、DBAまたはユーザーが確認してください。

外部関数ライブラリのインポート

インポート・ユーティリティでは、外部関数ライブラリの参照先が正しいかどうかの確認は行われません。エクスポート・ファイル上のライブラリの指定で使用されているディレクトリやファイル名の形式がインポート・システムで無効であっても、インポート時にエラーは通知されません。この場合、インポート後にそのファンクションを呼び出そうとすると、エラーが返されます。

DBAまたはユーザーが手動でライブラリを移動し、ライブラリの指定がインポート・システムで有効になるようにしてください。

ストアド・プロシージャ、ファンクションおよびパッケージのインポート

ローカルのストアド・プロシージャ、ストアド・ファンクションまたはパッケージがインポートされるときのインポート・ユーティリティの動作は、COMPILEパラメータがyまたはnに設定されているかどうかによって異なります。

ローカルのストアド・プロシージャ、ストアド・ファンクションまたはパッケージがインポートされ、COMPILE=yが指定されている場合は、プロシージャ、ファンクション、パッケージはインポート時に再コンパイルされ、元のタイムスタンプ仕様が保持されます。コンパイルが成功すると、リモート・プロシージャによってアクセスしてもエラーは発生しません。

COMPILE=nが指定されている場合も、プロシージャ、ストアド・ファンクションまたはパッケージはインポートされます。ただし、元のタイムスタンプは失われます。次に、プロシージャ、ファンクションまたはパッケージを使用するときに、コンパイルが実行されます。

参照:

「COMPILE」 

Javaオブジェクトのインポート

Javaオブジェクトを任意のスキーマにインポートしても、リゾルバはインポート・ユーティリティによって変更されません(リゾルバとは、Javaのフルネームの解決に使用されるスキーマのリストです)。インポートの終了後、明示的または暗黙的に再検証しないかぎり、すべてのユーザー・クラスが無効な状態のままになります。暗黙的な再検証は、クラスが最初に参照されるときに実行されます。明示的な再検証は、SQLのALTER JAVA CLASS...RESOLVE文を使用すると実行されます。いずれの方法でもクラスは正常に解決され、有効になります。

外部表のインポート

インポート・ユーティリティでは、外部表の参照先が正しいかどうかの確認は行われません。エクスポート・ファイルの表の指定で使用されているディレクトリやファイル名の形式がインポート・システムで無効であっても、インポート時にエラーは通知されません。この場合、インポート後にそのファンクションを呼び出そうとすると、エラーが返されます。

DBAまたはユーザーが手動で表を移動し、表の指定がインポート・システムで有効になるようにしてください。

AQ表のインポート

キュー表をインポートすると、基礎となっているキューや関連するディクショナリ情報もインポートされます。キューのインポートは、キュー表単位のレベルでのみ実行できます。キュー表のインポートでは、エクスポートの表処理プロシージャの前後に、キュー・ディクショナリがメンテナンスされます。

参照:

『Oracle Streamsアドバンスト・キューイング・ユーザーズ・ガイド』 

LONG列のインポート

LONG列の長さは、最大2GBです。インポートおよびエクスポート時には、LONG列は各行の残りのデータとともにメモリーに収まるサイズである必要があります。ただし、LONGデータはセクション単位でロードされるため、LONG列を格納するメモリーが連続している必要はありません。

インポート・ユーティリティを使用して、LONG列をCLOB列に変換できます。このためには、まず、新しいCLOB列を指定する表を作成します。インポートを実行すると、LONGデータはCLOB形式に変換されます。同じ方法で、LONG RAW列をBLOB列に変換できます。


注意:

既存のLONG列をLOB列に変換することをお薦めします。LOB列は、LONG列に比べ、より少ない制限事項が適用されます。また、LOB機能はすべてのリリースで拡張されていますが、LONG機能は、いくつかのリリースでは拡張されていません。 


トリガーが存在する場合のLOB列のインポート

Oracle Database 10g では、トリガーが正常に動作し、LOBのロード中に高いパフォーマンスが保たれるようにLOB処理が改善されています。インポート・ユーティリティでは、エクスポート時に空であるすべてのLOBがインポート後に自動的にNULLに変更されるように改善されています。

LOBがNULLではなく、空である必要があるアプリケーションを使用している場合は、インポート後に、各LOB列に対してSQL UPDATE文を発行できます。LOB列型がBLOBCLOBかによって、構文は次のいずれかになります。

UPDATE <tablename> SET <lob column> = EMPTY_BLOB() WHERE <lob column> = IS NULL;  
UPDATE <tablename> SET <lob column> = EMPTY_CLOB() WHERE <lob column> = IS NULL; 

インポートの実行後、NULLのLOB列と空のLOB列を区別する方法はありません。そのため、この情報がデータの整合性上重要である場合は、インポートの実行前にNULLのLOB列および空のLOB列を確認してください。

ビューのインポート

ビューは、依存順序でエクスポートされます。状況によっては、データベースから順序を取得するのではなく、エクスポートで順序付けをする必要があります。この場合、常に正しい順序を複製できるとはかぎりません。順序が正しくない場合、ビューのインポート時にコンパイル上の警告が発行され、そのビューに関する列コメントはインポートされません。

特に、viewaでストアド・プロシージャprocbが使用され、procbでビューviewcが使用されている場合、エクスポート・ユーティリティでは、ビューviewaviewcの正しい順序付けはできません。viewaviewcより先にエクスポートされ、procbがインポート・システムにすでに存在する場合は、viewaのインポート時にコンパイル上の警告が出されます。

ビューに関する権限は、ビューにコンパイル・エラーがあってもインポートされます。ビューの作成時に、そのビューの基礎になっているオブジェクト(たとえば、表、プロシージャ、他のビューなど)が存在していない場合、ビューにコンパイル・エラーが発生する場合があります。実表が存在しない場合、実表に対する権限を付与したユーザー自身が、その実表に対してGRANT OPTION付きの適正な権限を持っているかどうかを、サーバーでは検証できません。権限を付与したユーザーが適正な権限を持っていない場合、インポートされなかった表の作成後にその表にアクセスしようとすると、エラーが発生します。

他のスキーマの表を参照しているビューをインポートする場合は、インポートを実行するユーザーに、SELECT ANY TABLE権限が必要です。この権限がない場合、ビューは、コンパイルされていない状態でインポートされます。ロールに権限を付与するのみでは不十分です。ビューのコンパイルには、インポートするユーザーに直接権限を付与する必要があります。

パーティション表のインポート

エクスポートしたパーティション表と同じパーティション名またはサブパーティション名を使用してパーティション表を作成するために、SYS_Pnnn形式の名前もインポートされます。同じ名前のパーティション表がすでに存在している場合、これ以降の処理はIGNOREパラメータに指定されている値によって異なります。

SKIP_UNUSABLE_INDEXES=yが指定されていないかぎり、インポート時に非パーティション索引またはパーティション索引が(索引使用禁止に設定されているか、またはその他の不適合が理由で)メンテナンスできない場合は、エクスポート・データはターゲット表にインポートできません。

エクスポート・ユーティリティおよびインポート・ユーティリティを使用したデータベース移行のパーティション化

エクスポート・ユーティリティおよびインポート・ユーティリティを使用して大規模データベースを移行する場合、移行を複数のエクスポート・ジョブおよびインポート・ジョブにパーティション化するとより効率的です。移行をパーティション化する場合は、次のメリットおよびデメリットに注意してください。

移行をパーティション化する場合のメリット

移行をパーティション化すると、次のメリットがあります。

移行をパーティション化する場合のデメリット

移行をパーティション化すると、次のデメリットがあります。

エクスポート・ユーティリティおよびインポート・ユーティリティを使用したデータベース移行のパーティション化方法

データベースの移行をパーティション化方法で実行するには、次の手順に従います。

  1. データベースのすべての最上位メタデータに、次のコマンドを発行します。

    1. exp FILE=full FULL=y CONSTRAINTS=n TRIGGERS=n ROWS=n INDEXES=n

    2. imp FILE=full FULL=y

  2. データベースの各スキーマnに、次のコマンドを発行します。

    1. exp OWNER=scheman FILE=scheman

    2. imp FILE=scheman FROMUSER=scheman TOUSER=scheman IGNORE=y

すべてのエクスポートはパラレルで実行できます。full.dmpのインポートが完了すると、残りのインポートもパラレルで実行できます。

リリースおよびバージョンが異なるエクスポート・ユーティリティの使用方法

この項では、リリースが異なるエクスポート・ユーティリティおよびOracle Databaseの使用に関連する互換性の問題について説明します。

リリースが異なるOracle Database間でデータを移動させる場合は、常に、次の基本的な規則が適用されます。

リリースおよびバージョンが異なるエクスポート・ユーティリティおよびインポート・ユーティリティの使用上の制限

異なるリリースのエクスポート・ユーティリティおよびインポート・ユーティリティを使用する場合、次の制限が適用されます。

リリースが異なるエクスポート・ユーティリティおよびインポート・ユーティリティの使用例

表20-7に、異なるリリースのOracle Database間でデータを移動させる場合に使用するエクスポート・ユーティリティおよびインポート・ユーティリティのリリースの例を示します。

表20-7    リリースが異なるエクスポート・ユーティリティおよびインポート・ユーティリティの使用 
エクスポート元>インポート先  使用するエクスポート・ユーティリティのリリース  使用するインポート・ユーティリティのリリース 

8.1.6 -> 8.1.6 

8.1.6 

8.1.6 

8.1.5 -> 8.0.6 

8.0.6 

8.0.6 

8.1.7 -> 8.1.6 

8.1.6 

8.1.6 

9.0.1 -> 8.1.6 

8.1.6 

8.1.6 

9.0.1 -> 9.0.2 

9.0.1 

9.0.2 

9.0.2 -> 10.1.0 

9.0.2 

10.1.0 

10.1.0 -> 9.0.2 

9.0.2 

9.0.2 

Oracle9i データベースからのOracle8のエクスポート・ファイルの作成

Oracle9i データベースからOracle8のエクスポート・ファイルを作成する場合、特別な処理は必要ありません。ただし、Oracle9i データベースでOracle8のエクスポート・ユーティリティを使用した場合、次の機能はサポートされません。


戻る 次へ
Oracle
Copyright © 2007 Oracle Corporation.

All Rights Reserved.
目次
目次
索引
索引