26 オリジナルのエクスポート

Oracle Databaseのデータをオペレーティング・システムのファイルにバイナリ形式で書き込むために、オリジナルのエクスポート・ユーティリティ(exp)が使用されました。

このファイルはデータベースの外部に格納されるため、オリジナルのインポート・ユーティリティを使用して、別のOracle Databaseに読み込むことができます。

ノート:

オリジナルのエクスポートは、Oracle Database 11gからは原則としてサポートされなくなりました。Oracle Database 11g以降のリリースでサポートされているオリジナルのエクスポートの使用方法は、XMLTypeデータのOracle Database 10gリリース2 (10.2)以前への下位移行のみです。新しいOracle Data Pumpエクスポートおよびインポート・ユーティリティを使用することをお薦めします。このガイドラインの唯一の例外は、元のエクスポートおよびインポートが必要な次の状況です。

  • オリジナルのエクスポート・ユーティリティ(exp)を使用して作成されたファイルをインポートする必要がある。
  • オリジナルのインポート・ユーティリティ(imp)を使用してインポートされるファイルをエクスポートする必要がある。このような例として考えられるのは、Oracle Database 10gからデータをエクスポートし、それより前のデータベース・リリースにインポートする場合です。

26.1 エクスポート・ユーティリティとは

オリジナルのエクスポート・ユーティリティ(exp)は、ハードウェアやソフトウェアの構成に関係なく、Oracle Databaseインスタンス間でデータ・オブジェクトを転送するための簡単な手段を提供します。

ノート:

オリジナルのエクスポートは、Oracle Database 11gからは原則としてサポートされなくなりました。Oracle Database 11g以降のリリースでサポートされているオリジナルのエクスポートの使用方法は、XMLTypeデータのOracle Database 10gリリース2 (10.2)以前への下位移行のみです。新しいOracle Data Pumpエクスポートおよびインポート・ユーティリティを使用することをお薦めします。このガイドラインの唯一の例外は、元のエクスポートおよびインポートが必要な次の状況です。

  • オリジナルのエクスポート・ユーティリティ(exp)を使用して作成されたファイルをインポートする必要がある。
  • オリジナルのインポート・ユーティリティ(imp)を使用してインポートされるファイルをエクスポートする必要がある。このような例として考えられるのは、Oracle Database 10gからデータをエクスポートし、それより前のデータベース・リリースにインポートする場合です。

Oracle Databaseインスタンスに対してエクスポート・ユーティリティを実行すると、オブジェクト(表など)が抽出された後で、それに関連するオブジェクト(索引、コメント、権限など)があれば、それらのオブジェクトが抽出されます。

エクスポート・ファイルは、通常はディスクまたはテープに格納されるOracleバイナリ形式のダンプ・ファイルです。ダンプ・ファイルは、FTPを使用して転送できます。また、物理的に(テープなどで)別のサイトに転送することもできます。その後、このファイルをインポート・ユーティリティで使用すると、ネットワーク接続されていないデータベース間でデータを転送できます。このデータ転送は、データベースが異なるハードウェア構成およびソフトウェア構成のプラットフォームに存在していても可能です。このファイルは、通常のバックアップ手順とともに、追加のバックアップとして使用することもできます。

オリジナルのエクスポート・ダンプ・ファイルは、オリジナルのOracleインポート・ユーティリティでのみ読み取れます。ダンプ・ファイルの作成に使用したエクスポート・ユーティリティのバージョンよりも古いバージョンのインポート・ユーティリティは使用できません。

実際にインポートを実行せずに、エクスポート・ファイルの内容を表示することもできます。内容を表示するには、インポートのSHOWパラメータを使用します。ASCII固定形式ファイルまたはデリミタ付きファイルからデータをロードする場合は、SQL*Loaderユーティリティを使用します。

関連トピック

26.2 エクスポート・ユーティリティを使用する前に

オリジナルのエクスポート(exp)ユーティリティを使用する前に、準備チェックリストを確認し、サーバーやOracle Databaseのインスタンスで必要に応じたタスクの実行を完了しておきます。

26.2.1 エクスポート・ユーティリティを使用するための準備チェックリスト

オリジナルのエクスポート・ユーティリティ(exp)の使用開始前に、次のチェックを実行します。

問題の発生を防止するために、次の各条件が満たされていることを確認します。

  • データベースを手動で作成した場合は、catexp.sqlまたはcatalog.sqlスクリプトが実行されたことの確認。Database Configuration Assistant(DBCA)を使用してデータベースを作成した場合は、これらのスクリプトを実行する必要はありません。

  • エクスポート・ファイルを書き込むための十分なディスクまたはテープ記憶域が存在することの確認

  • 必要なアクセス権限を所有していることの確認

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

エクスポート・ユーティリティを使用するには、データベースを作成するかまたは新しいリリースに移行した後で、スクリプトcatexp.sqlまたは(catexp.sqlを実行する)catalog.sqlを実行する必要があります。

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

  • データ・ディクショナリへの必要なエクスポート・ビューおよびインポート・ビューの作成

  • EXP_FULL_DATABASEロールおよびIMP_FULL_DATABASEロールの作成

  • EXP_FULL_DATABASEおよびIMP_FULL_DATABASEロールへのすべての必要な権限の割当て

  • DBAロールへのEXP_FULL_DATABASEおよびIMP_FULL_DATABASEの割当て

  • インストールされているcatexp.sqlのバージョンの記録

EXP_FULL_DATABASEロールおよびIMP_FULL_DATABASEロールは強力です。これらのロールをユーザーに付与する際は、十分に注意する必要があります。

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

エクスポートを実行する前に、エクスポート・ファイルを書き込むための十分なディスクまたはテープのストレージが存在することを確認してください。

十分な領域がないと、エクスポート・ユーティリティは書込み失敗エラーが発生して終了します。

表のサイズから、必要な最大領域を見積もることもできます。表のサイズは、Oracleデータ・ディクショナリのUSER_SEGMENTSビューで確認できます。次の問合せでは、すべての表のディスク使用率が表示されます。

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

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

関連項目:

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

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

エクスポート・ユーティリティを使用するには、Oracle Databaseに対するCREATE SESSION権限が必要です。

この権限は、データベースの作成時に設定されるCONNECTロールに含まれます。別のユーザーが所有している表をエクスポートするには、EXP_FULL_DATABASEロールを有効にする必要があります。このロールは、すべてのデータベース管理者(DBA)に付与されます。

EXP_FULL_DATABASEロールに含まれているシステム権限を持っていないと、別のユーザーのスキーマ内のオブジェクトをエクスポートできません。たとえば、そのシノニムを作成した場合でも、別のユーザーのスキーマ内の表をエクスポートできません。

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

26.3 エクスポート・ユーティリティの起動

3種類のいずれかの方法を使用して、エクスポート・ユーティリティを起動してパラメータを指定できます。

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

26.3.1 SYSDBAでのエクスポート・ユーティリティの起動

SYSDBAは内部的に使用され、一般ユーザーとは異なる特別な機能を持ちます。

そのため、通常、次の場合以外は、エクスポート・ユーティリティをSYSDBAで起動する必要はありません。

  • Oracleサポート・サービスから要求された場合

  • トランスポータブル表領域セットをインポートする場合

26.3.2 コマンドライン・エントリ

すべての有効なパラメータおよびその値をコマンドラインから指定できます。

次の構文を使用します(ユーザー名とパスワードの入力を求められます)。

