3.2 Oracle Data Pumpインポートの開始

Oracle Data Pump Importの起動には、impdpコマンドを使用します。

インポート操作の特性は、指定するインポート・パラメータによって決定されます。これらのパラメータは、コマンドラインまたはパラメータ・ファイルのいずれかで指定できます。

ノート:

  • インポート・ユーティリティは、Oracleサポート・サービスから要求された場合以外、SYSDBAとして起動しないでください。SYSDBAは内部的に使用され、一般ユーザーとは異なる特別な機能を持ちます。
  • NOLOGGING句を有効にして作成された表または表領域に対してデータ・ポンプ・インポートを実行する場合でも、REDOログ・ファイルが生成される場合があることに注意してください。このような場合に生成されるREDOは、通常、データ・ポンプ制御表のメンテナンスを目的としているか、または基礎となる再帰的領域トランザクション、データ・ディクショナリの変更、およびロギングを必要とする表の索引メンテナンスに関係しています。
  • エクスポート・データベースで使用されているタイムゾーン・バージョンが、インポート・データベースで使用されているバージョンより古い場合は、データ型がTIMESTAMP WITH TIMEZONEの列をロードすると、それ以外の場合よりも時間がかかります。この追加時間は、新しいタイムゾーン・ルールによってロードされる値が変更されるかどうかを確認するために必要です。

3.2.1 Oracle Data Pump Importのインタフェース

Oracle Data Pump Importは、コマンドライン、パラメータ・ファイルまたは対話方式コマンド・モードを使用して操作できます。

  • コマンドライン・インタフェース: 直接コマンドラインでインポートのパラメータを指定できます。コマンドライン・インタフェースで使用可能なパラメータの詳細。
  • パラメータ・ファイル・インタフェース: パラメータ・ファイルでコマンドラインのパラメータを指定できます。パラメータ・ファイルはネストできないため、PARFILEパラメータのみが例外となります。値の指定に引用符が必要なパラメータを指定する場合は、パラメータ・ファイルを使用することをお薦めします。
  • 対話方式コマンド・インタフェース: 端末へのロギングを中止してインポート・ユーティリティのプロンプトを表示します。対話方式コマンド・モード固有のコマンドも含めて、様々なコマンドが入力できます。このモードは、コマンドライン・インタフェースまたはパラメータ・ファイル・インタフェースで開始されたインポート操作中に[Ctrl]キーを押しながら[C]キーを押すと使用可能になります。対話方式コマンド・モードは、実行中のジョブまたは停止されたジョブに接続した場合も使用可能になります。

3.2.2 Oracle Data Pump Importのモード

Oracle Data Pumpで使用するインポート・モードにより、何をインポートするかを決定します。

3.2.2.1 Oracle Data Pump Importのモードについて

Oracle Data Pump Importの各モードの、インポート中の動作について学習します。

インポートについて指定するOracle Data Pumpインポート・モードは、操作のソースに適用されます。NETWORK_LINKパラメータを指定すると、そのソースはダンプ・ファイル・セットまたは別のデータベースのいずれかになります。

インポート操作のソースがダンプ・ファイル・セットの場合、モードの指定はオプションです。モードを指定しない場合、インポート・ユーティリティは、エクスポート操作実行時のモードでダンプ・ファイル・セット全体をロードしようとします。

モードは、適切なパラメータを使用してコマンドラインで指定します。

ノート:

全体モード・エクスポートによって作成されたダンプ・ファイルをインポートする場合、インポート操作はSYSアカウントのパスワードをソース・データベースからコピーしようとします。このコピーは、失敗する場合があります(パスワードが共有パスワード・ファイル内にある場合など)。失敗した場合は、インポートの完了後に、ターゲット・データベース上のSYSアカウントのパスワードを任意のパスワードに設定する必要があります。

3.2.2.2 全体インポート・モード

Oracle Data Pumpで全体インポートを指定するには、FULLパラメータを使用します。

全体インポート・モードでは、ソース(ダンプ・ファイル・セットまたは別のデータベース)の全内容がターゲット・データベースにロードされます。このモードは、ファイル・ベース・インポートのデフォルトです。ソースが自分のスキーマ以外のスキーマを含む別のデータベースである場合、DATAPUMP_IMP_FULL_DATABASEロールが必要です。

権限のないユーザーの場合、相互スキーマ参照はインポートされません。たとえば、インポートを実行するユーザーのスキーマ内の表にトリガーが定義されていても、そのトリガーが別のユーザーのスキーマに存在している場合はインポートされません。

