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.dmp
OWNER=scott
GRANTS=y ROWS=y COMPRESS=y
> exp scott/tiger FILE=scott.dmp OWNER=scott GRANTS=y ROWS=y COMPRESS=y
使用しているエクスポート・ユーティリティのリリース情報および接続しているOracle Databaseのリリース情報が表示されます。その後で、次に示すような状態メッセージが表示されます。
. . . about to export SCOTT's tables via Conventional Path ... . . exporting table BONUS 0 rows exported . . exporting table DEPT 4 rows exported . . exporting table EMP 14 rows exported . . exporting table SALGRADE 5 rows exported . . . Export terminated successfully without warnings.
表モードでは、表データまたは表定義のみをエクスポートできます。(エクスポートする行がない場合は、CREATE TABLE
文がエクスポート・ファイルに書き込まれます。このとき、権限付与および索引が指定されると、これらもエクスポート・ファイルに書き込まれます。)
EXP_FULL_DATABASE
ロールを持つユーザーは、表モードでTABLES=schemaname.tablename
を指定することによって、どのユーザーのスキーマに属する表でもエクスポートできます。
schemaname
を指定しない場合、エクスポート実行者のスキーマ名がデフォルト値として採用されます。次の例では、a
表およびc
表に対して、SYSTEM
スキーマがデフォルトとして採用されます。
> exp TABLES=(a, scott.b, c, mary.d)
EXP_FULL_DATABASE
ロールを持つユーザーは、他のユーザーが所有する依存オブジェクトのエクスポートも実行できます。権限を持たないユーザーは、そのユーザー自身が所有し、指定した表の依存オブジェクトのみをエクスポートできます。
表モードのエクスポートには、クラスタ定義がありません。このため、データはクラスタ化されていない表としてエクスポートされます。したがって、表モードは、表の非クラスタ化に使用できます。
この例では、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_P
nnn
形式の名前もインポートされます。同じ名前のパーティション表がすでに存在している場合、これ以降の処理は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. |
|