exp PARAMETER=value

または

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

システムでのコマンドラインの最大長を超える数のパラメータは指定できません。

26.3.3 パラメータ・ファイル

オリジナルのエクスポート・ユーティリティを起動し、パラメータ・ファイルに、有効なすべてのエクスポート・パラメータおよびその値を指定できます。

複数のパラメータを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によって上書きされます。

26.3.4 対話方式モード

各パラメータの値をプロンプトで入力するには、コマンドラインでexpを指定します。

プロンプトでユーザー名とパスワードを入力した後、一般的に使用されるパラメータが表示されます。

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

26.3.4.1 対話方式でのエクスポートを使用する際の制限事項

対話方式でエクスポートを使用する際の制限事項について説明します。

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

  • ユーザー・モードでは、データをエクスポートする前にすべてのユーザー名をエクスポートに含めるように要求されます。ユーザー・リストの終わりを指定して現在のエクスポート・セッションを開始するには、[Enter]を押します。

  • 表モードでは、スキーマの接頭辞を指定しないと、デフォルトによりエクスポート実行者のスキーマ、または現在のセッション内の最後にエクスポートされた表が含まれているスキーマになります。

    たとえば、bethが表モードでエクスポートする特権ユーザーの場合、別のスキーマが指定されるまで、すべての表がbethスキーマに存在するとみなされます。別のユーザーのスキーマ内の表をエクスポートできるのは、特権ユーザー(EXP_FULL_DATABASEロールを持っているユーザー)のみです。

  • エクスポートする表を指定するプロンプトで、NULL表リストを指定すると、エクスポート・ユーティリティは終了します。

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

エクスポート・ユーティリティには、オンライン・ヘルプがあります。エクスポート・ユーティリティのヘルプを表示するには、コマンドラインでexp help=yを入力します。

26.4 エクスポート・モード

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

具体的には次のとおりです。

  • 全体エクスポート: データベース全体をエクスポートします。EXP_FULL_DATABASEロールを所有するユーザーのみが使用できます。FULLパラメータを使用してこのモードを指定します。

  • 表領域モード: 特権ユーザーが表領域をOracle Database間で移動できます。TRANSPORT_TABLESPACEパラメータを使用してこのモードを指定します。

  • ユーザー・モード: 所有するすべてのオブジェクト(表、権限、索引、プロシージャなど)をエクスポートできます。特権ユーザーがユーザー・モードでインポートする場合、指定したユーザー・グループのユーザーのスキーマにあるすべてのオブジェクトをインポートできます。エクスポート・ユーティリティでOWNERパラメータを使用してこのモードを指定します。

  • 表モード: 特定の表およびパーティションをエクスポートできます。特権ユーザーは、インポートする表を含むスキーマを指定して、その表を修飾できます。スキーマ名が指定されていない表は、デフォルトでエクスポート実行者のスキーマ名になります。TABLESパラメータを使用してこのモードを指定します。

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

ノート:

遅延セグメント作成によって作成された表に、作成されたセグメントがない場合、オリジナルのエクスポート・ユーティリティではエクスポートされません。セグメントを作成する最も一般的な方法は表に行を格納することですが、ALTER TABLE ALLOCATE EXTENTSのような他の操作では、セグメントも作成されます。セグメントが存在する表をエクスポートすると、SEGMENT CREATION DEFERRED句は、オリジナルのインポート・ユーティリティによって実行されるCREATE TABLE文に含まれません。

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

表26-1 各モードでエクスポートされるオブジェクト

オブジェクト 表モード ユーザー・モード 全データベース・モード 表領域モード

分析クラスタ

なし

あり

あり

なし

分析表/統計

あり

あり

あり

あり

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

なし

なし

あり

なし

監査情報

あり

あり

あり

なし

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

あり脚注1

あり

あり

あり

クラスタ定義

なし

あり

あり

あり

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

あり

あり

あり

あり

データベース・リンク

なし

あり

あり

なし

デフォルト・ロール

なし

なし

あり

なし

ディメンション

なし

あり

あり

なし

ディレクトリ別名

なし

なし

あり

なし

外部表(データなし)

あり

あり

あり

なし

外部関数ライブラリ

なし

あり

あり

なし

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

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

あり

あり

あり

索引タイプ

なし

あり

あり

なし

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

なし

あり

あり

なし

ジョブ・キュー

なし

あり

あり

なし

ネストした表のデータ

あり

あり

あり

あり

オブジェクト権限

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

あり

あり

あり

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

あり

あり

あり

あり

オブジェクト型

なし

あり

あり

なし

演算子

なし

あり

あり

なし

パスワード履歴

なし

なし

あり

なし

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

なし

なし

あり

なし

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

なし

あり

あり

なし

表の事後処理

あり

あり

あり

あり

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

あり

あり

あり

あり

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

なし

あり

あり

なし

表の事前処理

あり

あり

あり

あり

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

あり

あり

あり

あり

プライベート・シノニム

なし

あり

あり

なし

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

なし

あり

あり

なし

プロファイル

なし

なし

あり

なし

パブリック・シノニム

なし

なし

あり

なし

参照整合性制約

あり

あり

あり

なし

リフレッシュ・グループ

なし

あり

あり

なし

リソース・コスト

なし

なし

あり

なし

ロール権限

なし

なし

あり

なし

ロール

なし

なし

あり

なし

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

なし

なし

あり

なし

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

あり

あり

あり

あり

順序番号

なし

あり

あり

なし

スナップショット・ログ

なし

あり

あり

なし

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

なし

あり

あり

なし

システム権限

なし

なし

あり

なし

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

あり

あり

あり

あり

表データ

あり

あり

あり

あり

表定義

あり

あり

あり

あり

表領域定義

なし

なし

あり

なし

表領域割当て制限

なし

なし

あり

なし

トリガー

あり

あり脚注2

あり脚注3

あり

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

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

なし

なし

なし

ユーザー定義

なし

なし

あり

なし

ユーザー・プロキシ

なし

なし

あり

なし

ユーザー・ビュー

なし

あり

あり

なし

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

なし

あり

あり

なし

脚注1

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

脚注2

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

脚注3

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

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

表、パーティションおよびサブパーティションをエクスポートできます。

どのモードでも、パーティションデータは、パーティションまたはサブパーティションを選択してインポートできる形式でエクスポートされます。

26.4.1.1 表レベル・エクスポート

指定した表からすべてのデータをエクスポートします。

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

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

指定されたソース・パーティションまたはサブパーティションのデータのみエクスポートします。

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

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

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

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

26.5.1 BUFFER

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

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

buffer_size = rows_in_array * maximum_row_size

ゼロを指定すると、1回に1行のみをフェッチします。

LOB型、LONG型、BFILE型、REF型、ROWID型、LOGICAL ROWID型またはDATE型の列を持つ表は、1回に1行ずつフェッチされます。

ノート:

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

26.5.1.1 例: バッファ・サイズの計算

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

次の表が作成されます。

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

name列の最大サイズは、30バイトにインジケータ用の2バイトを加えた値です。weight列の最大サイズは、22バイト(Oracle数値の内部表現のサイズ)にインジケータ用の2バイトを加えた値です。

したがって、最大行サイズは56(30+2+22+2)です。

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

26.5.2 COMPRESS

デフォルト: y

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