ターゲット・データベースでは、DATAPUMP_IMP_FULL_DATABASEロールが必要です。全体インポートにNETWORK_LINKパラメータを使用する場合、ソース・データベースでは、DATAPUMP_EXP_FULL_DATABASEロールが必要です

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

全体モード・インポート時のトランスポータブル・オプションの使用

全体モード・インポート時にトランスポータブル・オプションを使用して、全体トランスポータブル・インポートを実行できます。

ネットワーク・ベースの全体トランスポータブル・インポートでは、FULL=YESTRANSPORTABLE=ALWAYSおよびTRANSPORT_DATAFILES=datafile_nameパラメータを使用する必要があります。

ファイル・ベースの全体トランスポータブル・インポートでは、TRANSPORT_DATAFILES=datafile_nameパラメータのみを使用する必要があります。データ・ポンプ・インポートでは、TRANSPORTABLE=ALWAYSおよびFULL=Yパラメータの存在が推測されます。

全体トランスポータブル・インポートを実行する場合、次のようないくつかの要件があります。

  • 同時にNETWORK_LINKパラメータを指定するか、エクスポート中にインポート対象のダンプ・ファイル・セットがトランスポータブル・オプションを使用して作成されている必要があります。
  • ネットワーク・リンクを使用する場合、NETWORK_LINKパラメータで指定されているデータベースがOracle Database 11gリリース2 (11.2.0.3)以上であり、Oracle Data PumpのVERSIONパラメータが12以上に設定されている必要があります。(ネットワーク・インポート以外では、ダンプ・ファイルから暗黙的にVERSION=12が決定されます。)
  • ソース・プラットフォームとターゲット・プラットフォームのエンディアンが異なる場合、転送するデータを変換してターゲット・プラットフォームの形式にする必要があります。データを変換するには、DBMS_FILE_TRANSFERパッケージまたはRMAN CONVERTコマンドのどちらかを使用します。
  • ソース・プラットフォームとターゲット・プラットフォームでエンディアンが同じでない場合、暗号化された表領域の全体トランスポータブル・インポートは、ネットワーク・モードまたはダンプ・ファイル・モードではサポートされません

全体トランスポータブル・インポートの詳細な例は、Oracle Database管理者ガイドを参照してください。

3.2.2.3 スキーマ・モード

Oracle Data Pumpでスキーマ・インポートを指定するには、SCHEMASパラメータを使用します。

スキーマ・インポートでは、指定されたスキーマが所有しているオブジェクトのみがロードされます。ソースは、全体インポート・モード、表モード、表領域モードまたはスキーマ・モードのエクスポート・ダンプ・ファイル・セット、または別のデータベースです。ユーザーにDATAPUMP_IMP_FULL_DATABASEロールが付与されている場合は、スキーマ・リストを指定できます。これにより、スキーマ内のオブジェクトに加えてスキーマ自体(システム権限を含む)もデータベース内に作成されます。

相互スキーマ参照は、残りのスキーマが現行のスキーマに再マップされないかぎり、権限のないユーザーに対してインポートされません。たとえば、インポートを実行するユーザーのスキーマ内の表にトリガーが定義されていても、そのトリガーが別のユーザーのスキーマに存在している場合はインポートされません。

関連トピック

3.2.2.4 表モード

Oracle Data Pumpで表モードでのインポートを指定するには、TABLESパラメータを使用します。

表モード・インポートは、TABLESパラメータを使用して指定します。表モードでは、指定した表、パーティションおよびそれらの依存オブジェクトのみがロードされます。ソースは、全体インポート・モード、スキーマ・モード、表領域モードまたは表モードのエクスポート・ダンプ・ファイル・セット、または別のデータベースです。自分のスキーマに存在しない表を指定するには、DATAPUMP_IMP_FULL_DATABASEロールが必要です。

TRANPORTABLE=ALWAYSパラメータをTABLESパラメータと組み合せて指定することで、表モードのインポート中にトランスポータブル・オプションを使用できます。このオプションを使用する場合、NETWORK_LINKパラメータも使用する必要があります。

表および表パーティションのリカバリには、RMANバックアップおよびRMAN RECOVER TABLEコマンドも使用できます。このプロセスの間に、RMANによって、リカバリされたオブジェクトを含むOracle Data Pumpエクスポート・ダンプ・ファイルが作成(およびオプションでインポート)されます。

