2.2 Oracle Data Pumpエクスポートの起動

Oracle Data Pumpエクスポート・ユーティリティは、expdpコマンドを使用して起動します。

Oracle Data Pumpエクスポート操作の特性は、エクスポート・ユーティリティのパラメータの指定内容によって決まります。こうしたパラメータは、コマンドラインまたは構成ファイルのいずれかで指定できます。

注意:

エクスポート・ユーティリティは、Oracleサポート・サービスから要求された場合以外、SYSDBAとして起動しないでください。SYSDBAは内部的に使用され、一般ユーザーとは異なる特別な機能を持ちます。

2.2.1 Oracle Data Pumpエクスポートのインタフェース

Oracle Data Pumpエクスポートとは、コマンドライン、パラメータ・ファイルまたは対話方式コマンド・モードを使用して対話できます。

次の3つのオプションから選択します。

  • コマンドライン・インタフェース: ほとんどのエクスポート・パラメータを直接コマンドラインで指定できます。

  • パラメータ・ファイル・インタフェース: パラメータ・ファイルでコマンドラインのパラメータを指定できます。パラメータ・ファイルはネストできないため、PARFILEパラメータのみが例外となります。パラメータを使用するときに、その値に引用符が必要な場合は、パラメータ・ファイルの使用をお薦めします。

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

2.2.2 Oracle Data Pump Exportモード

エクスポート・ユーティリティには、Oracle Databaseデータの様々な部分をアンロードするための様々なモードがあります。

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

ノート:

Oracleが管理するいくつかのOracle Databaseのシステム・スキーマは、ユーザー・スキーマではないためにエクスポートできません。それらのスキーマには、Oracleが管理するデータおよびメタデータが含まれています。エクスポートされないシステム・スキーマの例としては、SYSORDSYSMDSYSなどがあります。

2.2.2.1 全体エクスポート・モード

Oracle Data Pumpを使用すると、FULLパラメータを使用して全データベースのエクスポートを実行できます。

全データベース・エクスポートでは、データベース全体がアンロードされます。このモードには、DATAPUMP_EXP_FULL_DATABASEロールが必要です。

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

FULLパラメータをTRANSPORTABLE=ALWAYSパラメータとともに指定すると、データ・ポンプによって全体トランスポータブル・エクスポートが実行されます。全体トランスポータブル・エクスポートでは、データベースの完全なコピーを作成するために必要なすべてのオブジェクトおよびデータがエクスポートされます。次のデータ移動方法の組合せが使用されます。

  • トランスポータブル表領域に存在するオブジェクトは、そのメタデータのみがダンプ・ファイル・セットにアンロードされ、データ自体はデータ・ファイルをターゲット・データベースにコピーしたときに移動されます。コピーする必要のあるデータ・ファイルは、エクスポート操作のログ・ファイルの最後に表示されます。

  • 非トランスポータブル表領域に存在するオブジェクト(SYSTEMSYSAUXなど)は、ダイレクト・パス・アンロードおよび外部表を使用して、そのメタデータとデータの両方がダンプ・ファイル・セットにアンロードされます。

制限事項

全体トランスポータブル・エクスポートの実行には、次の制限があります。

  • 全体トランスポータブル・エクスポートを実行するユーザーには、DATAPUMP_EXP_FULL_DATABASE権限が必要です。

  • エクスポートを実行するユーザーのデフォルトの表領域を、転送対象となっている表領域のいずれかに設定することはできません。

  • エクスポートされるデータベースに、暗号化された表領域または暗号化された列(透過的データ暗号化(TDE)列またはSecureFiles LOB列)のある表が含まれる場合、ENCRYPTION_PASSWORDパラメータも指定する必要があります。

  • ソース・データベースとターゲット・データベースは、ソース・データベースに暗号化された表領域がある場合、同じエンディアンのプラットフォーム上に存在する必要があります。

  • ソース・プラットフォームとターゲット・プラットフォームのエンディアンが異なる場合、転送するデータを変換してターゲット・プラットフォームの形式にする必要があります。DBMS_FILE_TRANSFERパッケージまたはRMAN CONVERTコマンドを使用してデータを変換できます。

  • エクスポートのために選択された記憶域を持つすべてのオブジェクトでは、そのすべての記憶域セグメントが、管理対象の非トランスポータブル表領域(SYSTEM/SYSAUX)内に全体として存在するか、ユーザー定義のトランスポータブル表領域内に全体として存在する必要があります。シングル・オブジェクトの記憶域は、2種類の表領域にまたがることはできません。

  • 全体トランスポータブル・エクスポートを使用してネットワークを介してデータベースを転送する場合、監査証跡情報自体がユーザー定義の表領域に格納されていると、管理表領域(SYSTEMSYSAUXなど)に格納された表に対して監査を有効にすることはできません。

  • ソース・データベースとターゲット・データベースの両方でOracle Database 12cを実行している場合、全体トランスポータブル・エクスポートを実行するには、Oracle Data PumpのVERSIONパラメータを12.0以上に設定するか、COMPATIBLEデータベース初期化パラメータを12.0以上に設定する必要があります。