エクスポート・ユーティリティでは、デフォルトによりCOMPRESS=yによって、インポート時に1つの初期エクステントに統合するためのフラグが表データに設定されます。エクステント・サイズが大きいと(たとえば、PCTINCREASEパラメータが使用されているため)、割り当てられる領域がデータの保持に必要な領域よりも大きくなります。

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

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

ノート:

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

ノート:

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

26.5.3 CONSISTENT

デフォルト: n

エクスポート・ユーティリティから見たデータが単一時点に対して一貫性がありexpコマンドの実行時に変更されないことを保証するために、エクスポート・ユーティリティでSET TRANSACTION READ ONLY文を使用するかどうかを指定します。エクスポートの開始後に、他のアプリケーションによるターゲット・データの更新が見込まれる場合は、CONSISTENT=yを指定する必要があります。

CONSISTENT=nを使用する場合、通常は1つのトランザクションでそれぞれの表がエクスポートされます。ただし、表にネストされた表が含まれている場合は、外部表とそれぞれの内部表が個別のトランザクションとしてエクスポートされます。表がパーティション化されている場合は、それぞれのパーティションが個別のトランザクションとしてエクスポートされます。

したがって、ネストされた表およびパーティション化された表が他のアプリケーションによって更新されると、エクスポートされるデータに不整合が生じる可能性があります。この可能性を最小限に抑えるには、更新が行われていないときにそれらの表をエクスポートします。

表26-2に、2人のユーザーによるイベントの順序を示します。user1は、表のパーティションをエクスポートし、user2はその表内のデータを更新します。

表26-2 2人のユーザーによる更新時のイベント順序

時間順序 user1 user2

1

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

アクティビティなし

2

アクティビティなし

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

3

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

アクティビティなし

4

表:P2をエクスポート

アクティビティなし

エクスポートでCONSISTENT=yを使用すると、user2による更新はエクスポート・ファイルに書き込まれません。

エクスポートでCONSISTENT=nを使用すると、表:P1に対する更新はエクスポート・ファイルに書き込まれません。ただし、表:P2に対する更新はエクスポート・ファイルに書き込まれます。これは、更新トランザクションが表:P2のエクスポート開始前にコミットされるためです。その結果、user2のトランザクションが部分的にのみエクスポート・ファイルに記録されて一貫性がなくなります。

CONSISTENT=yを使用し、更新のボリュームが大きい場合は、ロールバック・セグメントの使用量が大きくなります。また、それぞれの表のエクスポート速度が低下します。これはそのロールバック・セグメントで、コミットされていないトランザクションをスキャンする必要があるためです。

CONSISTENT=yの使用については、次のことに注意してください。

  • ユーザーSYSとして接続しているか、AS SYSDBAを使用している(あるいはその両方)ときに実行されるエクスポートでは、CONSISTENT=yはサポートされません。

  • ある特定のメタデータのエクスポートでは、再帰的SQL内でSYSスキーマを使用することが必要になる場合があります。そのような場合は、CONSISTENT=yを使用しても無視されます。CONSISTENT=yが選択されているエクスポート・プロセスの実行時は、メタデータの変更を行わないことをお薦めします。

  • そのようなエクスポートに必要な時間と領域を最小限に抑えるには、一貫性を維持する必要がある表を、一貫性を維持する必要のない表とは別にエクスポートする必要があります。たとえば、一貫性エクスポートでemp表およびdept表を一緒にエクスポートし、データベースの他の部分を2番目のパスでエクスポートします。

  • ロールバック領域を使い切り、コミットされたトランザクションで使用された領域を新しいトランザクションに再利用すると、スナップショットが古すぎるというエラーが発生します。ロールバック・セグメントで領域を再利用すると、最小限の領域要件でデータベースの一貫性を維持できますが、読取り一貫性イメージを保持できる時間は制限されます。

    コミットされたトランザクションが上書きされ、データベースの読取り一貫性ビューに情報が必要になると、スナップショットが古すぎることによるエラーが発生します。

    このエラーを回避するには、読取り一貫性エクスポートにかかる時間を最小限に抑える必要があります。(これを行うには、エクスポートされるオブジェクトの数を制限し、可能な場合は、データベースのトランザクション・レートを低下させます。)また、ロールバック・セグメントを可能なかぎり大きくします。

    ノート:

    ロールバック・セグメントは将来のOracle Databaseリリースでは非推奨になります。かわりに、自動UNDO管理を使用することをお薦めします。

    関連項目:

    「OBJECT_CONSISTENT」

26.5.4 CONSTRAINTS

デフォルト: y

エクスポート・ユーティリティで表の制約をエクスポートするかどうかを指定します。

26.5.5 DIRECT

エクスポート・ユーティリティのDIRECTパラメータでは、ダイレクト・パス・エクスポートを使用することを指定します。

デフォルト

n

構文およびプロシージャ

DIRECT=[Y|N]

エクスポート・ユーティリティでDIRECT=yを指定すると、データを直接読み取って、SQLコマンド処理レイヤー(評価バッファ)をバイパスすることでデータが抽出されます。この方式は、従来型パス・エクスポートよりも非常に高速になります。

エクスポートのプロシージャには、セキュリティとパフォーマンスに関する考慮事項があります。関連トピックを参照してください。

26.5.6 FEEDBACK

エクスポート・ユーティリティのFEEDBACKパラメータでは、エクスポート・ユーティリティにプログレス・バー(n行分のエクスポートを1つのピリオドで示す)を表示するように指定します。

デフォルト: 0 (ゼロ)

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

26.5.7 FILE

FILEエクスポート・ユーティリティ・パラメータでは、エクスポート・ダンプ・ファイルの名前を指定します。

デフォルト: expdat.dmp

エクスポート・ダンプ・ファイル名を指定します。デフォルトの拡張子は、.dmpですが、任意の拡張子を指定できます。エクスポート・ユーティリティは複数のエクスポート・ファイルをサポートするので、使用する複数のファイル名を指定できます。たとえば:

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

エクスポート・ユーティリティは、最大FILESIZEに指定された値に到達すると、現在のファイルへの書込みを停止し、FILEパラメータによって指定された次の名前を持つ別のエクスポート・ファイルを開いて、完了するかFILESIZEの最大値に再度到達するまで操作を続行します。エクスポートを完了するために十分なエクスポート・ファイル名を指定しないと、エクスポート・ユーティリティによって、追加のファイル名を指定するように要求されます。

26.5.8 FILESIZE

エクスポート・ユーティリティのFILESIZEパラメータでは、ダンプ・ファイルのサイズを指定します。

デフォルト: データは、表26-3で指定されているように、最大サイズになるまで1つのファイルに書き込まれます。

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

エクスポート・ユーティリティは、書き込む必要があるデータの量がFILESIZEに指定された最大値を超えていると、FILEパラメータから次のエクスポート・ファイルの名前を取得するか、FILEパラメータに指定された名前をすべて使用した場合は、新しいエクスポート・ファイルの名前を指定するように要求します。FILESIZEに値を指定しない場合(値0はFILESIZEを指定しないことに相当)、エクスポート・ユーティリティはFILEパラメータに指定されたファイル数に関係なく1つのファイルのみに書き込みます。

ノート:

エクスポート・ファイルの領域要件が使用可能なディスク領域を超えていると、エクスポート・ユーティリティは終了します。十分な使用可能ディスク領域を有効にした後で、エクスポート・ユーティリティを繰り返す必要があります。

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

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

表26-3 ダンプ・ファイルの最大サイズ

