次の項では、特定のデータベース・オブジェクトをエクスポートする場合の考慮点について説明します。
外部関数ライブラリの内容はエクスポート・ファイルに含まれません。かわりに、ライブラリの指定(名前、場所)のみが全体データベース・モードおよびユーザー・モード・エクスポートに含まれます。データベースを新しい場所に移動する場合は、ライブラリの実行可能ファイルを移動してライブラリの指定を更新する必要があります。
エクスポートするデータにオフライン・ローカル管理表領域が含まれていると、エクスポート・ユーティリティでは完全な表領域定義をエクスポートできず、エラー・メッセージが表示されます。その場合もデータをインポートはできますが、インポートの前にオフライン・ローカル管理表領域を作成して、欠落している表領域を参照する場合があるDDLコマンドに失敗しないようにする必要があります。
ディレクトリ別名の定義は、全体データベース・モード・エクスポートのみに含まれます。データベースを新しい場所に移動する場合、データベース管理者は、新しい場所を指すように、ディレクトリ別名を更新する必要があります。
ディレクトリ別名はユーザー・モードまたは表モード・エクスポートには含まれません。したがって、ディレクトリ別名を使用する前に、ディレクトリ別名をターゲット・システム上に作成しておく必要があります。
エクスポート・ファイルには、BFILE
列または属性によって参照される外部ファイルの内容は保持されません。かわりに、ファイルの名前とディレクトリ別名のみがエクスポート時にコピーされて、インポート時にリストアされます。データベースを移動し、元のディレクトリに含まれているファイルにアクセスできない場合、データベース管理者(DBA)は、指定されたファイルが含まれているディレクトリを、アクセス可能な新しい場所に移動する必要があります。
外部表の内容はエクスポート・ファイルに含まれません。かわりに、表の指定(名前、場所)のみが全体データベース・モードおよびユーザー・モード・エクスポートに含まれます。データベースを新しい場所に移動する場合は、外部データを手動で移動して表の指定を更新する必要があります。
どのエクスポート・モードでも、エクスポート・ユーティリティには、エクスポートする表で使用されるオブジェクトの型定義に関する情報が含まれます。ターゲット・システム上のオブジェクト型とエクスポート・ファイルに含まれているオブジェクトの状態との間に一貫性があるかどうかを確認するには、オブジェクト名、オブジェクト識別子、オブジェクト・ジオメトリなどの情報が必要です。これにより、表に必要なオブジェクト型が、同じオブジェクト識別子でインポート時に作成されます。
ただし、エクスポート・ユーティリティを実行するユーザーが、対象のオブジェクト型に対する実行権限を持っていない場合、表モード、ユーザー・モード、表領域モードでは、表に必要な完全オブジェクト定義がエクスポート・ファイルに含まれません。この場合、その型の存在確認に必要な情報のみが、同じオブジェクト識別子およびジオメトリでインポート・ターゲット・システム上に書き込まれます。
ユーザーは、DBAとともに適切な型定義を作成するか、またはDBAが実行した全体データベース・モード・エクスポートまたはユーザー・モード・エクスポートからそれらの型定義をインポートすることによって、適切なデータ型がターゲット・システムに存在するようにする必要があります。
すべてのオブジェクト型定義を保持するには、全体データベース・モード・エクスポートを定期的に実行することが重要です。また、異なるスキーマのオブジェクト型定義を使用する場合、DBAは、該当するユーザーのユーザー・モード・エクスポートを実行する必要があります。たとえば、ユーザーscott
に属しているtable1
に、blake
の型type1
に存在する列が含まれている場合、表に必要な型定義を保持するには、blake
とscott
の両方のユーザー・モード・エクスポートを実行する必要があります。
キューは表上で実装されます。キューのエクスポートおよびインポートは、基礎となるキュー表と関連のディクショナリ表のエクスポートおよびインポートによって構成されます。キューのエクスポートおよびインポートは、キュー表単位のレベルでのみ実行できます。
キュー表をエクスポートすると、表定義情報とキュー・データの両方がエクスポートされます。キュー表データと表定義がエクスポートされるため、ユーザーは、キュー表データのインポート時に、アプリケーション・レベル・データの整合性のメンテナンスを行います。
関連項目:
『Oracle Databaseアドバンスト・キューイング・ユーザーズ・ガイド』
シノニムおよび別のオブジェクトとして使用される名前を参照するコンパイル済オブジェクトをエクスポートするときは、注意する必要があります。これらのオブジェクトのエクスポートおよびインポートを実行すると、再コンパイルが施行されて、オブジェクト定義が変更されることがあります。
この問題について、次の例に示します。
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
トリガーを再確立しようとすると、エラーが発生します。
対応するDBMS_JAVA
パッケージがないとき、またはJavaがロードされないか、正しくロードされないときに、エクスポート操作でDBMS_JAVA
という名前のシノニムをエクスポートしようとすると、エクスポートが正常に完了されないまま終了します。生成されるエラー・メッセージには、EXP-00008、ORA-00904、ORA-29516などが含まれます。
Javaが有効化されている場合、エクスポートを再実行する前にDBMS_JAVA
シノニムとDBMS_JAVA
パッケージの両方が作成されて有効になっていることを確認してください。
Javaが有効化されていない場合は、エクスポートを再実行する前にJava関連オブジェクトを削除します。
ファイングレイン・アクセス・コントロール・ポリシーを使用可能にして、表をエクスポートできます。その場合は、次の点を考慮してください。
ファイングレイン・アクセス・コントロール・ポリシーが使用可能な表を含むエクスポート・ファイルをインポートするユーザーは、適切な権限(特にDBMS_RLS
パッケージに対するEXECUTE
権限。表のセキュリティ・ポリシーを回復するため)を持っている必要があります。適切な権限を持っていないユーザーが、ファイングレイン・アクセス・ポリシーが使用可能な表をエクスポートしようとすると、エクスポート実行者が読取り権限を持つ行のみがエクスポートされます。
SELECT
文に対してファイングレイン・アクセス・コントロールを使用可能にすると、従来型パス・エクスポートでは表全体をエクスポートできない場合があります。これは、ファイングレイン・アクセスでは問合せが再作成される可能性があるためです。
ファイングレイン・アクセス・コントロールが設定されている表上でダイレクト・パス・エクスポートを実行できるのは、ユーザーSYS、EXP_FULL_DATABASE
ロールが使用可能なユーザー、またはEXEMPT ACCESS POLICY
を付与されているユーザーのみです。