Oracle Databaseからの全体エクスポート11.2.0.3

全体トランスポータブル・エクスポートは、リリース11.2.0.3以降を実行しているソース・データベースでサポートされます。全体トランスポータブル・エクスポートを実行するには、次の構文例に示すように、Oracle Data PumpのVERSIONパラメータを12.0以上に設定します。user_nameは、全体トランスポータブル・エクスポートを実行するユーザーです。

> expdp user_name FULL=y DUMPFILE=expdat.dmp DIRECTORY=data_pump_dir 
      TRANSPORTABLE=always VERSION=12.0 LOGFILE=export.log

拡張性フィルタを使用した全体エクスポートおよびインポート

次の例では、全体エクスポートを使用して、audit_trailsメタデータおよびデータのみをソース・データベースからターゲット・データベースにコピーします。

> expdp user/pwd directory=mydir full=y include=AUDIT_TRAILS
> impdp user/pwd directory=mydir

ソース・データベースからのエクスポートを完全モードで完了した場合は、全体エクスポートから監査証跡のみをインポートすることもできます。

> expdp user/pwd directory=mydir full=y
> impdp user/pwd directory=mydir include=AUDIT_TRAILS 

有効な拡張性タグのリストを取得するには、次の問合せを使用します。

SELECT OBJECT_PATH FROM DATABASE_EXPORT_PATHS WHERE tag=1 ORDER BY 1;

2.2.2.2 スキーマ・モード

データ・ポンプでスキーマ・エクスポートを指定するには、SCHEMASパラメータを使用します。スキーマ・エクスポートは、デフォルトのエクスポート・モードです。

DATAPUMP_EXP_FULL_DATABASEロールを所有している場合は、スキーマのリストを指定し、オプションでスキーマ定義およびこれらのスキーマに対するシステム権限を指定することができます。DATAPUMP_EXP_FULL_DATABASEロールを所有していない場合は、自分のスキーマのみをエクスポートできます。

SYSスキーマは、エクスポート・ジョブのソース・スキーマとして使用できません。

相互スキーマ参照は、参照されるスキーマがエクスポート対象のスキーマのリストにも指定されないかぎり、エクスポートされません。たとえば、指定されたいずれかのスキーマ内の表にトリガーが定義されていても、そのトリガーが、明示的に指定されていないスキーマ内に常駐している場合はエクスポートされません。また、指定されたスキーマ内の表が依存する外部型定義もエクスポートされません。この場合は、インポート時に、型定義がターゲット・インスタンスにすでに存在している必要があります。

関連トピック

2.2.2.3 表モード

Oracle Data Pumpを使用して表モード・エクスポートを実行するには、TABLESパラメータを使用して表を指定します。

表モードでは、指定した表、パーティションおよびそれらの依存オブジェクトのみがアンロードされます。所有するスキーマや列のタイプなど、表の作成に必要なすべてのオブジェクトがすでに存在している必要があります。

TRANSPORTABLE=ALWAYSパラメータとTABLESパラメータを組み合せて指定すると、オブジェクト・メタデータのみがアンロードされます。実際のデータを移動するには、データ・ファイルをターゲット・データベースにコピーします。これにより、エクスポート時間が短縮されます。異なるリリースまたはプラットフォーム間でデータ・ファイルを移動する場合は、データ・ファイルをOracle Recovery Manager (RMAN)で処理する必要があります。

自分のスキーマに存在しない表を指定するには、DATAPUMP_EXP_FULL_DATABASEロールが必要です。列の型定義は、表モードではエクスポートされません。この場合は、インポート時に、型定義がターゲット・インスタンスにすでに存在している必要があります。また、スキーマ・エクスポートの場合と同様に、相互スキーマ参照もエクスポートされません。

表および表パーティションをリカバリするには、RMANバックアップおよびRMAN RECOVER TABLEコマンドも使用できます。このプロセス中に、RMANによって、リカバリされたオブジェクトを含むデータ・ポンプ・エクスポートのダンプ・ファイルが作成(およびオプションでインポート)されます。プラットフォーム間でのデータの転送の詳細は、Oracle Databaseバックアップおよびリカバリ・ガイドを参照してください。

表モード・エクスポートを実行する場合、次の制限事項があります。

  • TRANSPORTABLE=ALWAYSパラメータをTABLESパラメータとともに使用する場合、エクスポート対象の表に暗号化された列(透過的データ暗号化(TDE)列またはSecureFiles LOB列のいずれか)が含まれている場合は、ENCRYPTION_PASSWORDパラメータも使用する必要があります。