オペレーティング・システム Oracle Databaseのリリース 最大サイズ

任意

8.1.5より前

2GB

32ビット

8.1.5

2GB

64ビット

8.1.5以上

無制限

32ビットで32ビットファイルを使用

任意

2GB

32ビットで64ビットファイルを使用

8.1.6以上

無制限

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

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

26.5.9 FLASHBACK_SCN

FLASHBACK_SCNエクスポート・ユーティリティ・パラメータでは、エクスポート・ユーティリティでフラッシュバックを有効にするために使用するシステム変更番号(SCN)を指定します。

デフォルト: なし

エクスポート・ユーティリティでフラッシュバックを有効にするために使用するシステム変更番号(SCN)を指定します。エクスポート操作は、この指定されたSCNにおけるデータの一貫性を維持したまま実行されます。

関連項目:

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

> exp FILE=exp.dmp FLASHBACK_SCN=3482971

26.5.10 FLASHBACK_TIME

FLASHBACK_TIMEエクスポート・ユーティリティ・パラメータを使用すると、タイムスタンプを指定できます。エクスポート・ユーティリティは、指定されたタイムスタンプに最も近いSCNを検索します。このSCNを使用して、フラッシュバックを使用可能にします。

デフォルト: なし

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

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

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

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

また、次の例に示す古い形式も下位互換性を維持するために引き続き指定できます。

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

関連項目:

26.5.11 FULL

FULLエクスポート・パラメータは、エクスポートが全データベース・モード・エクスポートであることを示します(つまり、データベース全体をエクスポート)。

デフォルト: n

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

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

全データベースのエクスポートおよびインポートは、データベースの複製およびクリーンアップに有効です。

ただし、問題が発生しないように、次の点に注意する必要があります。

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

  • 全体エクスポートでは、デフォルトのプロファイルもエクスポートされません。ソース・データベースでデフォルトのプロファイルを変更した場合(たとえば、スキーマSYSが所有するパスワード確認機能を追加するなど)は、事前に手動でその機能を作成し、インポートの完了後にターゲット・データベースでデフォルトのプロファイルを変更する必要があります。

  • 可能な場合、開始前にエクスポートされたデータベースおよびインポートするデータベースの物理コピーを作成します。これによって、誤った操作をやり直すことができます。

  • エクスポートの開始前に、次の情報を含むレポートを作成することをお薦めします。

    • 表領域およびデータ・ファイルのリスト

    • ロールバック・セグメントのリスト

    • ユーザーごとの各オブジェクト型(表、索引など)の数

    この情報で、表領域がすでに作成され、インポートが正常に完了したことを確認できます。

  • エクスポートから完全に新しいデータベースを作成する場合、SYSTEMに余分なロールバック・セグメントを作成し、初期化パラメータ・ファイル(init.ora)で使用可能にしてからインポートを開始します。

  • インポートの実行時に、正しいインスタンスを指していることを確認します。一部のUNIXシステムでは、サブシェルの入力のみで、インポート操作を行ったデータベースが変更される場合があります。

  • すべての表領域が作成されるまで、複数のデータベースを含むシステムでは全体インポートを行わないでください。全体インポートは、エクスポートされたデータベースと同じデータ・ファイル名を使用して、未定義の表領域を作成します。このため、次のような状況で問題が発生します。

    • データ・ファイルが他のいずれかのデータベースに属する場合、データ・ファイルは破損します。このことは特に、エクスポートされるデータベースが同じシステムに存在する場合に当てはまります(そのデータ・ファイルがインポート先のデータベースによって再利用されるため)。

    • データ・ファイルの名前が既存のオペレーティング・システム・ファイルの名前と同じ場合も問題が発生します。

26.5.12 GRANTS

GRANTSエクスポート・ユーティリティ・パラメータでは、エクスポート・ユーティリティによりオブジェクト権限をエクスポートするかどうかを指定します。

デフォルト: y

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

26.5.13 HELP

エクスポート・ユーティリティのHELPパラメータを使用すると、エクスポート・ユーティリティのパラメータの説明が表示されます。

デフォルト: なし

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

26.5.14 INDEXES

エクスポート・ユーティリティのINDEXESパラメータでは、エクスポート・ユーティリティで索引をエクスポートするかどうかを指定します。

デフォルト: y

エクスポート・ユーティリティで索引をエクスポートするかどうかを指定します。

26.5.15 LOG

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

デフォルト: なし

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

26.5.16 OBJECT_CONSISTENT

エクスポートされたデータが単一時点に対して一貫性がありエクスポート中に変更されないことを保証するために、エクスポート・ユーティリティでSET TRANSACTION READ ONLY文を使用するかどうかを指定します。

デフォルト: n

OBJECT_CONSISTENTyに設定すると、パーティション化されている場合でも、自身の読取り専用トランザクションで各オブジェクトがエクスポートされます。一方、CONSISTENTパラメータを使用した場合は、1つの読取り専用トランザクションのみが存在します。

関連項目:

CONSISTENT

26.5.17 OWNER

エクスポートがユーザー・モード・エクスポートであることと、オブジェクトがエクスポートされるユーザーを指定します。

デフォルト: なし

エクスポートを開始するユーザーがデータベース管理者(DBA)の場合は、複数のユーザーをリストできます。

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

26.5.18 PARFILE

エクスポート・パラメータのリストを格納するファイルのファイル名を指定します。

デフォルト: なし

パラメータ・ファイルの使用方法の詳細は、「エクスポート・ユーティリティの起動」を参照してください。

26.5.19 QUERY

このパラメータでは、表モード・エクスポートの実行時に、表のセットから行のサブセットを選択できます。

デフォルト

ありません。

用途

問合せパラメータの値は、TABLESパラメータにリストされたすべての表(または表のパーティション)に適用されるSQL SELECT文のWHERE句が含まれている文字列です。

たとえば、ユーザーscottが、肩書きがSALESMANで給与が1600未満の従業員のみをエクスポートする場合は、次のように指定できます(この例はUNIXに基づいています)。

exp scott 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パラメータにリストされているすべての表(または表のパーティション)に適用されます。たとえば、次の文では問合せに一致するempbonusの両方にある行がアンロードされます。

exp scott 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句で指定された列が見つからないと、エラー・メッセージが生成され、その不適切な表については行がエクスポートされません。

26.5.19.1 QUERYパラメータを使用する際の制限事項

QUERYパラメータを使用する際の制限事項について説明します。

  • QUERYパラメータは、全モード、ユーザー・モードまたは表領域モードのエクスポートには指定できません。

  • QUERYパラメータは、指定されたすべての表に適用可能である必要があります。

  • QUERYパラメータは、ダイレクト・パス・エクスポート(DIRECT=y)では指定できません。

  • QUERYパラメータは、ネストされた内部表がある表には指定できません。

  • データがQUERYエクスポートの結果かどうかを、エクスポート・ファイルの内容から判断することはできません。

26.5.20 RECORDLENGTH

ファイル・レコードの長さをバイト単位で指定します。

デフォルト

オペレーティング・システムによって異なります。

用途

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

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

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

ノート:

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

26.5.21 RESUMABLE

RESUMABLEパラメータを使用して、再開可能な領域割当てを有効または無効にします。

デフォルト

n

用途

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

関連項目:

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

26.5.22 RESUMABLE_NAME

RESUMABLE_NAMEパラメータの値によって、再開可能な文を識別します。

デフォルト

