| Oracle Databaseユーティリティ 11g リリース1(11.1) E05768-02 |
|
この章では、それぞれexpおよびimpコマンドで起動するオリジナルのエクスポート・ユーティリティおよびインポート・ユーティリティの使用方法について説明します。これらのユーティリティは、Oracle Database 10g から使用可能となるOracle Data Pump ExportおよびImportユーティリティと区別するために、オリジナルのエクスポート・ユーティリティおよびインポート・ユーティリティと呼びます。データ・ポンプのエクスポートおよびインポート・ユーティリティは、それぞれexpdpおよびimpdpコマンドで起動します。
この章の内容は、次のとおりです。
エクスポート・ユーティリティおよびインポート・ユーティリティを使用すると、異なるハードウェア構成およびソフトウェア構成のプラットフォーム上にあるOracle Database間で、データ・オブジェクトの転送が簡単にできます。
Oracle Databaseに対してエクスポートを実行すると、まずオブジェクト(表など)が抽出され、次にそれに関連するオブジェクト(索引、コメント、権限など)が抽出されます。抽出されたデータは、エクスポート・ファイルに書き込まれます。インポート・ユーティリティは、ダンプ・ファイルからオブジェクトの定義および表データを読み込みます。
エクスポート・ファイルは、通常、ディスクまたはテープにあるバイナリ形式のOracleダンプ・ファイルです。ダンプ・ファイルは、FTPを使用して別サイトに転送、または物理的に移送(テープの場合)できます。そのため、インポート・ユーティリティでエクスポート・ファイルを使用することで、ネットワークで接続されていないシステム上のデータベース間でデータを転送できます。また、標準のバックアップ手順以外のバックアップとしても使用できます。
エクスポート・ダンプ・ファイルは、Oracleのインポート・ユーティリティを使用した場合のみ読取りが可能です。ダンプ・ファイルの作成に使用したエクスポート・ユーティリティより前のバージョンのインポート・ユーティリティは使用できません。
また、実際にインポートを実行せずにエクスポート・ファイルの内容を表示することもできます。この場合は、インポート・ユーティリティのSHOWパラメータを使用します。詳細は、「SHOW」を参照してください。
ASCII固定形式ファイルまたは区切りファイルからデータをロードするには、SQL*Loaderユーティリティを使用します。
|
参照
|
エクスポート・ユーティリティおよびインポート・ユーティリティを使用する前に、次のことを行う必要があります。
エクスポート・ユーティリティおよびインポート・ユーティリティを使用するには、データベースを作成するかまたはOracle Database 10g へ移行した後で、スクリプトcatexp.sqlまたは(catexp.sqlを実行する)catalog.sqlを実行する必要があります。
データベースに対して、catexp.sqlまたはcatalog.sqlを実行するのは1回のみです。スクリプトを実行すると、次の処理が行われ、データベースはエクスポートおよびインポート操作に備えて調整されます。
EXP_FULL_DATABASEロールの作成
EXP_FULL_DATABASEおよびIMP_FULL_DATABASEロールへのすべての必要な権限の割当て
DBAロールへのEXP_FULL_DATABASEおよびIMP_FULL_DATABASEの割当て
catexp.sqlのバージョンの記録
エクスポートを実行する前に、エクスポート・ファイルの書込み先であるディスク上またはテープ上に、十分な記憶領域があることを確認してください。十分な領域がない場合は、書込み失敗というエラーでエクスポートの処理が中止されます。
表サイズを使用して、必要な最大容量を見積もることができます。表サイズは、Oracleデータ・ディクショナリのUSER_SEGMENTSビューで参照できます。次の問合せを行うと、すべての表に関するディスクの使用状況が表示されます。
SELECT SUM(BYTES) FROM USER_SEGMENTS WHERE SEGMENT_TYPE='TABLE';
問合せの結果には、LOB(ラージ・オブジェクト)列、VARRAY列またはパーティション表に格納されているデータに使用されているディスク領域は含まれません。
エクスポート・ユーティリティおよびインポート・ユーティリティを使用するには、Oracle Databaseに対するCREATE SESSION権限が必要です。この権限は、データベースの作成時に設定されるCONNECTロールに含まれます。別のユーザーが所有する表をエクスポートする場合は、EXP_FULL_DATABASEロールを使用可能にしておく必要があります。このロールは、すべてのデータベース管理者(DBA)に付与されています。
EXP_FULL_DATABASEロールに含まれるシステム権限がない場合、別のユーザーのスキーマに格納されているオブジェクトをエクスポートすることはできません。シノニムを作成しても、別のユーザーのスキーマの表はエクスポートできません。
多数のシステム・スキーマは、ユーザー・スキーマではないため、エクスポートできません。システム・スキーマには、Oracleが管理するデータおよびメタデータが含まれています。エクスポートされないスキーマの例としては、SYS、ORDSYS、MDSYSなどがあります。
他のユーザーが作成したエクスポート・ファイルをインポートすることもできます。ただし、EXP_FULL_DATABASEロールを所有するユーザーが作成したエクスポート・ファイルをインポートするには、IMP_FULL_DATABASEロールが必要です。通常、データベース管理者(DBA)にはこれらの両方のロールが割り当てられています。
次のいずれかの方法を使用して、エクスポート・ユーティリティおよびインポート・ユーティリティの起動およびパラメータの指定ができます。
これらのいずれかの方法を使用する前に、使用可能なパラメータについての説明を必ず読んでください。「エクスポート・パラメータ」および「インポート・パラメータ」を参照してください。
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=nはPARFILE=params.datの後にあるため、パラメータ・ファイルに指定されているINDEXESパラメータの値は、INDEXES=nによって上書きされます。
|
参照:
|
プロンプトで各パラメータの値を入力する場合は、コマンドラインでexpまたはimpのいずれかを指定するだけです。ユーザー名とパスワードを入力するように要求されます。
その後、一般的に使用されるパラメータが表示されます。デフォルト値を受け入れるか(示された場合)、または異なる値を入力できます。コマンドライン対話方式では、すべての機能に関してプロンプトが表示されるわけではありません。また、コマンドライン対話方式は下位互換用のみに提供されています。対話方式のインタフェースを使用する場合は、Oracle Enterprise Managerのエクスポートまたはインポート・ウィザードの使用をお薦めします。
対話方式を使用する場合は、次のことに注意してください。
たとえば、特権ユーザーであるbethが表モードでエクスポートを実行している場合、他のユーザーのスキーマが指定されるまでは、すべての表はbethのスキーマにあると判断されます。他のユーザーのスキーマに属する表をエクスポートできるのは、特権ユーザー(EXP_FULL_DATABASEロールを持つユーザー)のみです。
エクスポート・ユーティリティおよびインポート・ユーティリティでは、オンライン・ヘルプが提供されます。エクスポート・ユーティリティのヘルプを起動するにはコマンドラインにexp help=yを入力します。インポート・ユーティリティのヘルプを起動するにはimp help=yを入力します。
表20-1に、自分のスキーマにオブジェクトをインポートするために必要な権限を示します。これらのすべての権限は、あらかじめRESOURCEロールに含まれています。
他のユーザーに付与されている権限をインポートするには、インポートを開始したユーザーがそのオブジェクトの所有者であるか、With Grant Option付きのオブジェクト権限を所有している必要があります。表20-2に、権限がターゲット・システムで有効となるために必要な条件を示します。
| 権限 | 条件 |
|---|---|
|
オブジェクト権限 |
ユーザーが
|
|
システム権限 |
ユーザーが |
オブジェクトを他のユーザーのスキーマにインポートする場合は、IMP_FULL_DATABASEロールを使用可能にしておく必要があります。
システム・オブジェクトを全データベース・エクスポート・ファイルからインポートする場合は、IMP_FULL_DATABASEロールを使用可能にする必要があります。エクスポート・ファイルが全体エクスポートの場合にパラメータFULLを指定すると、次のシステム・オブジェクトがインポート対象に含まれます。
エクスポート・ユーティリティおよびインポート・ユーティリティを使用してデータを処理する場合、次の制限が適用されます。
RELYキーワードを使用して変更された制約は、エクスポートされるとRELY属性が失われます。
表オブジェクトは、エクスポート・ファイルから読み込まれたとおりにインポートされます。エクスポート・ファイルには、次の順序でオブジェクトが格納されています。
インポートの順序は次のとおりです。まず、新しい表が作成されます。次にデータがインポートされ、索引が作成されます。その後トリガーがインポートされ、整合性制約が新しい表で使用可能になり、ビットマップ索引、ファンクション索引またはドメイン索引(あるいはそれらのすべて)が作成されます。このようにインポートされると、表のインポート順序が原因でデータが拒否されることがなくなります。また、同じデータについて、トリガーが重複して2回(最初の挿入時に1回、インポート中に1回)起動することもなくなります。
たとえば、emp表にdept表に対する参照整合性制約が指定されて、emp表が最初にインポートされた場合、この制約が使用可能になっていると、まだdeptにインポートされていない部門を参照するすべてのemp行が拒否されます。
データが既存の表にインポートされた場合でも、インポートの順序によっては参照整合性のエラーが発生することがあります。前述の状況で、emp表がすでに存在していて、参照整合性制約が使用可能になっている場合、多くの行が拒否されることがあります。
その表自体への参照整合性制約がある場合にも、同様の状況が発生します。たとえば、emp表においてscottの管理者がdrakeで、drakeの行がまだロードされていない場合、インポートが終了した場合には有効になるとしても、scottの行はロードされません。
この項では、既存の表にデータをインポートする場合に考慮すべき点について説明します。
エクスポート・ファイルから表にデータをインポートする前に手動で表を作成する場合は、以前使用した表定義を使用するか、互換性のある形式を使用して表を作成します。たとえば、列幅の増加および列順序の変更はできますが、次のことはできません。
通常のインポートの順序では、参照制約はすべての表がインポートされた後にインポートされます。この順序でインポートすることによって、まだインポートされていないデータに対する参照整合性制約が存在する場合に発生するエラーを回避できます。
データが既存の表にロードされる場合に、このようなエラーが発生することがあります。たとえば、表empでmgr列に参照整合性制約が定義されており、その制約によって表emp内のマネージャ番号が検証される場合、マネージャの行がインポートされていない時点では、従業員の行が基準を満たしていても、参照整合性制約の違反になることがあります。
このようなエラーが発生すると、エラー・メッセージが生成され、失敗した行をバイパスして、引き続き他の行が表にインポートされます。制約を手動で使用禁止にすると、このエラーを回避できます。
複数の表にまたがって参照制約が存在すると、問題になることがあります。たとえば、emp表の順序がエクスポート・ファイル内でdept表より先であるにもかかわらず、emp表からdept表へ参照チェックが行われると、参照制約違反のため、emp表のいくつかの行がインポートされないことがあります。
このようなエラーが発生しないようにするには、データを既存の表にインポートするときに、参照整合性制約を使用禁止にします。
インポート後に制約が再び使用可能にされると、表全体がチェックされますが、大きな表の場合はチェックに時間がかかることがあります。表のチェックにかかる時間が長すぎる場合、インポートを手動で順序付ける方が効率的なこともあります。
そのためには、エクスポート・ファイルからのインポートを1回ではなく複数回に分けて実行します。まず、参照チェックのターゲットである表をインポートします。次に、これらの表を参照する表をインポートします。表が循環的に相互参照している場合、および表がその表自体を参照している場合を除き、この方法は有効です。
特定のスキーマに対するDDLイベントまたはデータベースに対するDDL関連イベントで実行するように定義されているトリガーは、システム・トリガーです。これらのトリガーは、特定のインポート操作に悪い影響を与える場合があります。たとえば、表などのデータベース・オブジェクトを正常に再作成できない場合があります。これによって、トリガーが原因で問題が発生したということがわからないエラーが返されます。
データベース管理者およびシステム・トリガーを作成するユーザーは、このようなトリガーによって、ユーザーが、権限を持つデータベースの操作を実行できなくなることがないように確認する必要があります。システム・トリガーをテストするには、次の手順に従います。
エクスポート・ユーティリティおよびインポート・ユーティリティには、次の4種類の操作モードがあります。
EXP_FULL_DATABASEおよびIMP_FULL_DATABASEロールを所有するユーザーのみが使用できます。FULLパラメータを使用してこのモードを指定します。
TRANSPORT_TABLESPACEパラメータを使用してこのモードを指定します。
OWNERパラメータを使用します。インポート・ユーティリティでこのモードを指定するにはFROMUSERパラメータを使用します。
TABLESパラメータを使用してこのモードを指定します。
表20-3に、各モードでエクスポートおよびインポートされるオブジェクトのリストを示します。
IMP_FULL_DATABASEロールを持つユーザーは、これらのモードのいずれかを指定する必要があります。指定しない場合、インポートはエラーになります。IMP_FULL_DATABASEロールを持たないユーザーがこれらのモードをいずれも指定しない場合は、ユーザー・レベルのインポートが実行されます。
従来型パス・エクスポートまたはダイレクト・パス・エクスポートは、表領域モード以外のモードで使用できます。従来型パス・エクスポートとダイレクト・パス・エクスポートの違いの詳細は、「従来型パス・エクスポートおよびダイレクト・パス・エクスポート」を参照してください。
| オブジェクト | 表モード | ユーザー・モード | 全データベース・モード | 表領域モード |
|---|---|---|---|---|
|
分析クラスタ |
なし |
あり |
あり |
なし |
|
分析表/統計 |
あり |
あり |
あり |
あり |
|
アプリケーション・コンテキスト |
なし |
なし |
あり |
なし |
|
監査情報 |
あり |
あり |
あり |
なし |
|
Bツリー索引、ビットマップ索引、ドメイン・ファンクション索引 |
あり1 |
あり |
あり |
あり |
|
クラスタ定義 |
なし |
あり |
あり |
あり |
|
列コメントおよび表コメント |
あり |
あり |
あり |
あり |
|
データベース・リンク |
なし |
あり |
あり |
なし |
|
デフォルト・ロール |
なし |
なし |
あり |
なし |
|
ディメンション |
なし |
あり |
あり |
なし |
|
ディレクトリ別名 |
なし |
なし |
あり |
なし |
|
外部表(データなし) |
あり |
あり |
あり |
なし |
|
外部関数ライブラリ |
なし |
あり |
あり |
なし |
|
表の所有者以外のユーザーが所有する索引 |
あり(特権ユーザーのみ) |
あり |
あり |
あり |
|
索引タイプ |
なし |
あり |
あり |
なし |
|
JavaリソースおよびJavaクラス |
なし |
あり |
あり |
なし |
|
ジョブ・キュー |
なし |
あり |
あり |
なし |
|
ネストした表のデータ |
あり |
あり |
あり |
あり |
|
オブジェクト権限 |
あり(表および索引のみ) |
あり |
あり |
あり |
|
表で使用されるオブジェクト型定義 |
あり |
あり |
あり |
あり |
|
オブジェクト型 |
なし |
あり |
あり |
なし |
|
演算子 |
なし |
あり |
あり |
なし |
|
パスワード履歴 |
なし |
なし |
あり |
なし |
|
インスタンスの事後処理およびオブジェクト |
なし |
なし |
あり |
なし |
|
スキーマの事後プロシージャ処理およびオブジェクト |
なし |
あり |
あり |
なし |
|
表の事後処理 |
あり |
あり |
あり |
あり |
|
表の事後プロシージャ処理およびオブジェクト |
あり |
あり |
あり |
あり |
|
スキーマの事前プロシージャ・オブジェクトおよび処理 |
なし |
あり |
あり |
なし |
|
表の事前処理 |
あり |
あり |
あり |
あり |
|
表の事前プロシージャ処理 |
あり |
あり |
あり |
あり |
|
プライベート・シノニム |
なし |
あり |
あり |
なし |
|
プロシージャ・オブジェクト |
なし |
あり |
あり |
なし |
|
プロファイル |
なし |
なし |
あり |
なし |
|
パブリック・シノニム |
なし |
なし |
あり |
なし |
|
参照整合性制約 |
あり |
あり |
あり |
なし |
|
リフレッシュ・グループ |
なし |
あり |
あり |
なし |
|
リソース・コスト |
なし |
なし |
あり |
なし |
|
ロール権限 |
なし |
なし |
あり |
なし |
|
ロール |
なし |
なし |
あり |
なし |
|
ロールバック・セグメント定義 |
なし |
なし |
あり |
なし |
|
表のセキュリティ・ポリシー |
あり |
あり |
あり |
あり |
|
順序番号 |
なし |
あり |
あり |
なし |
|
スナップショット・ログ |
なし |
あり |
あり |
なし |
|
スナップショットおよびマテリアライズド・ビュー |
なし |
あり |
あり |
なし |
|
システム権限 |
なし |
なし |
あり |
なし |
|
表制約(主キー制約、一意制約、CHECK制約) |
あり |
あり |
あり |
あり |
|
表データ |
あり |
あり |
あり |
あり |
|
表定義 |
あり |
あり |
あり |
あり |
|
表領域定義 |
なし |
なし |
あり |
なし |
|
表領域割当て制限 |
なし |
なし |
あり |
なし |
|
トリガー |
あり |
あり2 |
あり3 |
あり |
|
他のユーザーが所有するトリガー |
あり(特権ユーザーのみ) |
なし |
なし |
なし |
|
ユーザー定義 |
なし |
なし |
あり |
なし |
|
ユーザー・プロキシ |
なし |
なし |
あり |
なし |
|
ユーザー・ビュー |
なし |
あり |
あり |
なし |
|
ユーザー・ストアド・プロシージャ、ユーザー・ストアド・パッケージおよびユーザー・ストアド・ファンクション |
なし |
あり |
あり |
なし |
表、パーティションおよびサブパーティションのエクスポートは、次のように実行できます。
どのモードの場合も、パーティション・データは、インポート時にパーティション単位またはサブパーティション単位で選択できる形式でエクスポートされます。
表レベル・エクスポートでは、パーティション表または非パーティション表は、索引およびその他の表に依存するオブジェクトとともに全体的にエクスポートされます。パーティション表の場合は、すべてのパーティションおよびサブパーティションもエクスポートされます。ダイレクト・パス・エクスポートおよび従来型パス・エクスポートの両方とも、この点は同じです。表レベル・エクスポートは、いずれのエクスポート・モードでも実行できます。
パーティション・レベル・エクスポートでは、表の1つ以上のパーティションまたはサブパーティションを指定してエクスポートできます。パーティション・レベル・エクスポートは、表モードでのみ実行できます。
表レベル・エクスポートおよびパーティション・レベル・エクスポートの指定方法の詳細は、「TABLES」を参照してください。
表、パーティションおよびサブパーティションのインポートは、次のように実行できます。
既存の表にデータをロードするときは、パラメータIGNORE=yを指定します。詳細は、「IGNORE」を参照してください。
表レベル・インポートでは、指定した各表に関して表のすべての行がインポートされます。表レベル・インポートの特長は次のとおりです。
TRANSPORT_TABLESPACESを除く)どのエクスポート・モードでエクスポートされた場合でも、表レベル・インポートを使用してエクスポートされたすべての表をインポートできます。
表が存在しない場合で、なおかつエクスポートされた表がパーティション表である場合は、表レベル・インポートによってパーティション表が作成されます。表が正常に作成されると、エクスポート・ファイルからすべてのソース・データが読み込まれ、ターゲット表に書き込まれます。インポート後、ターゲット表には、エクスポート・ファイル内のソース表に対応付けられたすべてのパーティションおよびサブパーティションに関するパーティション定義が格納されます。この処理によって、ソース・パーティションの物理属性および論理属性(パーティションの境界を含む)が、インポート時に維持されます。
パーティション・レベル・インポートを指定できるのは、表モードでインポートを実行する場合のみです。パーティション・レベル・インポートでは、エクスポート・ファイル内の特定のパーティションまたはサブパーティションを選択してデータをロードすることができます。パーティション・レベル・インポートを使用する場合は、次のガイドラインに注意してください。
ROWS=y(デフォルト)が指定されていて、表がインポート先のシステムに存在しない場合、表が作成され、すべての行が、ソース・パーティションまたはサブパーティションから、インポート先の表のパーティションまたはサブパーティションに挿入されます。
ROWS=y(デフォルト)およびIGNORE=yが指定されていて、対象となる表の表名がインポート前に存在している場合は、指定された表のパーティションまたはサブパーティションの行がすべて、同名の表に挿入されます。インポートでは、常に、ターゲット表の既存のパーティション化スキーマに従って行が格納されます。
ROWS=nが指定されている場合、データはターゲット表に挿入されず、エクスポート・ファイル中の表およびパーティションまたはサブパーティションに関連する他のオブジェクトに対する処理が、継続して行われます。
IGNORE=yを指定します。
コンポジット・パーティションのパーティション名を指定しない場合、コンポジット・パーティション内のすべてのサブパーティションが、ソースとして使用されます。
次の例では、パーティション名によって指定されたパーティションは、コンポジット・パーティションです。すべてのサブパーティションがインポートされます。
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以外の名前のパーティションに挿入することもできます。
この項では、エクスポート・コマンドライン・パラメータについて説明します。
デフォルト: オペレーティング・システムによって異なります。このパラメータのデフォルト値については、ご使用のオペレーティング・システム固有のOracleマニュアルを参照してください。
行のフェッチに使用されるバッファのサイズをバイト単位で指定します。これにより、エクスポート・ユーティリティによってフェッチされる配列内の最大行数が決まります。バッファ・サイズの計算には、次の計算式を使用してください。
buffer_size = rows_in_array * maximum_row_size
0(ゼロ)を指定すると、1回に1行のみフェッチされます。
LOB、LONG、BFILE、REF、ROWID、LOGICAL ROWIDまたはDATE型の列が含まれる表は、1回に1行ずつフェッチされます。
ここでは、バッファ・サイズの計算方法の例を示します。
次の表を作成します。
CREATE TABLE sample (name varchar(30), weight number);
name列の最大サイズは30で、インジケータ用に2バイトをプラスします。weight列の最大サイズは22(Oracle のNUMBERデータ型の内部表現のサイズ)で、インジケータ用に2バイトをプラスします。
したがって、行の最大サイズは56(30+2+22+2)になります。
100行単位で配列の操作を実行するには、バッファ・サイズを5600に指定する必要があります。
デフォルト: y
エクスポート・ユーティリティおよびインポート・ユーティリティによる、表データの初期エクステントの管理方法を指定します。
デフォルトのCOMPRESS=yを指定すると、インポート時に表データを1つの初期エクステントに整理統合するためのフラグが付きます。エクステント・サイズが大きい場合(たとえば、PCTINCREASEパラメータが指定されている場合)、データの格納に必要以上の領域が割り当てられます。
COMPRESS=nを指定すると、エクスポート・ユーティリティは、初期エクステントのサイズおよび第2エクステントのサイズが指定されている現行の記憶域パラメータを使用します。パラメータの値は、CREATE TABLE文またはALTER TABLE文で指定された値、あるいはデータベース・システムによって変更された値になります。たとえば、表が大きくなった場合、およびPCTINCREASEパラメータに0(ゼロ)以外の値が指定されている場合は、第2エクステントのサイズが変更されることがあります。
COMPRESSパラメータはビットマップ表領域では機能しません。
デフォルト: n
エクスポート・ユーティリティによって読み込まれたデータのある時点における一貫性を維持し、expコマンドの実行中に変更されないようにするために、SET TRANSACTION READ ONLY文を使用するかどうかを指定します。エクスポート開始後に、他のアプリケーションによってそのデータベースが更新されることがわかっている場合は、CONSISTENT=yを指定してください。
CONSISTENT=nを使用すると、通常、各表は1つのトランザクションでエクスポートされます。ただし、表の内部にネストした表がある場合は、外部表および各内部表は別のトランザクションでエクスポートされます。パーティション表の場合は、パーティションごとに別のトランザクションでエクスポートされます。
したがって、ネストした表やパーティション表が別のアプリケーションによって更新中の場合、エクスポートされるデータが一貫性を維持できないことがあります。このような危険性をできるだけ低くするために、これらの表のエクスポートは、更新中でないときに実行してください。
表20-4に、2人のユーザーによるイベントの順序を示します。user1が表のパーティションをエクスポートし、user2が同じ表のデータを更新するとします。
| 時系列 | user1 | user2 |
|---|---|---|
|
1 |
TAB:P1のエクスポートを開始 |
アクティビティなし |
|
2 |
アクティビティなし |
TAB:P2を更新 |
|
3 |
TAB:P1のエクスポートを終了 |
アクティビティなし |
|
4 |
TAB:P2をエクスポート |
アクティビティなし |
エクスポートでCONSISTENT=yを指定すると、user2によって実行された更新はエクスポート・ファイルには書き込まれません。
エクスポートでCONSISTENT=nを指定すると、TAB:P1に対する更新はエクスポート・ファイルには書き込まれません。ただし、TAB:P2に対する更新はTAB:P2のエクスポート開始前にコミットされているため、更新がエクスポート・ファイルに書き込まれます。その結果、user2のトランザクションは部分的にのみエクスポート・ファイルに書き込まれるため、エクスポート・ファイルではデータの一貫性を維持できません。
CONSISTENT=yを指定しているときに更新量が多いと、ロールバック・セグメントの使用量が大きくなります。また、ロールバック・セグメントをスキャンしてコミットされていないトランザクションを探すため、各表のエクスポートにかかる時間が長くなります。
CONSISTENT=yを指定する場合は、次のことに注意してください。
SYSとして接続しているとき、またはAS SYSDBAを使用しているとき(あるいはその両方)に実行するエクスポートでは、
CONSISTENT=yはサポートされません。
SYSスキーマを使用する必要があります。この場合、CONSISTENT=yを指定しても無視されます。CONSISTENT=yを選択したエクスポートの処理中は、メタデータを変更しないことをお薦めします。
emp表およびdept表をまとめてエクスポートした後、残りの表をエクスポートします。
コミット済トランザクションが上書きされた後で、データベースの読取り一貫性ビューを維持するために、上書きによって消去された情報が必要になった場合、「スナップショットが古すぎます」というエラーが発生します。
このエラーを回避するには、読取り一貫性エクスポートにかかる時間をできるだけ短くします(エクスポートするオブジェクト数を制限し、可能な場合はデータベースのトランザクション率を低くします)。また、ロールバック・セグメントをできるだけ大きく設定しておきます。
デフォルト: y
表制約をエクスポートするかどうかを指定します。
デフォルト: n
ダイレクト・パス・エクスポートの使用を指定します。
DIRECT=yを指定すると、エクスポート・ユーティリティが、(バッファを調べ)SQLコマンド処理レイヤーをバイパスしてデータを直接読み込み、データを抽出します。この方法は、従来型パス・エクスポートに比べて非常に高速です。
セキュリティおよびパフォーマンスに関する考慮点を含むダイレクト・パス・エクスポートの詳細は、「ダイレクト・パス・エクスポートの起動」を参照してください。
デフォルト: 0(ゼロ)
n行分のエクスポートを1つのピリオドで示すプログレス・バーの表示を指定します。たとえば、FEEDBACK=10を指定すると、10行分のエクスポートが終了するたびにピリオドが1つ表示されます。FEEDBACK値は、エクスポートされるすべての表に適用されるため、各表に対して個別に設定できません。
デフォルト: expdat.dmp
エクスポート・ダンプ・ファイル名を指定します。デフォルトの拡張子は.dmpですが、別の拡張子を指定できます。エクスポート・ユーティリティは、複数ファイルのエクスポートをサポートしているため、複数のファイル名を指定できます。次に例を示します。
exp scott/tiger FILE = dat1.dmp, dat2.dmp, dat3.dmp FILESIZE=2048
FILESIZEに指定した最大値までエクスポートが実行されると、現行のファイルへの書込みは中止され、FILEパラメータで次のファイル名として指定した名前のエクスポート・ファイルがオープンされます。エクスポートが完了するまで、またはFILESIZEの最大値に再度到達するまでエクスポートが続行されます。指定したエクスポート・ファイル名が十分でないためにエクスポートを完了できない場合は、ファイル名を追加するためのプロンプトが表示されます。
デフォルト: データは、表20-5に示す最大サイズに到達するまで、1つのファイルに書き込まれます。
エクスポート・ユーティリティでは、複数のエクスポート・ファイルへの書込みがサポートされており、インポート・ユーティリティでは、複数のエクスポート・ファイルからの読取りが可能です。FILESIZEパラメータの値(バイト制限)を指定すると、エクスポート・ユーティリティによって、それぞれのダンプ・ファイルに指定したバイト数のみ書き込まれます。
エクスポートで書き込まれるデータの量がFILESIZEに指定した最大値を超えると、次のエクスポート・ファイルの名前がFILEパラメータで指定されるか(「FILE」を参照)、またはFILEパラメータで指定したすべての名前が使用されている場合は、新しいエクスポート・ファイル名を指定するためのプロンプトが表示されます。FILESIZEの値を指定しない場合(0の指定は、FILESIZEの指定なしを意味する)は、FILEパラメータで指定したファイルの数にかかわらず、1つのファイルのみに書き込まれます。
FILESIZEパラメータの最大値は、64ビットで格納できる最大値と同じです。
表20-5 に、ご使用のオペレーティング・システムおよびOracle Databaseのリリースによって異なるダンプ・ファイルの最大サイズを示します。
| オペレーティング・システム | 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と同じです)。
デフォルト: なし
エクスポートで使用されるシステム変更番号(SCN)を指定して、フラッシュバックを使用可能にします。エクスポート・オペレーションは、この指定されたSCNにおけるデータの一貫性を維持したまま実行されます。
次に、SCNの指定例を示します。エクスポートを実行すると、SCN 3482971におけるデータの一貫性が維持されます。
> exp FILE=exp.dmp FLASHBACK_SCN=3482971
デフォルト: なし
タイムスタンプを指定できます。エクスポート・ユーティリティによって、指定されたタイムスタンプに一番近い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'"
デフォルト: n
エクスポートが、全データベース・モードのエクスポートであること(データベース全体のエクスポート)を示します。全データベース・モードでエクスポートするには、FULL=yを指定します。このモードでのエクスポートには、EXP_FULL_DATABASEロールが必要です。
全データベースのエクスポートおよびインポートは、データベースの複製およびクリーンアップに有効です。ただし、問題が発生しないように、次の点に注意する必要があります。
SYSが所有するトリガーはエクスポートされません。SYSトリガーは、全体インポートの前後のいずれかに手動で再作成する必要があります。SYSトリガーによってインポートの進行を妨げるような処理が定義されないように、SYSトリガーはインポートの後に再作成することをお薦めします。
SYSが所有するパスワード確認機能を追加するなど)は、事前に手動でその機能を作成し、インポートの完了後にターゲット・データベースでデフォルトのプロファイルを変更する必要があります。
この情報で、表領域がすでに作成され、インポートが正常に完了したことを確認できます。
SYSTEMに余分なロールバック・セグメントを作成し、初期化パラメータ・ファイル(init.ora)で使用可能にしてからインポートを開始します。
デフォルト: y
オブジェクト権限をエクスポートするかどうかを指定します。エクスポートされるオブジェクト権限は、エクスポート・モードが全データベース・モードかユーザー・モードかによって異なります。全データベース・モードでは、表に対するすべての権限がエクスポートされます。一方、ユーザー・モードでは、表の所有者が付与した権限のみがエクスポートされます。システム権限は常にエクスポートされます。
デフォルト: なし
エクスポート・パラメータの説明を表示します。ヘルプを起動するには、コマンドラインでexp help=yを入力します。
デフォルト: y
索引をエクスポートするかどうかを指定します。
デフォルト: なし
情報メッセージおよびエラー・メッセージを受け取るファイル名(export.logなど)を指定します。
このパラメータを指定すると、メッセージはログ・ファイルに記録されるとともに端末画面に表示されます。
デフォルト: n
エクスポート・ユーティリティによって読み込まれたデータのある時点における一貫性を維持し、エクスポート中に変更されないようにするために、SET TRANSACTION READ ONLY文を使用するかどうかを指定します。OBJECT_CONSISTENTをyに設定した場合、オブジェクトがパーティション化されている場合でも、読取り専用トランザクションに各オブジェクトをエクスポートできます。これに対し、CONSISTENTパラメータを使用する場合、読取り専用トランザクションは1つのみです。
デフォルト: なし
ユーザー・モード・エクスポートでエクスポートすることを示します。エクスポートの対象となるオブジェクトを所有するユーザー名のリストを表示します。データベース管理者(DBA)ユーザーがエクスポートを起動している場合は、複数のユーザーがリストされる場合があります。
ユーザー・モードのエクスポートは、1人以上のデータベース・ユーザーのバックアップに使用可能です。たとえば、削除されたユーザーの表を、DBAが一定の期間バックアップを取る場合などに有効です。ユーザー・モードは、ユーザーが自分自身のデータのバックアップを取る場合や、ある所有者のオブジェクトを別の所有者に移す場合にも適しています。
デフォルト: なし
エクスポート・パラメータのリストが格納されているファイルのファイル名を指定します。パラメータ・ファイルの使用方法の詳細は、「エクスポート・ユーティリティおよびインポート・ユーティリティの起動」を参照してください。
デフォルト: なし
表モード・エクスポートの実行時に、一連の表から行のサブセットを選択できるようにします。QUERYパラメータの値は、TABLESパラメータにリストされたすべての表(または表パーティション)に適用されるSQLのSELECT文のWHERE句を含む文字列です。
たとえば、ユーザーscottが、職種がSALESMANで、給与が1600より少ない従業員のみをエクスポートする場合は、次のように指定します(この例はUNIXベースの場合)。
exp scott/tiger TABLES=emp QUERY=\"WHERE job=\'SALESMAN\' and sal \<1600\"
この問合せの実行時、エクスポート・ユーティリティによって、次のように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パラメータは、全データベース・モード、ユーザー・モードまたは表領域モードのエクスポートでは指定できません。
QUERYパラメータは、すべての指定した表に適用される必要があります。
QUERYパラメータは、ダイレクト・パス・エクスポート(DIRECT=y)では指定できません。
QUERYパラメータは、内部にネストした表を含む表では指定できません。
QUERYエクスポートの結果かどうかを、エクスポート・ファイルの内容から判断することはできません。
デフォルト: オペレーティング・システムによって異なります。
ファイル・レコードの長さをバイト単位で指定します。RECORDLENGTHパラメータは、異なるデフォルト値を使用する別のオペレーティング・システムにエクスポート・ファイルを転送する場合に指定する必要があります。
このパラメータを指定しない場合は、ご使用のプラットフォーム固有のバッファ・サイズのデフォルト値が採用されます。
RECORDLENGTHは、ご使用のシステムのバッファ・サイズの値以上の任意の値に設定できます(最大値は64KB)。RECORDLENGTHパラメータの変更により影響を受けるのは、ディスクに書き出す前に累積されるデータのサイズのみです。オペレーティング・システム・ファイルのブロック・サイズには影響しません。
デフォルト: n
RESUMABLEパラメータを使用して、再開可能な領域割当てを有効または無効にします。このパラメータはデフォルトでは無効なため、関連するRESUMABLE_NAMEパラメータおよびRESUMABLE_TIMEOUTパラメータを使用するには、RESUMABLE=yに設定する必要があります。
デフォルト: 'User USERNAME (USERID), Session SESSIONID, Instance INSTANCEID'
再開可能な文を指定します。この値はユーザー定義のテキスト文字列で、USER_RESUMABLEまたはDBA_RESUMABLEビューに挿入して、一時停止されている特定の再開可能な文を識別できます。
RESUMABLEパラメータをyに設定して、再開可能な領域割当てを有効にしないかぎり、このパラメータは無視されます。
デフォルト: 7200秒(2時間)
エラー修正に必要な時間を指定します。タイムアウト時間内にエラーを修正できない場合は、文の実行が終了します。
RESUMABLEパラメータをyに設定して、再開可能な領域割当てを有効にしないかぎり、このパラメータは無視されます。
デフォルト: y
表のデータ行をエクスポートするかどうかを指定します。
デフォルト: ESTIMATE
エクスポートされたデータのインポート時に生成されるデータベース・オプティマイザ統計のタイプを指定します。オプションは、ESTIMATE、COMPUTEおよびNONEです。インポート・パラメータの詳細は、「STATISTICS」および「統計情報のインポート」を参照してください。
エクスポート・ユーティリティによって、ANALYZE文および計算済統計情報がエクスポート・ファイルに書き込まれ、統計情報が再生成される場合もあります。
ただし、システムによって生成された名前を持つ列が表に含まれる場合、計算済オプティマイザ統計は、エクスポート時に使用されません。
次の場合は、エクスポート時に、計算済オプティマイザ統計に問題ありのフラグが付きます。
NCHARキャラクタ・セットが、サーバー・キャラクタ・セットまたはサーバーのNCHARと一致しない場合
QUERY句を指定した場合
デフォルト: なし
表モード・エクスポートでエクスポートすることを指定します。エクスポートの対象となる表名、パーティション名およびサブパーティション名をリストとして指定します。表名を指定するときに、次の項目を指定できます。
schemanameには、表またはパーティションのエクスポート元のユーザーのスキーマ名を指定します。スキーマ名を指定しない場合、エクスポート実行者のスキーマがデフォルトで使用されます。ORDSYS、MDSYS、CTXSYS、LBACSYSおよびORDPLUGINSなどのシステム・スキーマ名は、エクスポート・ユーティリティによって予約されています。
tablename には、エクスポートされる表名を指定します。表レベル・エクスポートでは、パーティション表または非パーティション表全体をエクスポートできます。リストにパーティション表が含まれる場合、パーティション名を指定しないと、すべてのパーティションおよびサブパーティションがエクスポートされます。表名は、任意の数の「%」パターン一致文字を含むことができます。各「%」パターン一致文字は、データベースの表オブジェクトと表名の0個以上の文字を一致させます。関連するスキーマにある、指定されたパターンと一致するすべての表は、それぞれの表名がパラメータで明示的に指定された場合と同様に、選択されてエクスポートされます。
partition_name は、エクスポートがパーティション・レベル・エクスポートであることを示します。パーティション・レベル・エクスポートでは、表の1つ以上のパーティションまたはサブパーティションを指定してエクスポートできます。
構文の形式は、次のとおりです。
schemaname.tablename:partition_name schemaname.tablename:subpartition_name
tablename:partition_nameを使用する場合、指定された表はパーティション化される必要があり、partition_nameはパーティションまたはサブパーティションのうちのいずれかの名前である必要があります。指定された表がパーティション化されていない場合、partition_nameは無視され、表全体がエクスポートされます。
パーティション・レベル・エクスポートの例は、「パーティション・レベル・エクスポートでのエクスポート・セッションの例」を参照してください。
表名には次の制限があります。
ただし、オペレーティング・システムによっては、コマンドラインの引用符自体をエスケープする必要がある場合があります。次に、異なるエクスポート・モードで大/小文字の区別を保持する方法を示します。
たとえば、パラメータ・ファイルに次のコマンドラインが記述されている場合、emp#の右側はすべてコメントとして解釈されるため、表deptおよびmydataはエクスポートされません。
TABLES=(emp#, dept, mydata)
ただし、次の例では、emp#が引用符で囲まれているため、3つの表はすべてエクスポートされます。
TABLES=("emp#", dept, mydata)
デフォルト: なし
TABLESPACESパラメータを使用して、表領域のすべての表がエクスポート・ダンプ・ファイルへエクスポートされるように指定します。これには、表領域のリストに含まれるすべての表およびパーティションを持つすべての表が含まれます。索引は、格納されている場所にかかわらず、表とともにエクスポートされます。
TABLESPACESを使用して表領域のすべての表をエクスポートするには、EXP_FULL_DATABASEロールが必要です。
TABLESPACESをTRANSPORT_TABLESPACE=yと組み合せて使用すると、表領域の一部のリストをデータベースからエクスポート・ファイルへエクスポートするように指定できます。
デフォルト: n
yを指定すると、トランスポータブル表領域のメタデータをエクスポートできるようになります。
暗号化された列は、トランスポータブル表領域モードではサポートされていません。
デフォルト: y
トリガーをエクスポートするかどうかを指定します。
デフォルト: n
yを設定すると、エクスポート・ユーティリティによって、リカバリ・セット(リカバリの対象となる表領域のセット)にリカバリ・セット外のオブジェクト(またはその逆)に対する依存関係(特にINポインタ)がないことが確認されます。
デフォルト: なし
エクスポートを実行するユーザーのユーザー名、パスワードおよびオプションの接続文字列を指定します。パスワードを指定しないと、入力するように要求されます。
ユーザーSYSとして接続する場合は、接続文字列にAS SYSDBAも指定する必要があります。オペレーティング・システムによっては、AS SYSDBAを特殊文字列とみなし、その文字列全体を引用符で囲む必要があります。
デフォルト: なし
各テープ・ボリュームのエクスポート・ファイルに最大バイト数を指定します。
VOLSIZEパラメータの最大値は、ご使用のプラットフォーム上に64ビットで格納できる最大値と同じです。
VOLSIZEの値は、数字にKB(キロバイト数)を付けて指定できます。たとえば、VOLSIZE=2KBは、VOLSIZE=2048と同じです。同様に、MBはメガバイト(1024×1024)を、GBはギガバイト(1024の3乗)を表します。Bはバイトの省略です。この場合、最終的なファイル・サイズの算出に乗算は不要です(VOLSIZE=2048BはVOLSIZE=2048と同じ)。
この項では、インポート・コマンドライン・パラメータについて説明します。
デフォルト: オペレーティング・システムによって異なります。
BUFFERに指定された整数は、転送したデータ行を格納するバッファのバイト数です。
BUFFERによって、インポートで挿入される配列の行数が決定します。所定の行配列の挿入に必要なバッファ・サイズは、次のように計算できます。
buffer_size = rows_in_array * maximum_row_size
LOBが含まれている表およびLONG、BFILE、REF、ROWID、UROWIDまたはTIMESTAMPの列が含まれている表は、1回に1行ずつ挿入されます。バッファ・サイズは(LOBおよびLONG列の場合以外は)、行全体を格納できるだけの容量が必要です。バッファ・サイズが足りずに表の最長の行を格納できない場合、インポート・ユーティリティはさらに大きいサイズのバッファを割り当てようとします。
DATE列の場合は、バッファの大きさが十分であれば一度に複数の行が挿入されます。
デフォルト: n
配列を挿入するたびにコミットするかどうかを指定します。デフォルトでは、各表はロードされた後にのみコミットされ、エラーが発生した場合はロールバックを実行してから次のオブジェクトに進みます。
表にネストした表の列または属性が含まれている場合、ネストした表の内容は、それぞれ別の表としてインポートされます。したがって、ネストした表の内容は、常に、外部表をコミットしたトランザクションとは別のトランザクションとしてコミットされます。
パーティション表の場合にCOMMIT=nを指定すると、エクスポート・ファイルのそれぞれのパーティションおよびサブパーティションは、別のトランザクションとしてインポートされます。
LOB、LONG、BFILE、REF、ROWIDまたはUROWIDの列が含まれている表は、配列単位では挿入できません。COMMIT=yが指定されていると、各行の挿入後に表がコミットされます。
デフォルト: y
パッケージ、プロシージャおよびファンクションを、作成時にインポート・ユーティリティでコンパイルするかどうかを指定します。
COMPILE=nの場合、これらのユニットは最初の使用時にコンパイルされます。たとえば、ドメイン索引作成に使用されるパッケージは、ドメイン索引作成時にコンパイルされます。
デフォルト: y
表の制約をインポートするかどうかを指定します。デフォルトでは、制約をインポートします。制約をインポートしないようにするには、このパラメータ値をnに設定します。
IOTおよびオブジェクト表の主キー制約は、常にインポートされます。
デフォルト: なし
TRANSPORT_TABLESPACEにyを指定した場合、データベースに転送するデータ・ファイルを、このパラメータを使用して表示します。
デフォルト: n
データベースを構成している既存のデータ・ファイルを再利用するかどうかを指定します。DESTROY=yを指定してSQLのCREATE TABLESPACE文のdatafile句にREUSEオプションを付けることによって、元のデータベースのデータ・ファイルの内容を削除した後でこれらのファイルを再利用します。
エクスポート・ファイルには、各表領域で使用されるデータ・ファイル名が格納されています。DESTROY=yを指定し、(テストや他の目的で)同一システム上に2番目のデータベースを作成しようとすると、表領域の作成時に、元のデータベースのデータ・ファイルが上書きされます。このような場合、デフォルトのDESTROY=nを指定すると、表領域作成時にすでにデータ・ファイルがある場合は、エラーが返されます。また、元のデータベースへインポートする必要がある場合は、IGNORE=yを指定し、既存のデータ・ファイルを置換せずに追加します。
デフォルト: 0(ゼロ)
n行分のインポートを1つのピリオドで示すプログレス・バーの表示を指定します。たとえば、FEEDBACK=10を指定すると、10行分のインポートが終了するたびにピリオドが1つ表示されます。FEEDBACK値は、インポートされるすべての表に適用されるため、各表に対して個別には設定できません。
デフォルト: expdat.dmp
インポートするエクスポート・ファイル名を指定します。デフォルトの拡張子は、.dmpです。エクスポート・ユーティリティは、複数ファイルのエクスポートをサポートしているため(次のFILESIZEパラメータの説明を参照)、複数のインポート・ファイル名が必要な場合もあります。次に例を示します。
imp scott/tiger IGNORE=y FILE = dat1.dmp, dat2.dmp, dat3.dmp FILESIZE=2048
ユーザー自身がエクスポートしたファイルでなくても指定できますが、そのファイルに対する読取り権限が必要です。他のユーザーがエクスポートしたエクスポート・ファイルの場合は、IMP_FULL_DATABASEロールが必要です。
デフォルト: オペレーティング・システムによって異なります。
エクスポート・ユーティリティでは、複数のエクスポート・ファイルへの書込みがサポートされており、インポート・ユーティリティでは、複数のエクスポート・ファイルからの読取りが可能です。エクスポートFILESIZEパラメータの値(バイト制限)を指定すると、エクスポート・ユーティリティでは、それぞれのダンプ・ファイルに指定したバイト数のみが書き込まれます。インポート・ユーティリティでは、エクスポートの最大ダンプ・ファイル・サイズを指定するために、インポートFILESIZEパラメータを使用する必要があります。
FILESIZEの値は、数字にKB(キロバイト数)を付けて指定できます。たとえば、FILESIZE=2KBは、FILESIZE=2048と同じです。同様に、MBはメガバイト(1024×1024)を、GBはギガバイト(1024の3乗)を表します。Bはバイトの省略です。この場合、最終的なファイルサイズの算出に乗算は不要です(FILESIZE=2048Bは、FILESIZE=2048と同じです)。
ダンプ・ファイルの最大サイズの詳細は、表20-5を参照してください。
デフォルト: なし
インポートするスキーマをカンマで区切ったリスト。このパラメータは、IMP_FULL_DATABASEロールを持つユーザーにのみ関係があります。このパラメータで、複数のスキーマを含むエクスポート・ファイル(たとえば、全体エクスポート・ダンプ・ファイルまたは複数スキーマのユーザー、ユーザー・モードのエクスポート・ダンプ・ファイルなど)からスキーマのサブセットをインポートできます。
ファンクション索引、ファンクション、プロシージャ、トリガー、型本体、ビューなどの内部に表示されるスキーマ名は、FROMUSERまたはTOUSERの処理には影響されません。影響を受けるのは、オブジェクト名のみです。インポートの完了後、TOUSERスキーマに含まれる項目が古いスキーマ(FROMUSER)を参照しているかどうかを手動で確認し、必要に応じて修正する必要があります。
通常は、インポート・パラメータTOUSERとFROMUSERを組み合せて使用し、インポートのターゲットとなるスキーマの所有者ユーザー名のリストを指定します(「TOUSER」を参照)。インポート操作の前にターゲット・データベース内にTOUSERで指定するユーザーが存在している必要があります。存在していない場合、エラーが返されます。
TOUSERを指定しない場合、インポート操作では次のことが行われます。
FROMUSERのスキーマへオブジェクトをインポートします。
FROMUSERスキーマが存在するかどうかにかかわらず)インポートするユーザーのスキーマにオブジェクトを作成します。デフォルト: y
エクスポート・ダンプ・ファイル全体をインポートするかどうかを指定します。
デフォルト: y
オブジェクト権限をインポートするかどうかを指定します。
デフォルトでは、エクスポートされたオブジェクト権限はすべてインポートされます。ユーザー・モードでエクスポートが実行されている場合は、第1レベルのオブジェクト権限(所有者によって付与されているもの)のみがエクスポート・ファイルにインポートされます。
全データベース・モードでエクスポートが実行されている場合は、下位レベルのオブジェクト権限(With Grant Optionで権限が付与されたユーザーによって付与されているもの)を含むすべての権限が、エクスポート・ファイルにインポートされます。GRANTS=nを指定すると、オブジェクト権限はインポートされません (GRANTS=nを指定しても、システム権限はインポートされます)。
デフォルト: なし
インポート・パラメータの説明を表示します。ヘルプを起動するには、コマンドラインでimp HELP=yを入力します。
デフォルト: n
オブジェクト作成エラーの処理方法を指定します。デフォルトのIGNORE=nが指定されている場合は、オブジェクト作成エラーがログに記録または表示されて、インポートが続行されます。
IGNORE=yを指定すると、データベース・オブジェクトの作成時に作成エラーが発生しても、このエラーは無視され、エラーはレポートされずに継続します。
無視されるのはオブジェクト作成エラーのみです。オペレーティング・システム、データベース、SQLなどのエラーは無視されず、場合によっては処理が停止します。
IGNORE=yが指定され、1つのエクスポート・ファイルから何回もリフレッシュが行われる場合、オブジェクトが何回も作成される場合があります(ただし、各オブジェクトには一意のシステム定義名が付けられます)。特定のオブジェクト(たとえば、制約など)に対しては、CONSTRAINTS=nを指定してインポートを実行すると、この問題を回避できます。CONSTRAINTS=nを指定して全インポートを実行すると、表の制約はインポートされません。
表がすでに存在する場合、IGNORE=yを指定すると、行は既存の表にインポートされ、エラーやメッセージは出力されません。新しい記憶域パラメータを使用するため、またはクラスタにすでに表を作成済であるため、すでに存在する表にデータをインポートする場合があります。
表がすでに存在する場合、IGNORE=nを指定すると、エラーがレポートされ、表は、行が挿入されないままスキップされます。また、表に依存するオブジェクト(索引、権限、制約など)は作成されません。
デフォルト: y
索引をインポートするかどうかを指定します。LOB索引、OID索引、一意制約索引など、システムによって作成される索引は、このパラメータの指定に関係なく、インポート・ユーティリティによって自動的に再作成されます。
INDEXES=nを指定すると、すべてのユーザー作成索引をインポートの終了後に作成できます。
インポート時、ターゲット表にすでに索引が存在する場合は、データ挿入時にターゲット表の索引のメンテナンスを実行します。
デフォルト: なし
索引作成文を受け取るファイルを指定します。
このパラメータを指定すると、指定したモードでの索引作成文は、データベース中に索引を作成するために使用されるのではなく、抽出されて指定のファイルに書き込まれます。データベース・オブジェクトはインポートされません。
インポート・パラメータCONSTRAINTSにyを設定している場合、索引ファイルに表制約も書き込まれます。
その後、このファイルを編集して(記憶域パラメータの変更など)、索引を作成するためのSQLスクリプトとして使用できます。
ファイル内で定義されている索引をさらに簡単に識別するために、エクスポート・ファイルのCREATE TABLE文およびCREATE CLUSTER文がコメントとして含まれます。
この機能を使用するには、次の手順を実行します。
INDEXFILEパラメータを使用してインポートを行い、索引作成文のファイルを作成します。
connect文字列に追加します。
INDEXES=nを指定してインポートを再実行します。(この手順でデータベース・オブジェクトがインポートされますが、エクスポート・ファイルに格納されている索引定義は使用されません。)
INDEXFILEパラメータを指定できるのは、FULL=y、FROMUSER、TOUSERまたはTABLESパラメータを指定した場合のみです。
デフォルト: なし
情報メッセージおよびエラー・メッセージを受け取るファイル(import.logなど)を指定します。ログ・ファイルを指定すると、端末画面およびログ・ファイルの両方にインポートに関する情報が書き込まれます。
デフォルト: なし
インポート・パラメータのリストを格納するファイルのファイル名を指定します。パラメータ・ファイルの使用方法の詳細は、「パラメータ・ファイル」を参照してください。
デフォルト: オペレーティング・システムによって異なります。
ファイル・レコードの長さをバイト単位で指定します。RECORDLENGTHパラメータは、異なるデフォルト値を使用する別のオペレーティング・システムにエクスポート・ファイルを転送する場合に指定する必要があります。
このパラメータを指定しない場合、ご使用のプラットフォーム固有のBUFSIZのデフォルト値が採用されます。
RECORDLENGTHは、ご使用のシステムのBUFSIZの値以上の任意の値に設定できます(最大値は64KBです)。RECORDLENGTHパラメータの変更により影響を受けるのは、データベースに書き出す前に累積されるデータのサイズのみです。オペレーティング・システム・ファイルのブロック・サイズには影響しません。
このパラメータは、インポート・ユーティリティのI/Oバッファのサイズ指定にも使用できます。
デフォルト: n
RESUMABLEパラメータを使用して、再開可能な領域割当てを有効または無効にします。このパラメータはデフォルトでは無効なため、関連するRESUMABLE_NAMEパラメータおよびRESUMABLE_TIMEOUTパラメータを使用するには、RESUMABLE=yに設定する必要があります。
デフォルト: 'User USERNAME (USERID), Session SESSIONID, Instance INSTANCEID'
再開可能な文を指定します。この値はユーザー定義のテキスト文字列で、USER_RESUMABLEまたはDBA_RESUMABLEビューに挿入して、一時停止されている特定の再開可能な文を識別できます。
RESUMABLEパラメータをyに設定して、再開可能な領域割当てを有効にしないかぎり、このパラメータは無視されます。
デフォルト: 7200秒(2時間)
エラー修正に必要な時間を指定します。タイムアウト時間内にエラーを修正できない場合は、文の実行が終了します。
RESUMABLEパラメータをyに設定して、再開可能な領域割当てを有効にしないかぎり、このパラメータは無視されます。
デフォルト: y
表のデータ行をインポートするかどうかを指定します。
ROWS=nを指定すると、インポート操作の終了後、インポートされたすべての表の統計がロックされます。
デフォルト: n
SHOW=yを指定すると、エクスポート・ダンプ・ファイルの内容が画面に表示されますが、インポートは実行されません。エクスポート・ファイルに含まれるSQL文は、インポート・ユーティリティでその文が実行される順序で表示されます。
SHOWパラメータを指定できるのは、FULL=y、FROMUSER、TOUSERまたはTABLESパラメータを指定した場合のみです。
デフォルト: 初期化パラメータ・ファイルで指定した、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の値を指定すると、(システムまたはユーザーのいずれかによって)索引使用禁止状態に設定されている索引の作成が、インポート・ユーティリティではスキップされます。他の索引(事前に索引使用禁止に設定されていない索引)に対しては、行の挿入時にメンテナンス処理が行われます。
このパラメータを使用すると、選択した索引パーティションに対する索引のメンテナンスを、行データの挿入が完了するまで延期できます。インポート後、影響を受けた索引パーティションの再作成が必要です。
INDEXES=nを指定してINDEXFILEパラメータを使用すると、索引の再作成を行うSQLスクリプトを作成できます。SKIP_UNUSABLE_INDEXESパラメータを指定しない場合、行挿入によって使用禁止索引をメンテナンスすると、その行挿入によってエラーが発生します。
デフォルト: ALWAYS
インポート時のデータベース・オプティマイザ統計の処理方法を指定します。
メニュー項目は次のとおりです。
ALWAYSデータベース・オプティマイザ統計に問題があるかどうかにかかわらず、常にインポートします。
NONEデータベース・オプティマイザ統計をインポートまたは再計算しません。
SAFEデータベース・オプティマイザ統計に問題がない場合のみにインポートします。問題がある場合は、オプティマイザ統計を再計算します。
RECALCULATEデータベース・オプティマイザ統計をインポートしません。かわりに、インポート時に再計算します。この場合、ダンプ・ファイルを作成した元のエクスポート操作で、必要なANALYZE文を生成している(STATISTICS=NONEを指定してエクスポートを実行していない)必要があります。ANALYZE文は、ダンプ・ファイルに含まれ、インポート操作で表統計の再計算に使用されます。
デフォルト: y
エクスポート・ダンプ・ファイル内に存在する一般的なStreamsメタデータをインポートするかどうかを指定します。
デフォルト: n
エクスポート・ダンプ・ファイル内に存在するStreamsインスタンス化メタデータをインポートするかどうかを指定します。ストリーム環境でインスタンス化の一部としてインポートする場合は、yを指定します。
デフォルト: なし
表モード・インポートでインポートすることを指定します。インポートの対象となる表名、パーティション名およびサブパーティション名をリストとして指定します。表レベル・インポートでは、パーティション表または非パーティション表全体をインポートできます。TABLESパラメータでは、インポート対象は、表およびその関連オブジェクトに限定されます(表20-3を参照)。TABLESパラメータでは、次の値を指定できます。
tablenameには、インポートされる表の名前を指定します。リストにパーティション表が含まれる場合、パーティション名を指定しないと、すべてのパーティションおよびサブパーティションがインポートされます。エクスポートされたすべての表をインポートするには、アスタリク(*)のみを表名パラメータとして指定します。tablenameは、任意の数の「%」パターン一致文字を含むことができます。各「%」パターン一致文字は、エクスポート・ファイルの表名の0個以上の文字と一致します。リスト中の固有の表名の指定されたすべてのパターンと一致する名前を持つすべての表が、選択されてインポートされます。すべてのパターン一致文字で構成され、パーティション名を含まないリスト中の表名によって、エクスポートされたすべての表がインポートされます。
partition_nameおよびsubpartition_nameによって、パーティション表内で指定された1つ以上のパーティションまたはサブパーティションにインポートが制限されます。
構文の形式は、次のとおりです。
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)
詳細は、「パターン一致を使用して様々な表をインポートする例」を参照してください。
表名には次の制限があります。
ただし、オペレーティング・システムによっては、コマンドラインの引用符自体をエスケープする必要がある場合があります。次に、異なるインポート・モードで大/小文字の区別を保持する方法を示します。
たとえば、パラメータ・ファイルに次のコマンドラインが記述されている場合、emp#の右側はすべてコメントとして解釈されるため、表deptおよびmydataはインポートされません。
TABLES=(emp#, dept, mydata)
ただし、次の例では、emp#が引用符で囲まれているため、3つの表はすべてインポートされます。
TABLES=("emp#", dept, mydata)
デフォルト: なし
TRANSPORT_TABLESPACEにyを指定した場合、データベースに転送する表領域を、このパラメータを使用して表示します。エクスポート・ファイルに複数の表領域がある場合は、そのすべての表領域をインポート操作の一部として指定する必要があります。
詳細は、「TRANSPORT_TABLESPACE」を参照してください。
デフォルト: なし
型を参照している表のインポート時に、その名前の型がすでにデータベースに存在している場合は、その既存の型が、実際にその表で使用されているかどうか(実際は異なる型で、単に同じ名前であるだけではないか)を確認します。
この検証のために、型の一意の識別子(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)
その型にスキーマ名を指定しない場合、インポートするユーザーのスキーマがデフォルトになります。たとえば、前述の最初の例では、型typ1はscott.typ1がデフォルトになり、2番目の例では、型typ3はscott.typ3がデフォルトになります。
TOID_NOVALIDATEは、表の列型のみを処理します。表型には影響しません。
通常のインポートでは、削除される型が含まれていると、次のように出力されます。
[...] . importing IMP3's objects into IMP3 . . skipping TOID validation on type IMP2.TOIDTYP0 . . importing table "TOIDTAB3" [...]
デフォルト: なし
インポートの対象となるスキーマを所有するユーザー名のリストを指定します。インポート操作の前にユーザー名が存在している必要があります。存在していない場合は、エラーが返されます。このパラメータを使用するには、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回指定されています。
デフォルト: n
yを指定した場合、エクスポート・ファイルからトランスポータブルの表領域メタデータがインポートされます。
暗号化された列は、トランスポータブル表領域モードではサポートされていません。
デフォルト: なし
TRANSPORT_TABLESPACEにyを指定した場合、このパラメータを使用して、一連のトランスポータブル表領域のデータの所有者ユーザーを表示できます。
詳細は、「TRANSPORT_TABLESPACE」を参照してください。
デフォルト: なし
インポートを実行するユーザーのユーザー名、パスワードおよびオプションの接続文字列を指定します。
ユーザーSYSとして接続する場合は、接続文字列にAS SYSDBAも指定する必要があります。オペレーティング・システムによっては、AS SYSDBAを特殊文字列とみなし、その文字列全体を引用符で囲む必要があります。
デフォルト: なし
各テープ・ボリュームのダンプ・ファイルに最大バイト数を指定します。
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.dmpOWNER=scottGRANTS=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ロールを持つユーザーは、他のユーザーが所有する依存オブジェクトのエクスポートも実行できます。権限を持たないユーザーは、そのユーザー自身が所有し、指定した表の依存オブジェクトのみをエクスポートできます。
表モードのエクスポートには、クラスタ定義がありません。このため、データはクラスタ化されていない表としてエクスポートされます。したがって、表モードは、表の非クラスタ化に使用できます。
この例では、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.
この例では、ユーザー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.
この例では、パターン一致を使用して、ユーザー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.
パーティション・レベル・エクスポートでは、エクスポートの対象を表のパーティションおよびサブパーティション単位で指定できます。
従業員名にパーティションが指定されている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.
従業員名にパーティションが指定されている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.
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.
この項では、複数のパーティションがある表、パーティションとサブパーティションがある表、および異なる列で再パーティション化した表のインポートについて説明します。
この例では、empは、P1、P2および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のリリース情報が表示されます。また、状態メッセージも表示されます。
この例では、コンポジット・パーティション表のパーティションおよびサブパーティションがインポートされます。empは、2つのコンポジット・パーティションP1およびP2のパーティション表です。パーティションP1には、3つのサブパーティションP1_SP1、P1_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.
この例では、emp表に、empno列に基づく2つのパーティションがあります。emp表をdeptno列で再パーティション化します。
別の列で表を再パーティション化するには、次の手順を実行してください。
次に、これらの手順の例を示します。
> 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システム間の移動が含まれます。
次の手順では、プラットフォーム間のデータベースの移動方法の概要を示します。
SQL> SELECT tablespace_name FROM dba_tablespaces;
> exp FULL=y FILE=expdat.dmp
binaryを入力して)必ずバイナリ形式でコピーします。
IGNOREパラメータを使用可能にし、DBAユーザーとして全体インポートを実行します。
> imp FULL=y IGNORE=y FILE=expdat.dmp
IGNORE=yを使用すると、インポート時の作成エラーは無視され、インポートが完了します。
この項では、エクスポート・ユーティリティおよびインポート・ユーティリティによって発行される異なるタイプのメッセージについて説明します。また、そのメッセージのログ・ファイルへの保存方法についても説明します。
すべてのエクスポート・メッセージおよびインポート・メッセージは、ログ・ファイルに保存できます。この場合の保存方法は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に、それぞれの結果に対応する終了コードを示します。
| 結果 | 終了コード |
|---|---|
|
インポートは警告なしで正常終了しました。 |
|
|
インポートは正常に終了しましたが、警告が発生しました。 |
|
|
エラーが発生したためインポートを終了します。 |
|
UNIXの場合、終了コードは次のようになります。
EX_SUCC 0 EX_OKWARN 0 EX_FAIL 1
この項では、ネットワークを介したエクスポートおよびインポートの実行時に考慮すべき点について説明します。
エクスポート・ファイルはバイナリ形式であるため、ネットワークを介してそのエクスポート・ファイルを転送するときは、バイナリ転送をサポートしているプロトコルを使用して、ファイルが破損しないようにしてください。たとえば、FTPなどのファイル転送プロトコルを使用して、バイナリ・モードでファイルを転送します。エクスポート・ファイルをキャラクタ・モードで送信すると、ファイルのインポート時にエラーが発生します。
Oracle Netを使用すると、ネットワークを介してエクスポートおよびインポートを実行できます。たとえば、エクスポート・ユーティリティをローカルで実行して、リモートOracle Databaseのデータをローカル・エクスポート・ファイルに書込みできます。また、インポート・ユーティリティをローカルで実行して、リモートOracle Databaseのデータの読取りができます。
Oracle Netでエクスポート・ユーティリティまたはインポート・ユーティリティを使用するには、expコマンドまたはimpコマンドにユーザー名とパスワードを入力するときに接続修飾文字列@connect_stringを指定する必要があります。この句の構文の詳細は、ご使用のOracle Netプロトコルのユーザーズ・ガイドを参照してください。
この項では、ユーザー・データおよびデータ定義言語(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キャラクタ・セットでは、zがZの前にあるため、part_midパーティションのすべての行が、part_lowパーティションに移行します。希望する結果を得るには、partlist表の所有者は、インポート後に表を再パーティション化する必要があります。
エクスポートおよびインポート操作時に、データ定義言語(DDL)に対して最大3回のキャラクタ・セット変換が必要です。
NLS_LANGでユーザー・セッション用に指定されたキャラクタ・セットで書き出されます。NLS_LANGの値が、データベースのキャラクタ・セットと異なる場合は、キャラクタ・セット変換が実行されます。
キャラクタ・セット変換によるデータの損失を最小限にするには、エクスポート・データベース、エクスポート・ユーザー・セッション、インポート・ユーザー・セッションおよびインポート・データベースのすべてにおいて、同一のキャラクタ・セットを使用するようにしてください。
8ビット・キャラクタ・セットのエクスポート・ファイルをインポートすると、8ビット文字の一部が消去されることがあります(同等の7バイトに変換されます)。これが発生するのは、インポートを実行するシステムに、システム固有の7ビット・キャラクタ・セットが存在するか、オペレーティング・システム環境変数NLS_LANGが7ビット・キャラクタ・セットに設定されている場合です。アクセント記号が付いている文字からアクセントが消去されるのが最もよく見られる例です。
このような状況を回避するために、オペレーティング・システム環境変数NLS_LANGにエクスポート・ファイルのキャラクタ・セットを設定できます。
ターゲット・キャラクタ・セットに同等の文字がないエクスポート・ファイル中の文字は、変換時にデフォルトの文字に置換されます(デフォルトの文字は、ターゲット・キャラクタ・セットによって定義されます)。100%完全に変換されるためには、ターゲット・キャラクタ・セットはソース・キャラクタ・セットのスーパーセットであるか、ソース・キャラクタ・セットと同等である必要があります。
スナップショット・システムには、マスター表、オプションのスナップショット・ログおよびスナップショット自体の3つのオブジェクトがあり、相互に関連しています。表(マスター表、スナップショット・ログ表定義およびスナップショット表)は、個別にエクスポートできます。スナップショット・ログは、対応付けられたマスター表をエクスポートしないかぎり、エクスポートできません。スナップショットをエクスポートできるのは、全データベース・エクスポートおよびユーザー・モード・エクスポートの場合のみです。表モードではエクスポートできません。
インポート先のデータベースにマスター表がすでに存在し、そのマスター表にスナップショット・ログがある場合は、ダンプ・ファイルのスナップショット・ログがインポートされます。
ROWIDスナップショット・ログのエクスポートでは、スナップショット・ログに記録されているROWIDはインポートした後には意味を持ちません。このため、各ROWIDのスナップショットによる最初の高速リフレッシュは失敗し、完全リフレッシュが必要であることを示すエラーが発生します。
リフレッシュのエラーを回避するには、ROWIDのスナップショット・ログをインポートしてから完全リフレッシュを実行してください。完全リフレッシュを実行すると、後続の高速リフレッシュが適切に行われます。これに対し、主キー・スナップショット・ログをエクスポートした場合は、インポートした後でも主キーの値は意味を持ちます。したがって、インポートした後でも、主キーのスナップショットにより、高速リフレッシュを実行できます。
エクスポート・ファイルからリストアされたスナップショットは、前の状態に戻ってしまいます。インポートでは、最後のリフレッシュが実行された時刻が、スナップショット表定義の一部としてインポートされます。次のリフレッシュ時刻を計算する機能もインポートされます。
各リフレッシュによって、署名が付けられます。高速リフレッシュでは、スナップショットを最新に保つため、その署名の時刻から日付を決定するログ・エントリが使用されます。高速リフレッシュが完了した時点で署名は削除され、新しい署名が付けられます。他のスナップショットのリフレッシュに必要でないログ・エントリ(残っている最も古い署名よりも前の時刻を持つすべてのログ・エントリ)も削除されます。
エクスポート・ファイルからスナップショットをリストアすると、問題が発生する場合があります。
スナップショットが時刻Aにリフレッシュされ、時刻Bにエクスポートされ、時刻Cに再びリフレッシュされたとします。破損などの問題が発生したため、スナップショットを削除してインポートしなおすことによってリストアする必要があります。新しくインポートしたスナップショットには、時刻Aに実行した最後のリフレッシュが記録されていますが、高速リフレッシュに必要となるログ・エントリが存在しなくなっている可能性があります。ログ・エントリが存在する場合は(たとえば、リフレッシュする必要のある別のスナップショットに必要なため)、このエントリが使用され、高速リフレッシュは正常に完了します。ログ・エントリが存在しない場合、高速リフレッシュは失敗し、完全リフレッシュが必要であることを示すエラーが発生します。
スナップショットおよび関連項目は、DDL文で明示的に指定されたスキーマ名でエクスポートされます。異なるスキーマにインポートする場合は、FROMUSERパラメータおよびTOUSERパラメータを使用します。これは、異なるスキーマにインポートできないスナップショット・ログには適用されません。
トランスポータブル表領域機能は、一連の表領域を、あるOracle Databaseから他のOracle Databaseに移動できる機能です。
一連の表領域を移動またはコピーするには、表領域を読取り専用にし、表領域のデータ・ファイルをコピーしてから、エクスポートおよびインポートを使用して、データ・ディクショナリに格納されているデータベース情報(メタデータ)を移動します。データ・ファイルおよびメタデータのエクスポート・ファイルの両方を、ターゲット・データベースにコピーする必要があります。これらのファイルの転送は、オペレーティング・システムのコピー機能、バイナリ・モードFTP、CD-ROMへの出力などのような、フラットまたはバイナリ・ファイルのコピー機能を使用して行われます。
データ・ファイルのコピーおよびメタデータのエクスポートの後、表領域を任意に読み書き両用モードにできます。
次のパラメータで、トランスポータブル表領域のメタデータを移動できます。
エクスポート操作でのこれらのパラメータの使用方法の詳細は、「TABLESPACES」および「TRANSPORT_TABLESPACE」を参照してください。
インポート操作でのこれらのパラメータの使用方法の詳細は、「TABLESPACES」および「TRANSPORT_TABLESPACE」を参照してください。
読取り専用表領域はエクスポート可能です。インポートでは、表領域がターゲット・データベース内に存在しない場合、読取り/書込み表領域として表領域が作成されます。読取り専用機能が必要な場合は、インポート後にその表領域を手動で読取り専用にする必要があります。
ターゲット・データベース内に表領域がすでに存在し、読取り専用である場合は、インポート前にこの表領域を読取り/書込み可能にする必要があります。
インポート前に、オブジェクトに別の表領域を使用するように再定義すると、表領域を削除できます。impコマンドの発行時には、IGNORE=yを指定します。
表領域を削除するには、通常、全データベース・エクスポートを実行し、(ログオフの前に)削除する表領域と同名の表領域をブロック数0(ゼロ)で作成します。IGNORE=yが指定されていると、インポート時にその表領域に関するCREATE TABLESPACE文はエラーとなります。これにより、削除対象である不要な表領域は作成されません。
その表領域のすべてのオブジェクト(ただし、パーティション表、特定の型の表、LOB列またはVARRAY列を含む表またはオーバーフロー・セグメントのあるIOTを除く)が、そのオブジェクトの所有者のデフォルトの表領域にインポートされます。インポート・ユーティリティでは、エラーの原因となった表領域を特定できません。かわりに、ユーザー自身が表の作成後、IGNORE=yを指定して表のインポートを実行する必要があります。
その表領域が存在しない場合、またはデフォルトの表領域に対するユーザーの割当て制限が十分でない場合は、オブジェクトはデフォルトの表領域にインポートされません。
ユーザーの割当て制限が十分な場合、そのユーザーの表はエクスポート元と同じ表領域にインポートされます。その表領域がもう存在しないか、またはユーザーの割当て制限が十分でない場合は、そのユーザーに対するデフォルトの表領域が適用されます。ただし、パーティション表、LOB列またはVARRAY列が含まれている表、特定の型の表およびオーバーフロー・セグメントのあるIOTには適用されません。この条件を利用して、表領域間でユーザーの表を移動できます。
たとえば、全データベース・エクスポートを実行した後、joeの表を表領域Aから表領域Bに移動する必要があるとします。この場合には、次の手順を実行します。
joeがUNLIMITED TABLESPACE権限を持っている場合、その権限を取り消します。表領域Aに対するjoeの割当て制限を0(ゼロ)に設定します。さらに、このような権限または割当て制限を含む可能性のあるすべてのロールを取り消します。ロールの取消しでは、カスケード効果はありません。したがって、joeによって他のロールを付与されたユーザーは影響を受けません。
joeの表をエクスポートします。
Aからjoeの表を削除します。
joeに表領域Bの割当て制限を付与し、joeのデフォルトの表領域とします。
joeの表をインポートします(デフォルトでは、joeの表は表領域Bにインポートされます)。
ファイングレイン・アクセス・コントロール・ポリシーを使用可能にして、表をエクスポートおよびインポートできます。その場合は、次のことに注意してください。
DBMS_RLSパッケージに対するEXECUTE権限が必要です。ファイングレイン・アクセス・ポリシーが使用可能な表をエクスポートするための正しい権限が付与されていない場合は、読取り権限のある行のみがエクスポートされます。ファイングレイン・アクセス・コントロール・ポリシーが使用可能な表を含むエクスポートファイルからインポートを行うための正しい権限が付与されていない場合は、警告メッセージが発行されます。したがって、セキュリティ上の理由から、そのような表をエクスポートおよびインポートするユーザーは、DBAである必要があります。
SELECT文でファイングレイン・アクセス・コントロールが使用可能な場合、ファイングレイン・アクセスにより問合せがリライトされるため、従来型パス・エクスポートでは表全体をエクスポートできない場合があります。
SYS、 EXP_FULL_DATABASEロールを使用可能なユーザーまたはEXEMPT ACCESS POLICYを付与されたユーザーのみがファイングレイン・アクセス・コントロールを持つ表に対してダイレクト・パス・エクスポートを実行できます。インスタンス親和性を使用して、インポートおよびエクスポートするデータベース内のインスタンスにジョブを関連付けることができます。複数のリリースを組み合せて使用している場合は、互換性の問題に注意してください。
断片化とは、多数の小さな空き領域が散在しているデータベースの状態のことです。断片化しているデータベースを再編成すると、 空き領域をより大きな連続したブロックとして使用できるようになります。次のように全データベース・エクスポートおよびインポートを実行することで、データベースの断片化を解消できます。
FULL=y)を実行します。
CREATE DATABASE文を使用して、データベースを再作成します。
FULL=y)を実行します。デフォルトでは、表は、元の表領域にインポートされます。
その表領域が存在しない場合、またはユーザーがその表領域に十分な割当て制限を持っていない場合、次の表の場合を除いて、そのユーザーにはデフォルトの表領域が割り当てられます。
ユーザーがデフォルトの表領域に対する十分な割当て制限を持っていない場合、そのユーザーの表はインポートされません。この制限の利用方法の詳細は、「表領域を再編成する方法」を参照してください。
ロールバック・セグメントのための記憶域パラメータOPTIMALは、エクスポートおよびインポート時には保持されません。
表は、その表の現行の記憶域パラメータを使用してエクスポートされます。オブジェクト表に関しては、OIDINDEXの作成時に、OIDINDEXの現行の記憶域パラメータおよび名前が設定されている場合は、それらを使用して作成されます。LOB型列、VARRAY型列またはOPAQUE型列が含まれている表に関しては、LOB型データ、VARRAY型データまたはOPAQUE型データは、それらの現行の記憶域パラメータを使用して作成されます。
エクスポートの前に、ユーザーが既存の表の記憶域パラメータを変更する場合もありますが、このような場合、表は変更された記憶域パラメータを使用してエクスポートされます。ただし、LOBデータの記憶域パラメータは、エクスポートの前には変更できません(たとえば、LOB列のチャンク・サイズ、LOB列がCACHEまたはNOCACHEか、など)。
LOBデータとLOB索引は、格納している表と同じ表領域に常駐することはできません。このデータの表領域は、インポート時に読取り/書込みが可能である必要があります。そうでない場合、表はインポートされません。
LOBデータまたはLOB索引がインポート時に存在しない表領域にある場合、またはユーザーがその表領域に対して必要な割当て制限を持っていない場合、表はインポートされません。表領域の句は、表に関する句も含めて複数の句を同時に指定できるため、インポート時にエラーが発生しても、インポート・ユーティリティではどの表領域句が原因のエラーかを特定できません。
インポート・ユーティリティを使用してデータをインポートする前に、別の記憶域パラメータで、事前に大きな表を作成した方がよい場合があります。その場合は、コマンドラインまたはパラメータ・ファイルにIGNORE=yを指定します。
エクスポート時のデフォルトによって、初期エクステントにインポートされる表のすべてのデータを整理統合するように、記憶域パラメータが調整されます。初期エクステントのサイズを元のまま保つには、エクスポート時にエクステントが整理統合されないように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を施行する必要はありません。これは強力な権限であるため、慎重に管理する必要があります。この権限は、SELECT、INSERT、UPDATEおよびDELETEなどの従来のオブジェクト権限の施行には影響しません。ユーザーがEXEMPT ACCESS POLICY権限を付与されていても、これらの権限は施行されます。
ダイレクト・パス・エクスポートの起動時に、RECORDLENGTHパラメータの値を大きくすると、パフォーマンスが向上する場合があります。実際のパフォーマンス向上の度合いは、次の要因によって異なります。
RECORDLENGTHの値は、次のように設定することをお薦めします。
ダイレクト・パス・エクスポートで作成された。エクスポート・ファイルのインポートには、従来型パス・エクスポートを使用して作成された、エクスポート・ファイルと同様のインポート時間が必要です。
ダイレクト・パス・モードを使用する場合は、次の制限事項に注意する必要があります。
BUFFERパラメータを使用できるのは、従来型パス・エクスポートの場合のみです。ダイレクト・パス・エクスポートでは、エクスポート・ファイルへの書込みに使用するバッファのサイズは、RECORDLENGTHパラメータで指定します。
TRANSPORT_TABLESPACES=Y)でエクスポートする場合は、ダイレクト・パスは使用できません。
QUERYパラメータは、ダイレクト・パス・エクスポートでは指定できません。
NLS_LANG環境変数がデータベース・キャラクタ・セットと等しい場合にのみデータをエクスポートできます。NLS_LANGが設定されていない場合、またはデータベース・キャラクタ・セットとは異なる場合は、警告が表示され、エクスポートは中断されます。NLS_LANG環境変数のデフォルト値はAMERICAN_AMERICA.US7ASCIIです。
ソース・データベースからメタデータを抽出するには、エクスポートで順序付けする句(ソート操作)を含む問合せを使用します。これらの問合せが成功するには、エクスポートを実行しているユーザーがソート・セグメントを割り当てることができる必要があります。これらのソート・セグメントを読取り専用データベースに割り当てるには、ユーザーの一時表領域が、ローカル管理一時表領域を示すように設定する必要があります。
次の項からは、特定のデータベース・オブジェクトをエクスポートするときに考慮すべき点について説明します。
エクスポート中にトランザクションが順序番号にアクセスすると、順序番号はスキップされる可能性があります。順序番号がスキップされないようにするには、エクスポート中に順序番号にアクセスしないようにします。
順序番号がスキップされる可能性があるのは、キャッシュされている順序番号が使用中の場合のみです。順序番号のキャッシュが割り当てられている場合は、現行のデータベースでこれらの順序番号を使用できます。エクスポートされる値は、その次(キャッシュされている値の後)の順序番号です。キャッシュされても使用されていない順序番号は、順序のインポート時に失われます。
エクスポート時、LONGデータ型は、セクション単位でフェッチされます。ただし、各行のすべてのデータ(LONGデータ型を含む)を保持できるだけのメモリーが使用可能である必要があります。
LONG列の長さは、最大2GBです。
LOB列のすべてのデータを、同時にメモリーに置いておく必要はありません。LOBデータのロードおよびアンロードはセクション単位で行われます。
外部関数ライブラリの内容は、エクスポート・ファイルにはエクスポートされません。全データベース・モード・エクスポートおよびユーザー・モード・エクスポートの場合、ライブラリの仕様(名前、位置)のみがエクスポートされます。データベースを新しい場所に移動する場合、ライブラリの実行可能ファイルを移動し、ライブラリの仕様を更新する必要があります。
エクスポート中のデータにオフライン・ローカル管理表領域が含まれている場合、表領域の定義を完全にエクスポートできず、エラー・メッセージが表示されます。データはインポートできますが、インポートの前に、まずオフライン・ローカル管理表領域を作成し、不完全な表領域を参照するDDLコマンドでエラーが発生しないようにする必要があります。
ディレクトリ別名の定義は、全データベース・モード・エクスポートの場合のみエクスポートされます。データベースを新しい場所に移動する場合、データベース管理者は、その新しい場所に対応するようにディレクトリ別名を更新する必要があります。
ディレクトリ別名は、ユーザー・モード・エクスポートや表モード・エクスポートの場合はエクスポートされません。したがって、ディレクトリ別名を使用する前に、ターゲット・システムにディレクトリ別名が作成されていることを確認する必要があります。
エクスポート・ファイルには、BFILE列またはその属性から参照される外部ファイルの内容は格納されません。ファイルの名前およびディレクトリ別名のみが、エクスポート時にコピーされ、インポート時にリストアされます。旧ディレクトリからではファイルにアクセスできない場所にデータベースを移動する場合、DBAは、指定されたファイルが格納されているディレクトリを、アクセス可能な新しい場所へ移動する必要があります。
外部表の内容は、エクスポート・ファイルにはエクスポートされません。全データベース・モード・エクスポートおよびユーザー・モード・エクスポートの場合、表の仕様(名前、位置)のみがエクスポートされます。データベースを新しい場所に移動する場合、外部データを手動で移動して表の仕様を更新する必要があります。
どのエクスポート・モードでも、エクスポートされる表で使用されているオブジェクト型定義に関する情報はエクスポートされます。オブジェクト名、オブジェクト識別子、オブジェクト構成などの情報は、ターゲット・システムでのオブジェクト型とエクスポート・ファイルに格納されているオブジェクト・インスタンスに整合性があることを検証するために必要となります。これによって、インポート時に、表に必要なオブジェクト型が同一のオブジェクト識別子で作成されます。
ただし、表モード、ユーザー・モードおよび表領域モードで、オブジェクト型に対する実行権がないユーザーがエクスポートを実行している場合は、表に必要なすべてのオブジェクト型定義が、エクスポート・ファイルに保持されるとはかぎりません。この場合、同じオブジェクト型の識別子および同じオブジェクトの構成を持つ型の存在を検証するために必要な情報のみが、インポートのターゲット・システムに書き込まれます。
DBAに協力を求めて型定義を作成するか、DBAが実行した全データベース・モードまたはユーザー・モードのエクスポートから型定義をインポートすることによって、ターゲット・システムに適切な型定義が確実に存在するようにしてください。
すべてのオブジェクト型定義を保持するには、定期的に全データベース・エクスポートを実行することが重要です。また、別のユーザーのスキーマに属するオブジェクト型定義を使用する場合は、DBAが、適切なユーザー・グループのユーザー・モードでエクスポートを実行する必要があります。たとえば、ユーザーscottが所有するtable1にblakeのオブジェクト型であるtype1が存在する場合、この表に必要な型定義を保持するには、DBAがユーザー・モードでblakeおよびscottの両方を指定してエクスポートを実行する必要があります。
ネストした表については、外部表がエクスポートされる場合は、必ず内部表のデータもエクスポートされます。内部のネストした表を指定することはできますが、それらを個別にエクスポートすることはできません。
キューは表に実装されています。キューのエクスポートおよびインポートは、その基礎となるキュー表および関連するディクショナリ表のエクスポートおよびインポートになります。キューのエクスポートおよびインポートは、キュー表単位でのみ実行できます。
キュー表をエクスポートすると、表定義に関する情報とキュー・データの両方がエクスポートされます。キュー表データと表定義の両方がエクスポートされるため、キュー表のインポート時に、インポートを実行したユーザーがアプリケーション・レベルでのデータの整合性をメンテナンスすることになります。
シノニムおよびもう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トリガーを再確立しようとすると、エラーになります。
対応する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のエラーなど)は報告されます。また、処理が停止することもあります。
インポート処理で、順序番号をエクスポート・ファイルの値に設定しなおす必要がある場合は、順序を削除してください。インポートでは、既存の順序の削除と再作成は行われません。そのため、順序は、インポートの前に削除されない場合、エクスポート・ファイルに保存されている値には設定されません。順序がすでに存在している場合、エクスポート・ファイルの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については、インポート中のローカル索引のメンテナンスを延期できます。延期するには、次の手順を実行します。
ALTER TABLE t MODIFY PARTITION p2 UNUSABLE LOCAL INDEXES;
imp scott/tiger FILE=expdat.dmp TABLES = (t:p1, t:p2) IGNORE=y SKIP_UNUSABLE_INDEXES=y
この例では、インポートの実行前にALTER SESSION SET SKIP_UNUSABLE_INDEXES=y文を実行します。
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を指定する必要があります。
この項では、インポート操作のパフォーマンスを向上させる方法を説明します。パフォーマンスを向上させる方法は、次のとおりです。
システム・レベル・オプションに関して次の点を考慮すると、インポート操作のパフォーマンスの向上につながる場合があります。
NOARCHIVELOGモードにします。これによって、アーカイブ・ログの作成および管理によるオーバーヘッドが削減されます。
sqlnet.oraファイルにTRACE_LEVEL_CLIENT=OFFを設定します。
DB_BLOCK_SIZEの値を増加します。ブロック・サイズを大きくすると、必要なI/Oサイクル数は少なくなります。この変更は永続的であるため、行う前にすべての影響を考慮してください。
初期化パラメータ・ファイルの設定に関して次の点を考慮すると、インポート操作のパフォーマンスの向上につながる場合があります。
LOG_CHECKPOINT_INTERVALをREDOログ・ファイルのサイズより大きい数に設定します。オペレーティング・システム・ブロックの数(ほとんどのUNIXシステムでは512)です。これによって、(ログ・スイッチ時の)チェックポイントが最小まで削減されます。
SORT_AREA_SIZEの値を増加します。増加する量は、システムで行われている他のアクティビティおよび使用可能な空きメモリーの量によって異なります。(システムでスワッピングおよびページングが開始された場合、設定値が高くなりすぎる可能性があります)。
DB_BLOCK_BUFFERSおよびSHARED_POOL_SIZEの値を増加します。
インポート・オプションの使用について次の点を考慮すると、パフォーマンスの向上につながる場合があります。「インポート・パラメータ」に示す使用可能なオプションの各説明も参照してください。
COMMIT=Nを設定します。これによって、各バッファの後ではなく、各オブジェクト(表)の後にインポートがコミットされます。このため、1つの大きなロールバック・セグメントが必要となります。(ロールバック・セグメントは将来のリリースでは廃止されるため、かわりに、自動UNDO管理の使用をお薦めします。)
BUFFERまたはRECORDLENGTHに大きい値を指定します。サイズを大きくすると、データに対してエクスポート・ファイルがアクセスされる回数が削減されます。通常は数MBで十分です。バッファ・サイズが大きすぎることを示す、過剰なページングおよびスワッピング・アクティビティをチェックします。
INDEXES=Nの設定を考慮してください。設定する場合は、INDEXFILEパラメータを使用して索引作成のDLLを抽出するか、またはINDEXES=YおよびROWS=Nを指定してインポートを再実行します。
大量のLOBデータをインポートする場合は、次のことに注意してください。
索引を削除すると、総インポート時間が大幅に削減されます。LOBロケータには、インポート時に明示的に削除または無視できない主キーが存在するため、LOBデータのインポート時には特別な注意が必要です。
データのロードを完了するために使用できる十分な領域が、大きな連続したチャンクで存在することを確認してください。
LONG列を持つ表をインポートすると、I/Oおよびディスクの使用率が高くなり、その結果、インポート操作のパフォーマンスが低くなります。大量のLONGデータのインポート時にパフォーマンスを向上させる特定のパラメータは存在しませんが、この項で説明したチューニングに関する一般的な考慮点に注意することによって、パフォーマンス全体が向上する場合があります。
次の項では、特定のデータベース・オブジェクトをインポートする場合の、制限事項および考慮点について説明します。
Oracle Databaseでは、オブジェクト型、オブジェクト表およびオブジェクト表内の行を一意に識別できるように、オブジェクト識別子が割り当てられます。オブジェクト識別子はインポート・ユーティリティによって保持されます。
型を参照している表のインポート時に、その名前の型がすでにデータベースに存在している場合は、その既存の型が、実際にその表で使用されているかどうか(実際は異なる型で、単に同じ名前であるだけではないか)を確認します。
この確認のために、型の一意の識別子(TOID)とエクスポート・ファイルに格納された識別子が比較されます。これらの識別子が一致する場合は、型の一意のハッシュ・コードとエクスポート・ファイルに格納されたハッシュ・コードが比較されます。TOIDまたはハッシュ・コードが一致しない場合、その表の行はインポートされません。
この妥当性チェックをしてはいけない型もあります(たとえば、その型がカートリッジのインストールによって作成された場合)。パラメータTOID_NOVALIDATEを使用して、TOIDおよびハッシュ・コードと比較しない型を指定できます。詳細は、「TOID_NOVALIDATE」を参照してください。
次の基準によって、オブジェクト型、オブジェクト表およびオブジェクト表の行の処理方法が決まります。
IGNORE=yが指定されていて、オブジェクト型がすでに存在し、そのオブジェクト識別子、ハッシュ・コードおよび型記述子が一致する場合は、エラーは通知されません。オブジェクト識別子またはハッシュ・コードが一致しない場合、パラメータTOID_NOVALIDATEにそのオブジェクト型を無視する設定がされていないと、エラーが通知され、そのオブジェクト型を使用している表はインポートされません。
IGNORE=nが指定されていて、そのオブジェクト型がすでに存在する場合は、エラーが通知されます。オブジェクト識別子、ハッシュ・コードまたは型記述子が一致しない場合、パラメータTOID_NOVALIDATEにそのオブジェクト型を無視するように設定されていないと、エラーが通知され、そのオブジェクト型を使用している表はインポートされません。
IGNORE=yが指定されていて、表がすでに存在し、そのオブジェクト識別子、ハッシュ・コードおよび型記述子が一致する場合、エラーは通知されません。行はオブジェクト表にインポートされます。同じオブジェクト識別子の行が、すでにそのオブジェクト表に存在している場合、行のインポートはエラーになります。オブジェクト識別子、ハッシュ・コードまたは型記述子が一致しない場合、パラメータTOID_NOVALIDATEがそのオブジェクト型を無視するように設定されていないと、エラーが通知され、そのオブジェクト型を使用している表はインポートされません。
IGNORE=nが指定されていて、オブジェクト表がすでに存在する場合は、エラーが通知され、オブジェクト表はインポートされません。
インポート・ユーティリティにオブジェクト型とオブジェクト表に関するオブジェクト識別子が保持されるため、FROMUSERパラメータおよびTOUSERパラメータを使用して、あるユーザー・スキーマから別のユーザー・スキーマにオブジェクトをインポートする場合は、次のことを考慮してください。
FROMUSERのオブジェクト型およびオブジェクト表がターゲット表にすでに存在する場合は、TOUSERのオブジェクト型およびオブジェクト表の識別子がすでに使用されているため、エラーが発生します。インポート開始前に、FROMUSERのオブジェクト型およびオブジェクト表をシステムから削除する必要があります。
OID ASオプションを指定して他の表と同じオブジェクト識別子が割り当てられている場合は、同じオブジェクト識別子を持つ表を両方インポートすることはできません。1つ目の表はインポートできますが、同じオブジェクト識別子がすでに使用されているため、2つ目の表をインポートするとエラーになります。
表領域の使用方法または表の記憶域パラメータを変更するため、インポートの前に表を作成することがよくあります。表を作成する場合、以前(記憶域パラメータ以外に対して)使用していた定義と同じ定義で作成するか、互換性のある形式で作成する必要があります。オブジェクト表や、オブジェクト型の列を含む表の場合は、形式の互換性がさらに制限されます。
オブジェクト表およびオブジェクト列を含む表の場合、表が参照する各オブジェクトは、その名前、構造およびバージョン情報をエクスポート・ファイルに書き出されます。エクスポート・ユーティリティでは、必要に応じて、異なるスキーマのオブジェクト型の情報も含まれます。
インポート・ユーティリティは、表データをインポートする前に、表に必要な各オブジェクト型の存在を確認します。この確認機能には、オブジェクト型の名前の確認、インポート・システムのオブジェクト型の構造およびバージョンと、エクスポート・ファイルに書き込まれた情報との比較が含まれます。
オブジェクト型名がインポート・システムで検出され、構造またはバージョンがエクスポート・ファイルと一致しない場合、エラー・メッセージが生成され、表データはインポートされません。
インポート・パラメータTOID_NOVALIDATEを使用して、特定のオブジェクトのオブジェクト型の構造およびバージョンの確認機能を使用禁止にできます。
内部のネストした表は外部表とは別にエクスポートされます。したがって、内部のネストした表が正しくインポートされない場合、次のような状況が予想されます。
IGNORE=yパラメータが指定されている場合、外部表に各行を挿入すると、制約違反が発生します。ただし、内部のネストした表のデータは正常にインポートされることがあり、その場合、内部表の行データが重複します。
常にログ・ファイルを調べて、外部表および内部表にエラーがないかどうかを確認する必要があります。データに一貫性を持たせるためには、表データの変更や削除が必要になることがあります。
内部にネストした表は、外部表とは別にインポートされるので、インポート中に、このネストした表のデータにアクセスしようとしても失敗することがあります。たとえば、内部表の行がインポートされる前に、外部表の行にアクセスすると、ユーザーには不完全な行が返されます。
REF列および属性には、参照されている型のインスタンスを示すROWIDが隠されていることがあります。インポート・ユーティリティでは、ターゲット・データベースに対するROWIDは、自動的には再設定されません。ROWIDを適切な値に再設定するには、次の文を実行します。
ANALYZE TABLE [schema.]table VALIDATE REF UPDATE;
BFILE列および属性で参照されているデータは、ソース・データベースからターゲット・データベースへはコピーされません。BFILE列で参照されているファイルの名前とディレクトリ別名が伝達されるのみです。BFILE列および属性で参照されている実際のファイルは、DBAまたはユーザーが移動してください。
BFILE列を含む表データをインポートする場合、BFILEロケータは、ディレクトリ別名およびエクスポート時のファイル名でインポートされます。インポート・ユーティリティでは、そのディレクトリ別名またはファイルが存在するかどうかの確認は行われません。ディレクトリ別名またはファイルが存在しない場合、ユーザーがBFILEデータにアクセスするとエラーが発生します。
ディレクトリ別名に関しては、エクスポート・システムで使用しているオペレーティング・システムのディレクトリ構文がインポート・システムで有効でない場合でも、インポート時にエラーは通知されません。ユーザーがインポート後に、そのファイルのデータにアクセスするとエラーが返されます。ディレクトリ別名がインポート・システムで有効かどうかは、DBAまたはユーザーが確認してください。
インポート・ユーティリティでは、外部関数ライブラリの参照先が正しいかどうかの確認は行われません。エクスポート・ファイル上のライブラリの指定で使用されているディレクトリやファイル名の形式がインポート・システムで無効であっても、インポート時にエラーは通知されません。この場合、インポート後にそのファンクションを呼び出そうとすると、エラーが返されます。
DBAまたはユーザーが手動でライブラリを移動し、ライブラリの指定がインポート・システムで有効になるようにしてください。
ローカルのストアド・プロシージャ、ストアド・ファンクションまたはパッケージがインポートされるときのインポート・ユーティリティの動作は、COMPILEパラメータがyまたはnに設定されているかどうかによって異なります。
ローカルのストアド・プロシージャ、ストアド・ファンクションまたはパッケージがインポートされ、COMPILE=yが指定されている場合は、プロシージャ、ファンクション、パッケージはインポート時に再コンパイルされ、元のタイムスタンプ仕様が保持されます。コンパイルが成功すると、リモート・プロシージャによってアクセスしてもエラーは発生しません。
COMPILE=nが指定されている場合も、プロシージャ、ストアド・ファンクションまたはパッケージはインポートされます。ただし、元のタイムスタンプは失われます。次に、プロシージャ、ファンクションまたはパッケージを使用するときに、コンパイルが実行されます。
Javaオブジェクトを任意のスキーマにインポートしても、リゾルバはインポート・ユーティリティによって変更されません(リゾルバとは、Javaのフルネームの解決に使用されるスキーマのリストです)。インポートの終了後、明示的または暗黙的に再検証しないかぎり、すべてのユーザー・クラスが無効な状態のままになります。暗黙的な再検証は、クラスが最初に参照されるときに実行されます。明示的な再検証は、SQLのALTER JAVA CLASS...RESOLVE文を使用すると実行されます。いずれの方法でもクラスは正常に解決され、有効になります。
インポート・ユーティリティでは、外部表の参照先が正しいかどうかの確認は行われません。エクスポート・ファイルの表の指定で使用されているディレクトリやファイル名の形式がインポート・システムで無効であっても、インポート時にエラーは通知されません。この場合、インポート後にそのファンクションを呼び出そうとすると、エラーが返されます。
DBAまたはユーザーが手動で表を移動し、表の指定がインポート・システムで有効になるようにしてください。
キュー表をインポートすると、基礎となっているキューや関連するディクショナリ情報もインポートされます。キューのインポートは、キュー表単位のレベルでのみ実行できます。キュー表のインポートでは、エクスポートの表処理プロシージャの前後に、キュー・ディクショナリがメンテナンスされます。
LONG列の長さは、最大2GBです。インポートおよびエクスポート時には、LONG列は各行の残りのデータとともにメモリーに収まるサイズである必要があります。ただし、LONGデータはセクション単位でロードされるため、LONG列を格納するメモリーが連続している必要はありません。
インポート・ユーティリティを使用して、LONG列をCLOB列に変換できます。このためには、まず、新しいCLOB列を指定する表を作成します。インポートを実行すると、LONGデータはCLOB形式に変換されます。同じ方法で、LONG RAW列をBLOB列に変換できます。
Oracle Database 10g では、トリガーが正常に動作し、LOBのロード中に高いパフォーマンスが保たれるようにLOB処理が改善されています。インポート・ユーティリティでは、エクスポート時に空であるすべてのLOBがインポート後に自動的にNULLに変更されるように改善されています。
LOBがNULLではなく、空である必要があるアプリケーションを使用している場合は、インポート後に、各LOB列に対してSQL UPDATE文を発行できます。LOB列型がBLOBかCLOBかによって、構文は次のいずれかになります。
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が使用されている場合、エクスポート・ユーティリティでは、ビューviewaとviewcの正しい順序付けはできません。viewaがviewcより先にエクスポートされ、procbがインポート・システムにすでに存在する場合は、viewaのインポート時にコンパイル上の警告が出されます。
ビューに関する権限は、ビューにコンパイル・エラーがあってもインポートされます。ビューの作成時に、そのビューの基礎になっているオブジェクト(たとえば、表、プロシージャ、他のビューなど)が存在していない場合、ビューにコンパイル・エラーが発生する場合があります。実表が存在しない場合、実表に対する権限を付与したユーザー自身が、その実表に対してGRANT OPTION付きの適正な権限を持っているかどうかを、サーバーでは検証できません。権限を付与したユーザーが適正な権限を持っていない場合、インポートされなかった表の作成後にその表にアクセスしようとすると、エラーが発生します。
他のスキーマの表を参照しているビューをインポートする場合は、インポートを実行するユーザーに、SELECT ANY TABLE権限が必要です。この権限がない場合、ビューは、コンパイルされていない状態でインポートされます。ロールに権限を付与するのみでは不十分です。ビューのコンパイルには、インポートするユーザーに直接権限を付与する必要があります。
エクスポートしたパーティション表と同じパーティション名またはサブパーティション名を使用してパーティション表を作成するために、SYS_Pnnn形式の名前もインポートされます。同じ名前のパーティション表がすでに存在している場合、これ以降の処理はIGNOREパラメータに指定されている値によって異なります。
SKIP_UNUSABLE_INDEXES=yが指定されていないかぎり、インポート時に非パーティション索引またはパーティション索引が(索引使用禁止に設定されているか、またはその他の不適合が理由で)メンテナンスできない場合は、エクスポート・データはターゲット表にインポートできません。
エクスポート・ユーティリティおよびインポート・ユーティリティを使用して大規模データベースを移行する場合、移行を複数のエクスポート・ジョブおよびインポート・ジョブにパーティション化するとより効率的です。移行をパーティション化する場合は、次のメリットおよびデメリットに注意してください。
移行をパーティション化すると、次のメリットがあります。
移行をパーティション化すると、次のデメリットがあります。
データベースの移行をパーティション化方法で実行するには、次の手順に従います。
すべてのエクスポートはパラレルで実行できます。full.dmpのインポートが完了すると、残りのインポートもパラレルで実行できます。
この項では、リリースが異なるエクスポート・ユーティリティおよびOracle Databaseの使用に関連する互換性の問題について説明します。
リリースが異なるOracle Database間でデータを移動させる場合は、常に、次の基本的な規則が適用されます。
たとえば、上位バージョンのデータベースにインポートするエクスポート・ファイルを作成するには、ソース・データベースと同じバージョンのエクスポート・ユーティリティを使用します。それに対し、下位バージョンのデータベースにインポートするエクスポート・ファイルを作成するには、ターゲット・データベースと同じバージョンのエクスポート・ユーティリティを使用します。
異なるリリースのエクスポート・ユーティリティおよびインポート・ユーティリティを使用する場合、次の制限が適用されます。
表20-7に、異なるリリースのOracle Database間でデータを移動させる場合に使用するエクスポート・ユーティリティおよびインポート・ユーティリティのリリースの例を示します。
Oracle9i データベースからOracle8のエクスポート・ファイルを作成する場合、特別な処理は必要ありません。ただし、Oracle9i データベースでOracle8のエクスポート・ユーティリティを使用した場合、次の機能はサポートされません。
DIRECT=y)を指定した場合、オブジェクトおよびLOBを含む表の行はエクスポートされません。
CALL文であるトリガーは、エクスポートされません。
ROWID列、主キー参照またはユーザー定義OID列を含む表はエクスポートされません。
VARRAY列の、可変幅CLOB、コレクション拡張およびLOBストレージ句、またはネストした表の拡張はエクスポートされません。
|
![]() Copyright © 2007 Oracle Corporation. All Rights Reserved. |
|