2.2.2.4 表領域モード

データ・ポンプを使用して表領域エクスポートを実行するには、TABLESPACESパラメータを使用して表を指定します。

表領域モードでは、指定した表領域内に存在する表のみがアンロードされます。表がアンロードされると、その表の依存オブジェクトもアンロードされます。オブジェクトのメタデータとデータは、両方ともアンロードされます。表領域モードでは、指定した表領域内に表の一部が存在する場合、その表とその表のすべての依存オブジェクトがエクスポートされます。特権ユーザーは、すべての表を取得します。権限のないユーザーは、自分のスキーマ内の表のみを取得します。

関連トピック

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

Oracle Data Pumpを使用してトランスポータブル表領域エクスポートを実行するには、TRANSPORT_TABLESPACESパラメータを使用します。

トランスポータブル表領域モードでは、指定した表領域セット内にある表のメタデータ(およびその表の依存オブジェクト)のみがエクスポートされます。表領域データ・ファイルは別の操作でコピーされます。次に、トランスポータブル表領域インポートが実行され、メタデータを含むダンプ・ファイルのインポートと、使用するデータ・ファイルの指定が行われます。

トランスポータブル表領域モードでは、指定した表がすべてその表領域に含まれている必要があります。つまり、表領域セット内に定義されているすべての表(およびその索引)のすべての記憶域セグメントも、セット内に含まれている必要があります。表領域セット内に違反が含まれている場合は、エクスポート・ユーティリティが実際にエクスポートを実行することなくすべての問題を識別します。

指定した表領域内にある表の列の型定義がエクスポートおよびインポートされます。これらの型を所有するスキーマが、ターゲット・インスタンスに存在する必要があります。

Oracle Database 21c以降、トランスポータブル表領域のエクスポートは、1を超える並列度で実行できます。

ノート:

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

Oracle Data Pumpを使用してトランスポータブル表領域エクスポートを実行する場合、次の制限事項があります。

  • エクスポート対象のいずれかの表領域に、暗号化された列(透過的データ暗号化(TDE)列またはSecureFiles LOB列のいずれか)のある表が含まれている場合は、ENCRYPTION_PASSWORDパラメータも指定する必要があります。

  • エクスポート対象のいずれかの表領域が暗号化されている場合、ENCRYPTION_PASSWORDの使用はオプションですが、使用することをお薦めします。この場合、ENCRYPTION_PASSWORDを省略すると、次の警告メッセージが表示されます。

    ORA-39396: Warning: exporting encrypted data using transportable option without password

    この警告は、このようなトランスポータブル表領域ジョブを正常にインポートするには、エクスポートを実行するとき、ソース・データベースで使用されるものと同じデータベース・アクセス・キーのコピーが、ターゲット・データベース・ウォレットに含まれている必要があることを示します。エクスポート中およびインポート中にENCRYPTION_PASSWORDパラメータを使用すると、この要件は排除されます。

2.2.3 Oracle Data Pumpエクスポートのネットワークに関する考慮事項

Oracle Data Pumpエクスポート・ユーティリティexpdpがOracle* Netまたはネット・サービス名を使用して接続文字列に含まれた接続識別子でインスタンスを識別する方法と、NETWORK_LINKパラメータを使用したエクスポート操作との相違点について学習します。

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

接続識別子を手動で指定するには、Oracle*Net接続記述子、簡易接続識別子、または接続記述子にマップするネット・サービス名(通常、tnsnames.oraファイルで定義される)のいずれかを使用します。

接続識別子を使用する場合は、Oracle Net Listenerを実行している必要があります(デフォルト・リスナーを起動するには、lsnrctl startと入力します)。次の例では、このタイプの接続を示します(inst1が接続識別子です)。

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

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

Password: password

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

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

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

ローカル・エクスポート・クライアントは接続識別子inst1 (Netサービス名)で定義されるデータベース・インスタンスに接続して、inst1からデータを取得し、そのデータをinst1のダンプ・ファイルhr.dmpに書き込みます。

エクスポート・ユーティリティの起動時に接続識別子を指定することと、NETWORK_LINKパラメータを使用してエクスポート操作を実行することは異なります。エクスポート操作を開始して接続識別子を指定すると、接続識別子によって識別されたデータベース・インスタンスにローカルのエクスポート・クライアントが接続され、データベース・インスタンスのデータが取得され、そのデータベース・インスタンスのダンプ・ファイル・セットにデータが書き込まれます。その一方、NETWORK_LINKパラメータを使用してエクスポートを実行すると、エクスポートはデータベース・リンクを使用して実行されるようになります。(データベース・リンクとは2つの物理データベース・サーバー間の接続で、データベース・リンクによってクライアントは2つの物理データベース・サーバーに1つの論理データベースとしてアクセスできます。)