'User USERNAME (USERID), Session SESSIONID, Instance INSTANCEID'

用途

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

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

26.5.23 RESUMABLE_TIMEOUT

RESUMABLE_TIMEOUTパラメータの値では、エラー修正までに必要な時間を指定します。

デフォルト

7200秒(2時間)

用途

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

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

26.5.24 ROWS

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

デフォルト

y

26.5.25 STATISTICS

エクスポートされたデータのインポート時に生成するデータベース・オプティマイザ統計のタイプを指定します。オプションは、ESTIMATECOMPUTEおよびNONEです。

デフォルト: ESTIMATE

エクスポート・ユーティリティによって計算済の統計情報がエクスポート・ファイルに含まれることがあります。また、ANALYZE文によって統計情報が再生成されることもあります。

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

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

  • エクスポート中に行エラーが発生している

  • クライアントの文字セットまたはNCHAR文字セットが、サーバーの文字セットまたはNCHAR文字セットと一致していない

  • QUERY句が指定されている

  • 特定のパーティションまたはサブパーティションのみがエクスポートされている

    ノート:

    ROWS=nを指定しても、計算済統計情報をエクスポート・ファイルに保存することはできます。この機能により、本番データベースからの統計情報を使用して、非本番データベース上で問合せの実行計画のチューニングを行うことができます。

26.5.26 TABLES

デフォルト: なし

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

  • schemanameは、表またはパーティションのエクスポート元のユーザー・スキーマの名前を指定します。スキーマ名が指定されていない場合は、エクスポート実行者のスキーマがデフォルトとして使用されます。ORDSYSMDSYSCTXSYSLBACSYSORDPLUGINSなどのシステム・スキーマ名はエクスポート・ユーティリティによって予約されています。

  • tablenameは、エクスポートされる表の名前を指定します。表レベル・エクスポートでは、パーティション表または非パーティション表全体をエクスポートできます。リストにパーティション表が含まれる場合、パーティション名を指定しないと、すべてのパーティションおよびサブパーティションがエクスポートされます。

    表名は、任意の数の「%」パターン一致文字を含むことができます。各「%」パターン一致文字は、データベースの表オブジェクトに対し表名の0個以上の文字と一致します。指定されたパターンに一致する関連のスキーマ内のすべての表が、それぞれの表名がパラメータで明示的に指定されているとおりにエクスポートに選択されます。

  • partition_nameは、エクスポートがパーティション・レベルのエクスポートであることを示します。パーティション・レベル・エクスポートでは、表内の指定された1つ以上のパーティションまたはサブパーティションをエクスポートできます。

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

schemaname.tablename:partition_name
schemaname.tablename:subpartition_name

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

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

26.5.26.1 表名の制限