3.2.2.5 表領域モード

Oracle Data Pumpで表領域モードでのインポートを指定するには、TABLESPACESパラメータを使用します。

表領域モードのインポートは、TABLESPACESパラメータを使用して指定します。表領域モードでは、指定した表領域内のすべてのオブジェクトが、依存オブジェクトとともにロードされます。ソースは、全体インポート・モード、スキーマ・モード、表領域モードまたは表モードのエクスポート・ダンプ・ファイル・セット、または別のデータベースです。権限のないユーザーの場合、現行のスキーマに再マッピングされていないオブジェクトは処理されません。

関連トピック

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

Oracle Data Pumpでトランスポータブル表領域モードでのインポートを指定するには、TRANSPORT_TABLESPACESパラメータを使用します。

トランスポータブル表領域モードでは、(NETWORK_LINKパラメータで指定された)データベース・リンクを使用するか、メタデータを含むダンプ・ファイルを指定することで、別のデータベースからメタデータがロードされます。TRANSPORT_DATAFILESパラメータで指定した実際のデータ・ファイルは、ターゲット・データベースで使用するために、通常は、データ・ファイルをターゲット・システムにコピーすることによって、ソース・システムで使用可能にする必要があります。

トランスポータブル・ジョブを実行する場合は、インポート・ジョブがターゲット・システムで正常に完了するまで、ソース・システムにデータ・ファイルのコピーを保持することをお薦めします。データ・ファイルのコピーがあると、インポート・ジョブがなんらかの理由で失敗しても、破損していないデータ・ファイルのコピーが残ることになります。

このモードの使用には、DATAPUMP_IMP_FULL_DATABASEロールが必要です。

ノート:

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

3.2.3 Oracle Data Pumpインポートのネットワークに関する考慮事項

Oracle Data Pump ImportユーティリティimpdpでどのようにOracle*Netまたはネット・サービス名を使用して接続文字列内の接続識別子によりインスタンスが特定されるかと、NETWORK_LINKパラメータを使用したインポート操作とそれらとではどのような違いがあるかを説明します。

impdpの起動時には、接続文字列で接続識別子を指定できます。この接続識別子は、現在のOracleシステムID (SID)で識別される現在のインスタンスとは別のものにすることができます。

接続識別子の指定には、Oracle*Net接続記述子を使用することも、接続記述子にマップされるネット・サービス名(通常はtnsnames.oraファイルで定義されているもの)を使用することもできます。接続識別子を使用するには、Oracle Net Listenerが実行中であることが必要です(デフォルト・リスナーを起動するには、lsnrctl startと入力します)。

次の例では、このタイプの接続を示します(inst1が接続識別子です)。

impdp hr@inst1 DIRECTORY=dpump_dir1 DUMPFILE=hr.dmp TABLES=employees

インポートによってパスワードの入力を要求されます。

Password: password

簡易接続文字列を指定するには、接続文字列はエスケープされた引用符付き文字列である必要があります。最も単純な形式の簡易接続文字列は、文字列database_host[:port][/[service_name]で構成されます。たとえば、ホストがinst1で、pdb1でExportを実行する場合、簡易接続文字列は次のようになります。

impdp hr@\"inst1@example.com/pdb1" DIRECTORY=dpump_dir1 DUMPFILE=hr.dmp TABLES=employees

引用符なしの文字列を使用する場合は、パラメータ・ファイルで簡易接続接続文字列を指定できます。

ローカル・インポート・クライアントは接続識別子inst1 (ネット・サービス名)によって識別されるデータベース・インスタンスに接続し、ダンプ・ファイルhr.dmpからinst1にデータをインポートします。

インポート・ユーティリティの起動時に接続識別子を指定することと、NETWORK_LINKパラメータを使用してインポート操作を実行することは異なります。インポート操作を開始して接続識別子を指定すると、接続識別子によって識別されるデータベース・インスタンスにローカルのインポート・クライアントが接続され、コマンドラインで指定されるダンプ・ファイルからそのデータベース・インスタンスにデータがインポートされます。

その一方、NETWORK_LINKパラメータを使用してインポートを実行すると、インポートはデータベース・リンクを使用して実行されます。ダンプ・ファイルは介在しません。(データベース・リンクとは2つの物理データベース・サーバー間の接続で、データベース・リンクによってクライアントは2つの物理データベース・サーバーに1つの論理データベースとしてアクセスできます。)