3.2 Oracle Data Pumpインポートの開始
Oracle Data Pump Importの起動には、impdp
コマンドを使用します。
インポート操作の特性は、指定するインポート・パラメータによって決定されます。これらのパラメータは、コマンドラインまたはパラメータ・ファイルのいずれかで指定できます。
ノート:
- インポート・ユーティリティは、Oracleサポート・サービスから要求された場合以外、
SYSDBA
として起動しないでください。SYSDBA
は内部的に使用され、一般ユーザーとは異なる特別な機能を持ちます。 -
NOLOGGING
句を有効にして作成された表または表領域に対してデータ・ポンプ・インポートを実行する場合でも、REDOログ・ファイルが生成される場合があることに注意してください。このような場合に生成されるREDOは、通常、データ・ポンプ制御表のメンテナンスを目的としているか、または基礎となる再帰的領域トランザクション、データ・ディクショナリの変更、およびロギングを必要とする表の索引メンテナンスに関係しています。 - エクスポート・データベースで使用されているタイムゾーン・バージョンが、インポート・データベースで使用されているバージョンより古い場合は、データ型が
TIMESTAMP WITH TIMEZONE
の列をロードすると、それ以外の場合よりも時間がかかります。この追加時間は、新しいタイムゾーン・ルールによってロードされる値が変更されるかどうかを確認するために必要です。
- Oracle Data Pump Importのインタフェース
Oracle Data Pump Importは、コマンドライン、パラメータ・ファイルまたは対話方式コマンド・モードを使用して操作できます。 - Oracle Data Pump Importのモード
Oracle Data Pumpで使用するインポート・モードにより、何をインポートするかを決定します。 - Oracle Data Pump Importのネットワークに関する考慮事項
Oracle Data Pump Importユーティリティimpdp
でどのようにOracle*Netまたはネット・サービス名を使用して接続文字列内の接続識別子によりインスタンスが特定されるかと、NETWORK_LINK
パラメータを使用したインポート操作とそれらとではどのような違いがあるかを説明します。
親トピック: Oracle Data Pumpインポート
3.2.1 Oracle Data Pump Importのインタフェース
Oracle Data Pump Importは、コマンドライン、パラメータ・ファイルまたは対話方式コマンド・モードを使用して操作できます。
- コマンドライン・インタフェース: 直接コマンドラインでインポートのパラメータを指定できます。コマンドライン・インタフェースで使用可能なパラメータの詳細。
- パラメータ・ファイル・インタフェース: パラメータ・ファイルでコマンドラインのパラメータを指定できます。パラメータ・ファイルはネストできないため、
PARFILE
パラメータのみが例外となります。値の指定に引用符が必要なパラメータを指定する場合は、パラメータ・ファイルを使用することをお薦めします。 - 対話方式コマンド・インタフェース: 端末へのロギングを中止してインポート・ユーティリティのプロンプトを表示します。対話方式コマンド・モード固有のコマンドも含めて、様々なコマンドが入力できます。このモードは、コマンドライン・インタフェースまたはパラメータ・ファイル・インタフェースで開始されたインポート操作中に[Ctrl]キーを押しながら[C]キーを押すと使用可能になります。対話方式コマンド・モードは、実行中のジョブまたは停止されたジョブに接続した場合も使用可能になります。
3.2.2 Oracle Data Pump Importのモード
Oracle Data Pumpで使用するインポート・モードにより、何をインポートするかを決定します。
- Oracle Data Pump Importのモードについて
Oracle Data Pump Importの各モードの、インポート中の動作について学習します。 - 全体インポート・モード
Oracle Data Pumpで全体インポートを指定するには、FULL
パラメータを使用します。 - スキーマ・モード
Oracle Data Pumpでスキーマ・インポートを指定するには、SCHEMAS
パラメータを使用します。 - 表モード
Oracle Data Pumpで表モードでのインポートを指定するには、TABLES
パラメータを使用します。 - 表領域モード
Oracle Data Pumpで表領域モードでのインポートを指定するには、TABLESPACES
パラメータを使用します。 - トランスポータブル表領域モード
Oracle Data Pumpでトランスポータブル表領域モードでのインポートを指定するには、TRANSPORT_TABLESPACES
パラメータを使用します。
親トピック: Oracleデータ・ポンプ・インポートの開始
3.2.2.1 Oracle Data Pump Importのモードについて
Oracle Data Pump Importの各モードの、インポート中の動作について学習します。
インポートについて指定するOracle Data Pumpインポート・モードは、操作のソースに適用されます。NETWORK_LINK
パラメータを指定すると、そのソースはダンプ・ファイル・セットまたは別のデータベースのいずれかになります。
インポート操作のソースがダンプ・ファイル・セットの場合、モードの指定はオプションです。モードを指定しない場合、インポート・ユーティリティは、エクスポート操作実行時のモードでダンプ・ファイル・セット全体をロードしようとします。
モードは、適切なパラメータを使用してコマンドラインで指定します。
ノート:
全体モード・エクスポートによって作成されたダンプ・ファイルをインポートする場合、インポート操作はSYS
アカウントのパスワードをソース・データベースからコピーしようとします。このコピーは、失敗する場合があります(パスワードが共有パスワード・ファイル内にある場合など)。失敗した場合は、インポートの完了後に、ターゲット・データベース上のSYS
アカウントのパスワードを任意のパスワードに設定する必要があります。
親トピック: Oracle Data Pump Importのモード
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=YES
、TRANSPORTABLE=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
ロールが付与されている場合は、スキーマ・リストを指定できます。これにより、スキーマ内のオブジェクトに加えてスキーマ自体(システム権限を含む)もデータベース内に作成されます。
相互スキーマ参照は、残りのスキーマが現行のスキーマに再マップされないかぎり、権限のないユーザーに対してインポートされません。たとえば、インポートを実行するユーザーのスキーマ内の表にトリガーが定義されていても、そのトリガーが別のユーザーのスキーマに存在している場合はインポートされません。
関連トピック
親トピック: Oracle Data Pump Importのモード
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
パラメータを使用して指定します。表領域モードでは、指定した表領域内のすべてのオブジェクトが、依存オブジェクトとともにロードされます。ソースは、全体インポート・モード、スキーマ・モード、表領域モードまたは表モードのエクスポート・ダンプ・ファイル・セット、または別のデータベースです。権限のないユーザーの場合、現行のスキーマに再マッピングされていないオブジェクトは処理されません。
関連トピック
親トピック: Oracle Data Pump Importのモード
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つの論理データベースとしてアクセスできます。)
親トピック: Oracleデータ・ポンプ・インポートの開始