これは、エクスポート・ユーティリティの表名の制限についての説明です。

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

  • デフォルトでは、表名は大文字でデータベースに格納されます。表名が大文字と小文字または小文字のみで表記され、大/小文字を区別する場合、名前を引用符で囲む必要があります。したがって、表名は、データベースに格納されている表名と完全に一致するように指定する必要があります。

    ただし、オペレーティング・システムによっては、コマンドラインの引用符自体をエスケープする必要がある場合があります。次に、異なるエクスポート・モードで大/小文字の区別を保持する方法を示します。

    • コマンドライン・モード

      TABLES='\"Emp\"'
      
    • 対話方式モード

      Table(T) to be exported: "Emp"
      
    • パラメータ・ファイル・モード

      TABLES='"Emp"'
      
  • 表名を引用符で囲まないかぎり、コマンドラインで指定する表名にポンド(#)記号は使用できません。同様に、パラメータ・ファイルでは、表名が引用符で囲まれていないかぎり、表名にポンド(#)記号を使用すると、エクスポート・ユーティリティではポンド(#)記号より右側の文字がコメントとして解釈されます。

    たとえば、パラメータ・ファイルに次の行が記述されている場合、エクスポート・ユーティリティはemp#の右側をすべてコメントとして解釈するため、表deptmydataはエクスポートされません。

    TABLES=(emp#, dept, mydata)
    

    ただし、次の例では、emp#が引用符で囲まれているため、3つの表はすべてエクスポートされます。

    TABLES=("emp#", dept, mydata)

    ノート:

    オペレーティング・システムによっては、一重引用符を使用する必要がある場合と、二重引用符を使用する必要がある場合があります。表のネーミング方法に制限があるオペレーティング・システムもあります。

26.5.27 TABLESPACES

TABLESPACESパラメータは、指定された表領域内のすべての表をエクスポートのダンプ・ファイルにエクスポートすることを指定します。

デフォルト: なし

これには、指定した表領域に含まれるすべての表と、指定した表領域にあるパーティションを持つすべての表が含まれます。索引は、索引の格納場所に関係なくその表とともにエクスポートされます。

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

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

26.5.28 TRANSPORT_TABLESPACE

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

デフォルト: n

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

ノート:

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

関連項目:

26.5.29 TRIGGERS

エクスポート・ユーティリティでトリガーをエクスポートするかどうかを指定します。

デフォルト: y

26.5.30 TTS_FULL_CHECK

TTS_FULL_CHECKyに設定すると、エクスポート・ユーティリティは、リカバリ・セット(リカバリする一連の表領域)がリカバリ・セットの外部のオブジェクトへの依存性(特に、INポインタ)を持たないこと(その逆も)を検証します。

デフォルト: n

26.5.31 USERID (username/password)

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

デフォルト: なし

パスワードを省略すると、指定するように要求されます。

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

関連項目:

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

26.5.32 VOLSIZE

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

デフォルト: なし

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

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

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

エクスポート・セッションのタイプの例。

それぞれの例では、コマンドライン方式とパラメータ・ファイル方式の両方の使用方法が示されます。一部の例では、縦長の省略記号を使用して、長すぎてすべてを表示できない出力例のセクションを示しています。

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

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のリリース情報が表示されます。状態メッセージは、データベース全体がエクスポートされた時点で書き出されます。エクスポートが警告なしで完了すると、最終的な完了メッセージが返されます。

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

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

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

> exp scott PARFILE=params.dat

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

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

コマンドライン方式

> exp scott 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.

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

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

EXP_FULL_DATABASEロールを持っているユーザーは、表モードを使用しTABLES=schemaname.tablenameを指定して、任意のユーザーのスキーマから表をエクスポートできます。

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

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

EXP_FULL_DATABASEロールを持っているユーザーは、他のユーザーによって所有されている依存オブジェクトもエクスポートできます。権限のないユーザーは、所有している指定済の表の依存オブジェクトのみをエクスポートできます。

表モードでのエクスポートには、クラスタ定義は含まれません。その結果、データはクラスタ化されていない表としてエクスポートされます。したがって、表モードを使用して、表のクラスタ化を解除できます。

26.6.3.1 例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.
26.6.3.2 例2: ユーザーによる自身が所有している表のエクスポート

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

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

> exp blake PARFILE=params.dat

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

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

コマンドライン方式

> exp blake 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.
26.6.3.3 例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.

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

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

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

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

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

> exp scott PARFILE=params.dat

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

TABLES=(emp)
ROWS=y

コマンドライン方式

> exp scott 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.
26.6.4.2 例2: パーティションを指定した表のエクスポート

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

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

 > exp scott PARFILE=params.dat

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

TABLES=(emp:m)
ROWS=y

コマンドライン方式

> exp scott 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.
26.6.4.3 例3: コンポジット・パーティションのエクスポート

empは、2つのパーティションmzがあるパーティション表であるとします。表empは、コンポジット方式を使用してパーティション化されています。パーティションmには、サブパーティションsp1およびsp2があり、パーティションzには、サブパーティションsp3およびsp4があります。この例に示すとおり、コンポジット・パーティションmをエクスポートすると、そのすべてのサブパーティション(sp1およびsp2)がエクスポートされます。表をエクスポートするときにサブパーティション(sp4)を指定すると、指定されたパーティションのみがエクスポートされます。

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

> exp scott PARFILE=params.dat

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

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

コマンドライン方式

> exp scott 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.

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

これらの項では、エクスポート・ユーティリティによって発行される各種のメッセージと、ログ・ファイルへのメッセージの保存方法について説明します。

26.7.1 ログ・ファイル

すべてのエクスポート・メッセージをログ・ファイルに保存するには、LOGパラメータを使用するか、出力をファイルにリダイレクトします(リダイレクトできるシステムの場合)。

成功したアンロード、および発生している可能性があるエラーに関して、詳細な情報のログが記録されます。

26.7.2 警告メッセージ

エクスポート・ユーティリティは、リカバリ可能なエラーの発生後は終了しません。これらのリカバリ可能なエラーは警告と呼ばれます。

たとえば、表のエクスポート中にエラーが発生すると、エクスポート・ユーティリティはエラー・メッセージを表示(またはログに記録)して次の表にスキップし、処理を続行します。

エクスポート・ユーティリティは、無効なオブジェクトが検出された場合も警告メッセージを表示します。

たとえば、存在しない表が表モード・エクスポートの一部として指定されても、それ以外のすべての表をエクスポートします。その後で警告メッセージを表示して、正常に終了します。

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

エラーによってはリカバリ不能で、エクスポート・セッションが終了する場合があります。

通常、これらのエラーは、内部的な問題、またはメモリーなどのリソースが使用不能か不足しているなどの原因によって発生します。たとえば、catexp.sqlスクリプトが実行されない場合、エクスポート・ユーティリティは次のようなリカバリ不能メッセージを表示します。

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

26.7.4 完了メッセージ

エラーが発生することなくエクスポートが完了すると、その状態を示すメッセージが表示されます。

たとえば:

Export terminated successfully without warnings

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

Export terminated successfully with warnings

リカバリ不能なメッセージが発生してジョブがすぐに終了した場合は、その状態を示す次のようなメッセージが表示されます。

Export terminated unsuccessfully

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

エクスポート・ユーティリティでは、操作の完了後、すぐに実行結果を確認できます。プラットフォームによっては、実行結果はプロセス終了コードに通知され、ログ・ファイルにも記録されます。

これによって、コマンドラインやスクリプトからの出力を確認できます。表26-4に、様々な結果の終了コードを示します。

表26-4 エクスポート・ユーティリティの終了コード

結果 終了コード

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

EX_SUCC

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

EX_OKWARN

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

EX_FAIL

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

EX_SUCC   0
EX_OKWARN 0
EX_FAIL   1

26.9 従来型パス・エクスポートとダイレクト・パス・エクスポート

エクスポート・ユーティリティで表データをエクスポートするには、2つの方法があります。

具体的には次のとおりです。

  • 従来型パス・エクスポート

  • ダイレクト・パス・エクスポート

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

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

26.10 ダイレクト・パス・エクスポートの開始

ダイレクト・パス・エクスポートを使用するには、コマンドラインまたはパラメータ・ファイルで、DIRECT=yパラメータを指定します。

デフォルトは、従来型パスを使用して表データを抽出するDIRECT=nです。ダイレクト・パス・エクスポート操作に関するセキュリティ、パフォーマンスおよび制限事項について確認してください。

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

Oracle Virtual Private Database(VPD)およびOracle Label Securityは、ダイレクト・パス・エクスポートの実行時には施行されません。

次のユーザーは、データベースからのデータの抽出に使用されるエクスポート・モード、アプリケーションまたはユーティリティに関係なく、Virtual Private DatabaseおよびOracle Label Security施行の対象外となります。

  • データベース・ユーザーSYS

  • 直接またはデータベース・ロールを通じてEXEMPT ACCESS POLICY権限を付与されているデータベース・ユーザー

つまり、EXEMPT ACCESS POLICY権限を付与されているどのユーザーも、VPDおよびOracle Label Securityの施行の完全な対象外となります。これは強力な権限であるため、注意して管理する必要があります。この権限は、SELECTINSERTUPDATEDELETEなどの従来のオブジェクト権限の施行に影響しません。これらの権限は、ユーザーにEXEMPT ACCESS POLICY権限が付与されている場合も施行されます。

関連項目:

26.10.2 ダイレクト・パス・エクスポートに関するパフォーマンス上の考慮点

ダイレクト・パス・エクスポートを起動するときに、RECORDLENGTHパラメータの値を大きくすることによるパフォーマンスの向上。

実際に得られるパフォーマンスは、次の要因によって決まります。

  • DB_BLOCK_SIZE

  • 表内の列の型

  • 使用するI/Oレイアウト(エクスポート・ファイルを受け取るドライブは、データベース・ファイルが存在するディスク・ドライブとは別にする必要があります。)

一般に、RECORDLENGTHには次の値が推奨されます。

  • ファイル・システムI/Oブロック・サイズの整数倍

  • DB_BLOCK_SIZEの整数倍

ダイレクト・パス・エクスポートを使用して作成されたエクスポート・ファイルをインポートするには、従来型パス・エクスポートを使用して作成されたエクスポート・ファイルの場合と同じ時間がかかります。

26.10.3 ダイレクト・パス・エクスポートに関する制限事項

ダイレクト・パス・モードの使用に関する制限事項。

具体的には次のとおりです。

  • ダイレクト・パス・エクスポートを起動するには、コマンドライン方式またはパラメータ・ファイルを使用する必要があります。対話方式を使用して、ダイレクト・パス・エクスポートを起動することはできません。

  • BUFFERエクスポート・パラメータは、従来型パス・エクスポートのみに適用されます。ダイレクト・パス・エクスポートの場合は、RECORDLENGTHパラメータを使用して、エクスポート・ユーティリティでエクスポート・ファイルへの書き込みに使用されるバッファのサイズを指定します。

  • 表領域モード(TRANSPORT_TABLESPACES=Y)でエクスポートするときは、ダイレクト・パスを使用できません。

  • QUERYパラメータは、ダイレクト・パス・エクスポートでは指定できません。

  • ダイレクト・パス・エクスポートでデータをエクスポートできるのは、エクスポートを起動するセッションのNLS_LANG環境変数がデータベースの文字セットに一致する場合のみです。NLS_LANGが設定されていないか、データベースの文字セットと異なる場合は、警告メッセージが表示されて、エクスポートが続行されません。NLS_LANG環境変数のデフォルト値は、AMERICAN_AMERICA.US7ASCIIです。

26.11 オリジナルのOracle Data Pumpエクスポートのネットワーク考慮事項

ネットワークを通じてオリジナルのエクスポート(exp)ユーティリティを使用するときには、プロトコルと接続修飾文字列を確認してください。

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

エクスポート・ファイルはバイナリ形式であるため、ネットワークを介してそのエクスポート・ファイルを転送するときは、バイナリ転送をサポートしているプロトコルを使用して、ファイルが破損しないようにしてください。

たとえば、FTPなどのファイル転送プロトコルを使用して、バイナリ・モードでファイルを転送します。エクスポート・ファイルをキャラクタ・モードで送信すると、ファイルのインポート時にエラーが発生します。

26.11.2 Oracle Netを使用したエクスポート

Oracle Netを使用すると、ネットワークを介してエクスポートを実行できます。

たとえば、エクスポート・ユーティリティをローカルで実行した場合に、リモートのOracle Databaseからローカルのエクスポート・ファイルにデータを書き込むことができます。

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

26.12 文字セットおよびグローバリゼーション・サポートに関する考慮点

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

26.12.1 ユーザー・データ

エクスポート・ユーティリティは、常に、エクスポート・サーバーの文字セットでUnicodeデータを含むユーザー・データをエクスポートします。(文字セットは、データベース作成時に指定されます。)

ソース・データベースの文字セットが、インポート・データベースの文字セットと異なる場合、自動的にデータをインポート・サーバーの文字セットに変換するための文字セット変換が実行されます。

26.12.1.1 変換による文字セットのソート順への影響

エクスポート文字セットのソート順が、インポート文字セットと異なる場合、キャラクタ列をパーティション化した表では、結果が保証されません。

たとえば、次のような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グローバリゼーション・サポート・ガイド』を参照してください。

26.12.2 DDL

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

具体的には次のとおりです。

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

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

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

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

26.12.3 シングルバイト文字セットとエクスポートおよびインポート

8ビット文字セットのエクスポート・ファイルをインポートすると、一部の8ビット・キャラクタが失われる(つまり7ビットの対応するキャラクタに変換される)場合があります。

これが発生するのは、インポートを実行するシステムに、システム固有の7ビット文字セットが存在するか、オペレーティング・システム環境変数NLS_LANGが7ビット文字セットに設定されている場合です。アクセント記号が付いている文字からアクセントが消去されるのが最もよく見られる例です。

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

26.12.4 マルチバイト文字セットとエクスポートおよびインポート

ターゲット文字セットに同等の文字がないエクスポート・ファイル中の文字は、変換時にデフォルトの文字に置換されます(デフォルトの文字は、ターゲット文字セットによって定義されます)。(デフォルトの文字は、ターゲット文字セットによって定義されます)。

100%完全に変換されるためには、ターゲット文字セットはソース文字セットのスーパーセットであるか、ソース文字セットと同等である必要があります。

ノート:

エクスポート・サーバーとインポート・サーバーとの間で文字セットの幅が異なるとき、変換が原因でデータの拡張が発生する場合にデータの切捨てが発生することがあります。切捨てが発生する場合、インポート・ユーティリティに警告メッセージが表示されます。

26.13 エクスポート・ユーティリティおよびインポート・ユーティリティでのインスタンス親和性の使用

インスタンス親和性を使用して、インポートおよびエクスポートするデータベース内のインスタンスにジョブを関連付けることができます。

複数のリリースを組み合せて使用している場合は、互換性の問題に注意してください。

関連項目:

26.14 データベース・オブジェクトのエクスポート時の考慮点

これらの項では、特定のデータベース・オブジェクトをエクスポートする場合の考慮点について説明します。

26.14.1 エクスポート順序

エクスポート中もトランザクションから順序番号へのアクセスが継続すると、順序番号がスキップされる場合があります。

順序番号がスキップされないようにする最良の方法として、エクスポート中に順序にアクセスしないようにします。

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

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

LONGおよびLOBデータ型のエクスポートについて説明します。

エクスポート時に、LONGデータ型はセクションごとにフェッチされます。ただし、LONGデータを含めて、各行のすべての内容を保持できる十分な使用可能メモリーが必要です。

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

LOB列内のデータはすべてを同時にメモリーに保持する必要はありません。LOBデータはセクションごとにロードおよびアンロードされます。

ノート:

既存のLONG列をLOB列に変換することもお薦めします。LOB列の制限の数は、LONG列の制限の数よりも、かなり少なくなっています。LOB機能はリリースごとに拡張されていますが、LONG機能は最近のリリースでは変更されていません。

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

外部関数ライブラリのエクスポートについて説明します。

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

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

オフライン・ローカル管理表領域のエクスポートについて説明します。

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

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

ディレクトリ別名定義のエクスポートについて説明します。

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

ディレクトリ別名はユーザー・モードまたは表モード・エクスポートには含まれません。したがって、ディレクトリ別名を使用する前に、ディレクトリ別名をターゲット・システム上に作成しておく必要があります。

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

BFILE列および属性のエクスポートについて説明します。

エクスポート・ファイルには、BFILE列または属性によって参照される外部ファイルの内容は保持されません。かわりに、ファイルの名前とディレクトリ別名のみがエクスポート時にコピーされて、インポート時にリストアされます。データベースを移動し、元のディレクトリに含まれているファイルにアクセスできない場合、データベース管理者(DBA)は、指定されたファイルが含まれているディレクトリを、アクセス可能な新しい場所に移動する必要があります。

26.14.7 外部表のエクスポート

外部表のエクスポートについて説明します。

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

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

オブジェクトの型定義のエクスポートについて説明します。

どのエクスポート・モードでも、エクスポート・ユーティリティには、エクスポートする表で使用されるオブジェクトの型定義に関する情報が含まれます。ターゲット・システム上のオブジェクト型とエクスポート・ファイルに含まれているオブジェクトの状態との間に一貫性があるかどうかを確認するには、オブジェクト名、オブジェクト識別子、オブジェクト・ジオメトリなどの情報が必要です。これにより、表に必要なオブジェクト型が、同じオブジェクト識別子でインポート時に作成されます。

ただし、エクスポート・ユーティリティを実行するユーザーが、対象のオブジェクト型に対する実行権限を持っていない場合、表モード、ユーザー・モード、表領域モードでは、表に必要な完全オブジェクト定義がエクスポート・ファイルに含まれません。この場合、その型の存在確認に必要な情報のみが、同じオブジェクト識別子およびジオメトリでインポート・ターゲット・システム上に書き込まれます。

ユーザーは、DBAとともに適切な型定義を作成するか、またはDBAが実行した全体データベース・モード・エクスポートまたはユーザー・モード・エクスポートからそれらの型定義をインポートすることによって、適切なデータ型がターゲット・システムに存在するようにする必要があります。

すべてのオブジェクト型定義を保持するには、全体データベース・モード・エクスポートを定期的に実行することが重要です。また、異なるスキーマのオブジェクト型定義を使用する場合、DBAは、該当するユーザーのユーザー・モード・エクスポートを実行する必要があります。たとえば、ユーザーscottに属しているtable1に、blakeの型type1に存在する列が含まれている場合、表に必要な型定義を保持するには、blakescottの両方のユーザー・モード・エクスポートを実行する必要があります。

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

ネストした表のエクスポートについて説明します。

ネストした内部表データは、外部表がエクスポートされると必ずエクスポートされます。ネストした内部表は名前を指定できますが、個別にエクスポートすることはできません。

26.14.10 AQ表のエクスポート

AQ表のエクスポートについて説明します。

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

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

26.14.11 シノニムのエクスポート

シノニムのエクスポートについて説明します。

シノニムおよび別のオブジェクトとして使用される名前を参照するコンパイル済オブジェクトをエクスポートするときは、注意する必要があります。これらのオブジェクトのエクスポートおよびインポートを実行すると、再コンパイルが施行されて、オブジェクト定義が変更されることがあります。

この問題について、次の例に示します。

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トリガーを再確立しようとすると、エラーが発生します。

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

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

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

Javaが有効化されている場合、エクスポートを再実行する前にDBMS_JAVAシノニムとDBMS_JAVAパッケージの両方が作成されて有効になっていることを確認してください。

Javaが有効化されていない場合は、エクスポートを再実行する前にJava関連オブジェクトを削除します。

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

ファイングレイン・アクセス・コントロール・ポリシーのサポートについて説明します。

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

  • ファイングレイン・アクセス・コントロール・ポリシーが使用可能な表を含むエクスポート・ファイルをインポートするユーザーは、適切な権限(特にDBMS_RLSパッケージに対するEXECUTE権限。表のセキュリティ・ポリシーを回復するため)を持っている必要があります。適切な権限を持っていないユーザーが、ファイングレイン・アクセス・ポリシーが使用可能な表をエクスポートしようとすると、エクスポート実行者が読取り権限を持つ行のみがエクスポートされます。

  • SELECT文に対してファイングレイン・アクセス・コントロールを使用可能にすると、従来型パス・エクスポートでは表全体をエクスポートできない場合があります。これは、ファイングレイン・アクセスでは問合せが再作成される可能性があるためです。

  • ファイングレイン・アクセス・コントロールが設定されている表上でダイレクト・パス・エクスポートを実行できるのは、ユーザーSYS、EXP_FULL_DATABASEロールが使用可能なユーザー、またはEXEMPT ACCESS POLICYを付与されているユーザーのみです。

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

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

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

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

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

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

  • TABLESPACES

  • TRANSPORT_TABLESPACE

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

関連項目:

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

読取り専用データベースからのエクスポートについて説明します。

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

26.17 エクスポート・ユーティリティおよびインポート・ユーティリティを使用したデータベース移行のパーティション化

エクスポート・ユーティリティおよびインポート・ユーティリティを使用して大規模データベースを移行する場合、移行を複数のエクスポート・ジョブおよびインポート・ジョブにパーティション化するとより効率的です。

移行をパーティション化する場合は、次のメリットおよびデメリットに注意してください。

26.17.1 移行をパーティション化する場合のメリット

移行をパーティション化する場合のメリットについて説明します。

移行をパーティション化すると、次のメリットがあります。

  • 多くのサブジョブをパラレルに実行できるため、移行に必要な時間を削減できます。

  • 最初のエクスポート・ジョブが完了するとすぐにインポート・ユーティリティを起動できます。

26.17.2 移行をパーティション化する場合のデメリット

移行をパーティション化する場合のデメリットについて説明します。

移行をパーティション化すると、次のデメリットがあります。

  • エクスポートおよびインポートのプロセスがより複雑になります。

  • 特定の型のオブジェクトに対する相互スキーマ参照のサポートが損なわれます。たとえば、異なるスキーマの表に対する外部キー制約を持つ表がスキーマに含まれている場合、その表を依存スキーマにインポートしたときに、必要な親レコードが存在しない場合があります。

26.17.3 エクスポート・ユーティリティおよびインポート・ユーティリティを使用したデータベース移行のパーティション化方法

エクスポート・ユーティリティおよびインポート・ユーティリティを使用したデータベース移行のパーティション化方法について説明します。

データベースの移行をパーティション化方法で実行するには、次のステップに従います。

  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のインポートが完了すると、残りのインポートもパラレルで実行できます。

26.18 リリースが異なるエクスポート・ユーティリティおよびインポート・ユーティリティの使用

リリースが異なるエクスポート・ユーティリティおよびOracle Databaseを使用することに関連した互換性の問題について説明します。

異なるリリースのOracle Database間でデータを移動するときは、必ず次の基本的な規則に従います。

  • インポート・ユーティリティとデータのインポート先であるデータベース(ターゲット・データベース)のリリースは同じである必要があります。たとえば、インポート・ユーティリティ9.2.0.7を使用して9.2.0.8のデータベースにインポートしようとすると、エラーが発生する場合があります。

  • エクスポート・ユーティリティのバージョンは、ソースまたはターゲット・データベースの古い方のリリースに合わせる必要があります。

    たとえば、新しいリリースのデータベースにインポートするためにエクスポート・ファイルを作成する場合は、ソース・データベースと同じエクスポート・ユーティリティのバージョンを使用します。一方、古いリリースのデータベースにインポートするためのエクスポート・ファイルを作成する場合は、ターゲット・データベースのリリースと同じバージョンのエクスポート・ユーティリティを使用します。

    • 通常は、Oracle8リリースのエクスポート・ユーティリティを使用して、Oracle9iサーバーからエクスポートし、Oracle8エクスポート・ファイルを作成できます。

26.18.1 リリースが異なるエクスポート・ユーティリティおよびインポート・ユーティリティの使用時の制限事項

異なるリリースのエクスポート・ユーティリティおよびインポート・ユーティリティを使用する場合の制限について説明します。

具体的には次のとおりです。

  • エクスポート・ダンプ・ファイルは、特別なバイナリ形式で格納されているため、インポート・ユーティリティによる読取り専用です。

  • すべてのエクスポート・ダンプ・ファイルは、上位リリースのOracle Databaseにインポートできます。

  • インポート・ユーティリティでは、上位のメンテナンス・リリースのエクスポート・ユーティリティで作成されたエクスポート・ダンプ・ファイルの読取りはできません。たとえば、リリース9.2のエクスポート・ダンプ・ファイルは、リリース9.0.1のインポート・ユーティリティではインポートできません。

  • 下位バージョンのエクスポート・ユーティリティを上位リリースのOracle Databaseで実行すると、下位リリースに存在しないデータベース・オブジェクトのカテゴリは、常にエクスポートから除外されます。

  • Oracle9iのエクスポート(ダイレクト・パスまたは従来型パス)によって生成されたエクスポート・ファイルは、以前のリリースのインポート・ユーティリティと互換性がありません。したがって、インポートにはOracle9iのインポートのみを使用できます。下位互換性が問題になる場合は、Oracle9iデータベースよりも古いリリースのエクスポート・ユーティリティを使用してください。

26.18.2 リリースが異なるエクスポート・ユーティリティおよびインポート・ユーティリティの使用例

リリースが異なるエクスポート・ユーティリティおよびインポート・ユーティリティの使用例を示します。

表26-5に、異なるリリースのOracle Database間でデータを移動させる場合に使用するエクスポート・ユーティリティおよびインポート・ユーティリティのリリースの例を示します。

表26-5 リリースが異なるエクスポート・ユーティリティおよびインポート・ユーティリティの使用

エクスポート元>インポート先 使用するエクスポート・ユーティリティのリリース 使用するインポート・ユーティリティのリリース

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

表26-5に、オリジナルのエクスポートおよびインポート・ユーティリティ間のデータ移動を示します。Oracle Database 10gリリース1 (10.1)以上では、ほとんどの場合にデータ・ポンプ・エクスポートおよびデータ・ポンプ・インポート・ユーティリティを使用することをお薦めします。これらのユーティリティは、オリジナルのエクスポートおよびインポート・ユーティリティと比較して、パフォーマンスが著しく向上しています。

関連項目:

10.1以上のリリースを含めた異なるリリース間でのデータのエクスポートおよびインポートの詳細は、『Oracle Databaseアップグレード・ガイド』を参照してください。