1 Oracle Data Pumpの概要
Oracle Data Pumpテクノロジを使用すると、データおよびメタデータをデータベース間で非常に高速に移動できます。
次の項目を理解することは、Oracle Data Pumpを最大限に活用するために役立ちます。
- Oracle Data Pumpのコンポーネント
Oracle Data Pumpは、コマンドライン・クライアントのexpdp
とimpdp
、DBMS_DATAPUMP
PL/SQLパッケージ(データ・ポンプAPI)、およびDBMS_METADATA
PL/SQLパッケージ(メタデータAPI)の3つの個別のコンポーネントで構成されています。 - Oracle Data Pumpによるデータの移動方法
Oracle Data Pumpによりデータベース内におよびデータベース外にデータを移動するには、いくつかの方法を使用できます。ユースケースに最適な方法を選択できます。 - CDBでのOracle Data Pumpの使用
Oracle Data Pumpを使用すると、非CDBのデータベースの全部または一部をPDBに移行することも、同じCDB内または異なるCDB内のPDB間で移行することも、PDBから非CDBに移行することもできます。 - クラウド移行前アドバイザ・ツール
クラウド移行前アドバイザ・ツールは、データベースをOracle Cloudに移行するために役立ちます。 - Oracle Data Pumpのエクスポート操作およびインポート操作に必要なロール
エクスポートおよびインポートの多くの操作には、DATAPUMP_EXP_FULL_DATABASE
ロールとDATAPUMP_IMP_FULL_DATABASE
ロールが必要になります。 - Oracle Data Pumpジョブ処理中の動作について
Oracle Data Pumpジョブでは、データ・ポンプ制御ジョブ表、データ・ポンプ制御ジョブ・プロセスおよびワーカー・プロセスを使用して、作業を実行し、進行状況を追跡します。 - Oracle Data Pumpジョブの状態の監視方法
Oracle Data Pump ExportおよびOracle Data Pump Importクライアント・ユーティリティでは、ロギング・モードまたは対話方式コマンド・モードのどちらでもジョブに接続できます。 - V$SESSION_LONGOPSを使用したジョブ実行の進行状況の監視方法
表データの転送を監視する場合は、V$SESSION_LONGOPS
動的パフォーマンス・ビューを使用してOracle Data Pumpのジョブを監視できます。 - Oracle Data Pumpによるファイル割当て
Oracle Data Pumpのファイルの割当て方法と処理方法は、対話方式モードのコマンドを使用して変更できます。 - 異なるOracle Databaseリリース間のエクスポートとインポート
Oracle Data Pumpを使用して、異なるリリースのデータベース・ソフトウェア間でOracle Databaseのすべてまたは一部を移行できます。 - Oracle Data Pumpを使用したブロックチェーン表のエクスポートおよびインポート
ブロックチェーン表をエクスポートまたはインポートするには、次の最小要件、制限およびガイドラインを確認します。 - Oracle Data Pumpを使用したSecureFilesラージ・オブジェクトのエクスポートの管理
SecureFilesラージ・オブジェクト(LOB)のエクスポートは、コンテンツ・タイプ、VERSION
パラメータおよびその他の変数に影響されます。 - Oracle Data Pumpプロセス終了コード
Oracle Data Pump ExportおよびOracle Data Pump Import操作の状態をチェックするには、ログ・ファイルでプロセス終了コードを確認します。 - Oracle Data Pumpによるダンプ・ファイル・ブロックの管理方法
Oracle Database 23cより前のリリースでは、Oracle Data Pumpはヘッダー・ブロックを使用します。Oracle Database 23c以降、Oracle Data Pumpはトレーラ・ブロックを使用します。 - 統合監査を使用したOracle Data Pumpジョブの監視方法
特定のユーザー・データベース・アクションを監視および記録するには、統合監査を使用してデータ・ポンプ・ジョブの監査を実行します。 - Oracle Data Pump操作に対する暗号化されたデータのセキュリティ警告
Oracle Data Pumpは、暗号化されたデータが暗号化されていないデータとしてエクスポートされると警告を表示します。 - Oracle Data Pumpによるタイムスタンプ・データの処理方法
タイムスタンプ・データ型のTIMESTAMP WITH TIMEZONE
およびTIMESTAMP WITH LOCAL TIMEZONE
を含むエクスポートおよびインポート・ジョブの正常な完了に影響する可能性のある要因について学習します。 - 文字セットおよびグローバリゼーション・サポートに関する考慮点
ユーザー・データの文字セット変換とデータ定義言語(DDL)を使用したOracle Data Pumpエクスポートおよびインポートのグローバリゼーション・サポートについて説明します。 - データ・バインドされた照合に関連するOracle Data Pumpの動作
Oracle Data Pumpでは、データ・バインドされた照合(DBC)がサポートされます。
親トピック: Oracle Data Pump
1.1 Oracle Data Pumpのコンポーネント
Oracle Data Pumpは、コマンドライン・クライアントのexpdp
とimpdp
、DBMS_DATAPUMP
PL/SQLパッケージ(データ・ポンプAPI)、およびDBMS_METADATA
PL/SQLパッケージ(メタデータAPI)の3つの個別のコンポーネントで構成されています。
Oracle Data Pumpクライアントのexpdp
とimpdp
は、それぞれデータ・ポンプ・エクスポート・ユーティリティとデータ・ポンプ・インポート・ユーティリティを起動します。
expdp
クライアントおよびimpdp
クライアントでは、コマンドラインで入力されたパラメータを使用してエクスポートおよびインポートを実行するために、PL/SQLパッケージDBMS_DATAPUMP
で提供されているプロシージャを使用します。これらのパラメータは、完全なデータベースまたはデータベースのサブセットに対するデータおよびメタデータをエクスポートおよびインポート可能にします。
メタデータを移動する場合、データ・ポンプでは、PL/SQLパッケージDBMS_METADATA
で提供される機能が使用されます。DBMS_METADATA
パッケージは、ディクショナリのメタデータの抽出、操作および再作成に関する集中的な機能を提供します。
DBMS_DATAPUMP
およびDBMS_METADATA
の2つのPL/SQLパッケージは、データ・ポンプ・クライアントとは別に使用できます。
ノート:
Oracle Data Pumpエクスポートおよびインポートのすべての処理(ダンプ・ファイルの読取りおよび書込みを含む)は、指定したデータベース接続文字列によって選択されるシステム(サーバー)上で実行されます。つまり、ユーザーに権限がない場合は、データベース管理者(DBA)が、そのサーバーのファイル・システムで読取りおよび書込みが実行されるデータ・ポンプ・ファイル用のディレクトリ・オブジェクトを作成する必要があります。(セキュリティ上の理由から、承認されたユーザーのみが、ディレクトリ・オブジェクトにアクセスできるようにする必要があります。)特権ユーザーは、デフォルトのディレクトリ・オブジェクトを使用できます。
Oracle Databaseリリース18c以降では、Oracle Data Pumpを使用して、完全または部分のどちらかのエクスポートおよびインポート操作に統合監査証跡を含めることができます。ユーザー・インタフェースの変更はありません。データベースのエクスポート操作またはインポート操作を実行するときに、統合監査証跡がOracle Data Pumpのダンプ・ファイルに自動的に含まれます。DBMS_DATAPUMP
パッケージおよびDBMS_METADATA
パッケージの詳細は、Oracle Database PL/SQLパッケージおよびタイプ・リファレンスを参照してください。Oracle Data Pumpを使用した統合監査証跡のエクスポートとインポートの詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。
1.2 Oracle Data Pumpによるデータの移動方法
Oracle Data Pumpによりデータベース内におよびデータベース外にデータを移動するには、いくつかの方法を使用できます。ユースケースに最適な方法を選択できます。
ノート:
Oracle Database 18c以降のリリースでのUTL_FILE_DIR
のサポート終了は、Oracle Data Pumpに影響します。このサポート終了は、Oracle Data Pump、BFILEおよび外部表を含む(ただし、これに制限されない)、シンボリック・リンクを使用する以前のリリースの機能に影響する可能性があります。シンボリック・リンクで構成された影響を受ける機能を使用しようとした場合、ORA-29283: 無効なファイル操作です。: パスがsymlinkをトラバースしています
が発生します。シンボリック・リンクのかわりにディレクトリ・オブジェクトを使用することをお薦めします。
データ・ポンプでは、無効な一意索引を持つ表は、ロードされません。データを表にロードするには、その索引を削除するかまたは再度有効にする必要があります。
- データ・ファイル・コピーを使用したデータ移動
最も高速なデータ移動の方法は、データベースのデータ・ファイルを、データの解析や変更を行わずに、ターゲット・データベースにコピーすることです。 - ダイレクト・パスを使用したデータ移動
ダイレクト・パスは、データ・ファイル・コピーの次に高速なデータ移動方法です。この方法では、データベースのSQLレイヤーはバイパスされ、最小限の解析のみで行の移動がダンプ・ファイル間で行われます。 - 外部表を使用したデータ移動
データ・ファイル・コピーを選択しないときに、データの移動にダイレクト・パスが使用できない場合は、外部表メカニズムを使用できます。 - 従来型パスを使用したデータ移動
表属性の競合が存在する場合、Oracle Data Pumpは従来型パスを使用してデータを移動します。 - ネットワーク・リンク・インポートを使用したデータ移動
インポート操作のネットワーク・リンクの指定でNETWORK_LINK
インポート・パラメータを使用した場合、デフォルトでダイレクト・パス方式が使用されます。サポートされているデータベース・リンク・タイプを確認します。 - Oracle Data Pumpでのパラメータ・ファイル(Parfile)の使用
Oracle Data Pumpのエクスポートおよびインポートを簡略化するために、parameterファイル(parfileとも呼ばれる)を作成できます。
親トピック: Oracle Data Pumpの概要
1.2.1 データ・ファイル・コピーを使用したデータ移動
最も高速なデータ移動の方法は、データベースのデータ・ファイルを、データの解析や変更を行わずに、ターゲット・データベースにコピーすることです。
この方法でデータベースのデータ・ファイルをターゲット・データベースにコピーする場合は、データ・ポンプ・エクスポートを使用して、構造情報(メタデータ)のみをダンプ・ファイルにアンロードします。
-
トランスポータブル表領域のエクスポートの指定に、
TRANSPORT_TABLESPACES
パラメータが使用されている場合。指定した表領域のメタデータのみがエクスポートされます。 -
表モード・エクスポート(
TABLES
パラメータで指定)、全体モード・エクスポート(FULL
パラメータで指定)、または全体モード・ネットワーク・インポート(FULL
およびNETWORK_LINK
パラメータで指定)でTRANSPORTABLE=ALWAYS
パラメータが指定されている場合。
エクスポート操作でデータ・ファイル・コピーが使用されている場合、対応するインポート・ジョブでも常にデータ・ファイル・コピーが使用されます。その後のインポート操作時に、データ・ファイルとエクスポート・ダンプ・ファイルの両方をロードする必要があります。
ノート:
Oracle Database 21c以降、トランスポータブル・ジョブは障害発生時またはその近くで再開できます。トランスポータブル・インポート時に、表領域は一時的に読取り/書込みになり、読取り専用に戻されます。一時設定の変更は、パフォーマンスを向上させるためにOracle Database 12cリリース1 (12.1.0.2)で導入されました。ただし、この動作により、インポート・ジョブ・データ・ファイルのSCNが変更される場合もあることに注意してください。データ・ファイルのSCNを変更すると、将来、これらのファイルをトランスポータブル・インポートするときに問題が発生する可能性があります。
たとえば、表領域を読取りまたは書き込み可能にした後に、トランスポータブル表領域インポートが失敗した場合(読取り専用に戻した場合でも)、エクスポートのそのセクションのデータ・ファイルが破損します。これらはリカバリできません。
トランスポータブル・ジョブを実行する場合、ベスト・プラクティスは、インポート・ジョブがターゲット・システムで正常に完了するまで、ソース・システムにデータ・ファイルのコピーを保持することです。インポート・ジョブがなんらかの理由で失敗しても、コピーを保持しておくことで、破損していないデータ・ファイルのコピーを確保できます。
データ・ファイル・コピーを使用してデータを移動する場合、ソース・データベースとターゲット・データベース間の文字セットの互換性に関する制限があります。
ソース・プラットフォームとターゲット・プラットフォームのエンディアンが異なる場合、転送するデータを変換してターゲット・プラットフォームの形式にする必要があります。DBMS_FILE_TRANSFER
PL/SQLパッケージまたはRMAN
CONVERT
コマンドを使用してデータを変換できます。
関連項目:
-
RMAN
CONVERT
コマンドの詳細は、Oracle Databaseバックアップおよびリカバリ・リファレンスを参照してください -
データベース間で行う表領域の転送の詳細および例(データの変換方法を含む)は、Oracle Database管理者ガイドを参照してください
親トピック: Oracle Data Pumpによるデータの移動方法
1.2.2 ダイレクト・パスを使用したデータ移動
ダイレクト・パスは、データ・ファイル・コピーの次に高速なデータ移動方法です。この方法では、データベースのSQLレイヤーはバイパスされ、最小限の解析のみで行の移動がダンプ・ファイル間で行われます。
データ・ポンプでは、データをロードおよびアンロードするために、表の構造上可能なかぎり、自動的にダイレクト・パスによる方法が使用されます。たとえば、表にBFILE
型の列が含まれる場合は、ダイレクト・パスを使用して表をロードできないため、かわりに外部表が使用されます。
次の項では、ロードおよびアンロードに、ダイレクト・パスを使用できない場合について説明します。
ダイレクト・パス・ロードが使用されない場合
表が次に示すいずれかの条件に該当する場合、データ・ポンプでは、その表へのデータのロードにダイレクト・パスではなく外部表が使用されます。
-
CONTEXT
タイプの索引ではないドメイン索引がLOB列に存在する。 -
単一パーティションのロード中に、複数パーティション表のグローバル索引が存在する。この場合、パーティション化されたオブジェクト表も含まれる。
-
クラスタ内に表が存在する。
-
既存の表にアクティブなトリガーが存在する。
-
既存の表で、ファイングレイン・アクセス・コントロールが挿入モードで有効である。
-
表に
BFILE
列または不透明な型の列が存在する。 -
既存の表に参照整合性制約が存在する。
-
表に不透明な型が埋め込まれた
VARRAY
列が存在する。 -
表に暗号化された列がある。
-
データのインポート先が既存の表であり、次に示す1つ以上の条件に該当する。
-
アクティブなトリガーが存在する。
-
表がパーティション化されている。
-
ファイングレイン・アクセス・コントロールが挿入モードである。
-
参照整合性制約が存在する。
-
一意索引が存在する。
-
-
サプリメンタル・ロギングが有効で、表に1つ以上のLOB列がある。
-
指定した表のデータ・ポンプ・コマンドが、
QUERY
、SAMPLE
またはREMAP_DATA
パラメータを使用している。 -
表に
TIMESTAMP WITH TIME ZONE
データ型を持つ列(VARRAY
列を含む)が含まれ、かつ、タイムゾーン・データ・ファイルのバージョンがエクスポート・システムとインポート・システムの間で異なる。
ダイレクト・パス・アンロードが使用されない場合
表が次に示すいずれかの条件に該当する場合、データ・ポンプでは、その表へのデータのアンロードにダイレクト・パスではなく外部表が使用されます。
-
SELECT
に対するファイングレイン・アクセス・コントロールが有効である。 -
表は、キュー表である。
-
表に1つまたは複数の
BFILE
型または不透明な型の列、あるいは不透明な列を含むオブジェクト型が存在する。 -
表に暗号化された列がある。
-
表にアップグレードが必要な進化した型の列がある。
-
指定した表のデータ・ポンプ・コマンドが、
QUERY
、SAMPLE
またはREMAP_DATA
パラメータを使用している。 -
アンロード操作の前に、NOT NULLかつ指定されたデフォルト値を持つ列を含むように表が変更されている。
親トピック: Oracle Data Pumpによるデータの移動方法
1.2.3 外部表を使用したデータ移動
データ・ファイル・コピーを選択しないときに、データの移動にダイレクト・パスが使用できない場合は、外部表メカニズムを使用できます。
外部表によるメカニズムでは、データベース表のダンプ・ファイル・データにマップする外部表が作成されます。その後、SQLエンジンを使用してデータが移動されます。可能な場合は、データベースへのデータのコピーを高速化するために、インポート時にAPPEND
ヒントが使用されます。ダイレクト・パス・データと外部表データは、ダンプ・ファイル内で同様に表示されます。これらは同じであるため、Oracle Data Pumpはエクスポート時にダイレクト・パス・メカニズムを使用しても、ターゲット・データベースへのデータのインポート時には外部表を使用することがあります。同様に、Oracle Data Pumpはエクスポートに外部表を使用し、インポートにダイレクト・パスを使用することもあります。
特に、Oracle Data Pumpは次の状況で外部表を使用することがあります。
- パラレルSQL機能の使用がメリットとなる状況において、非常に大きい表およびパーティションをロードおよびアンロードする場合
- グローバル索引またはドメイン索引が定義されている表(パーティション・オブジェクト表など)をロードする場合
- トリガーがアクティブになっている表またはクラスタ表をロードする場合
- 暗号化された列が含まれている表をロードおよびアンロードする場合
- ファイングレイン・アクセス・コントロールでの挿入が使用可能な表をロードする場合
- インポート操作以外で作成された表をロードする場合(インポートを開始する前から表が存在する)
ノート:
Oracle Data Pumpがデータ・アクセスに外部表を使用する場合は、ORACLE_DATAPUMP
アクセス・ドライバが使用されます。ただし、Oracle Data Pumpが外部表を使用するときに作成するファイルは、ユーザーがSQL CREATE TABLE ... ORGANIZATION EXTERNAL
文を使用して手動で外部表を作成したときに作成されるファイルとは互換性がない点に注意してください。
1.2.4 従来型パスを使用したデータ移動
表属性の競合が存在する場合、Oracle Data Pumpは従来型パスを使用してデータを移動します。
表属性の競合が存在すると、Oracle Data Pumpは、ダイレクト・パスと外部表のどちらを使用してもデータを表にロードできません。このような場合は従来型パスが使用されますが、パフォーマンスに影響する可能性があります。
親トピック: Oracle Data Pumpによるデータの移動方法
1.2.5 ネットワーク・リンク・インポートを使用したデータ移動
インポート操作のネットワーク・リンクの指定でNETWORK_LINK
インポート・パラメータを使用した場合、デフォルトでダイレクト・パス方式が使用されます。サポートされているデータベース・リンク・タイプを確認します。
(たとえば、列の1つがBFILE
であるなどの理由で)ダイレクト・パスを使用できない場合、データの移動にはSQLのINSERT SELECT
文が使用されます。(Oracle Database 12cリリース2 (12.2.0.1)より前には、デフォルトでINSERT SELECT
文が使用されていました。)SELECT
句は、ネットワーク・リンク上のリモート・データベースからデータを取得します。INSERT
句はSQLを使用してデータをターゲット・データベースに挿入します。ダンプ・ファイルは含まれません。
エクスポート操作のネットワーク・リンクの指定にNETWORK_LINK
エクスポート・パラメータが使用されている場合、リモート・データベースのデータがターゲット・データベースのダンプ・ファイルに書き込まれます。(読取り専用のデータベースからのエクスポートには、NETWORK_LINK
パラメータが必要です。)
リンクとは、ネットワーク接続されたリモートのデータベースを示すため、データベース・リンクおよびネットワーク・リンクという用語は、同じ意味で使用されます。
サポートされているリンク・タイプ
データ・ポンプ・エクスポートおよびデータ・ポンプ・インポートでは、次のタイプのデータベース・リンクの使用がサポートされています。
- パブリック固定ユーザー
- パブリック接続ユーザー
- パブリック共有ユーザー(リンク所有者により使用される場合のみ)
- プライベート共有ユーザー(リンク所有者により使用される場合のみ)
- プライベート固定ユーザー(リンク所有者により使用される場合のみ)
サポートされていないリンク・タイプ
データ・ポンプ・エクスポートおよびデータ・ポンプ・インポートでは、次のタイプのデータベース・リンクの使用はサポートされていません。
- プライベート接続ユーザー
- 現在のユーザー
-
ネットワーク・ジョブのメタデータのパラレル・エクスポートまたはインポート。
従来型のジョブについては、メタデータのパラレル・インポートが必要な場合は、
NETWORK_LINK
のかわりにダンプ・ファイルを使用してください。
関連項目:
- データベース・リンクを介したエクスポートの実行の詳細は、エクスポートの「NETWORK_LINK」パラメータを参照してください。
- データベース・リンクを介したインポートの実行の詳細は、インポートの「NETWORK_LINK」パラメータを参照してください。
- データベース・リンクおよび異なるタイプのリンクを作成する方法の詳細は、Oracle Database管理者ガイドを参照してください
親トピック: Oracle Data Pumpによるデータの移動方法
1.2.6 Oracle Data Pumpでのパラメータ・ファイル(Parfile)の使用
Oracle Data Pumpのエクスポートおよびインポートを簡略化するために、パラメータ・ファイル(パラメータとも呼ばれる)を作成できます。
コマンドラインでOracle Data Pumpパラメータを入力するかわりに、エクスポート操作またはインポート操作を実行するときに、コマンドライン・パラメータをOracle Data Pumpクライアントに提供するパラメータ・テキスト・ファイル(parameter名にならってparfileとも呼ばれます)を準備できます。PARFILE
パラメータを入力し、パラメータ名を指定することで、Oracle Data Pumpがコマンドのパラメータを取得するように指定します。
PARFILE=[directory_path]file_name
Oracle Data Pumpのエクスポートまたはインポート操作が開始されると、パラメータ・ファイルがクライアントによって開かれ、読み取られます。パラメータ・ファイルのデフォルトの場所は、ユーザーのカレント・ディレクトリです。
たとえば:
expdp hr PARFILE=hr.par
パラメータ・ファイルを作成すると、そのファイルを複数のエクスポート操作またはインポート操作で再利用しやすくなるため、これらの操作を簡略化できます(特に定期的に実行する場合)。また、パラメータ・ファイルを作成すると、コマンドラインで長いOracle Data Pumpコマンドを入力したときに発生する可能性のある入力ミス(特に、値を正確に配置する必要がある引用符が必要なパラメータを使用する場合)を回避できます。システムによっては、パラメータ・ファイルを使用し、指定するパラメータ値の文字列の最初の文字に引用符を使用しない場合(たとえば、TABLES=scott."Emp"
)、エスケープ文字の使用が不要になることがあります。
必須のファイル拡張子はありませんが、Oracleの例では拡張子として.par
を使用します。Oracleでは、このファイル拡張子規則も使用することをお薦めします。一貫したパラメータ・ファイル拡張子を使用することで、これらのファイルの識別と使用が容易になります。
ノート:
PARFILE
パラメータは、パラメータ・ファイル内には指定できません。
詳細および例は、Oracle Data PumpのインポートおよびエクスポートのPARFILE
パラメータを参照してください。
1.3 CDBでのOracle Data Pumpの使用
Oracle Data Pumpを使用すると、非CDBのデータベースの全部または一部をPDBに移行することも、同じCDB内または異なるCDB内のPDB間で移行することも、PDBから非CDBに移行することもできます。
- マルチテナント環境でのOracle Data Pumpの使用について
一般的に、PDBでOracle Data Pumpを使用することは、非CDBでOracle Data Pumpを使用することと同じです。 - Oracle Data Pumpを使用したCDBへのデータの移動
空のPDBを作成した後にデータをPDBに移動する場合、Oracle Data Pumpの全体モード・エクスポートおよびインポート操作を使用できます。 - Oracle Data Pumpの使用によるCDB内または間のPDBの移動
PDBでのOracle Data Pumpのエクスポートおよびインポート操作でORA-65094
ユーザー・スキーマ・エラーを回避する方法について説明します。
親トピック: Oracle Data Pumpの概要
1.3.1 マルチテナント環境でのOracle Data Pumpの使用について
一般に、PDBでのOracle Data Pumpの使用は、非CDBでのOracle Data Pumpの使用と同じです。
マルチテナント・コンテナ・データベース(CDB)は、0、1または多数のユーザー作成のプラガブル・データベース(PDB)を含むOracle Databaseです。PDBは、スキーマ、スキーマ・オブジェクトおよび非スキーマ・オブジェクトのポータブル・セットで、Oracle Netクライアントからは、非CDBとして表示されます。非CDBとは、CDBではないOracle Databaseです。非CDBアーキテクチャのOracle Databaseは、Oracle Database 12cリリース1 (12.1)で非推奨になりました。Oracle Database 21c以降、非CDBアーキテクチャのデプロイメントはサポートされなくなりました。
Oracle Data Pumpを使用して、次のシナリオでデータベースの一部またはすべてを移行できます。
-
非CDBからPDB
-
同じCDBまたは異なるCDB内のPDB間
-
PDBから以前のリリースの非CDBへ
ノート:
Oracle Data Pumpでは、CDB全体の操作はサポートされません。CDBのルートまたはシード・データベースに接続している場合、Oracle Data Pumpにより次の警告が発行されます。
ORA-39357: Warning: Oracle Data Pump operations are not typically needed when connected to the root or seed of a container database.
親トピック: CDBでのOracle Data Pumpの使用
1.3.2 データ・ポンプを使用したCDBへのデータの移動
空のPDBを作成した後にPDBにデータを移動する場合、Oracle Data Pumpの全体モード・エクスポートおよびインポート操作を使用できます。
データはトランスポータブル・オプションを指定してもしなくてもインポートできます。トランスポータブル・オプションを全体モード・エクスポートまたはインポートで使用する場合、全体トランスポータブル・エクスポート/インポートと呼ばれます。
トランスポータブル・オプションが使用される場合、エクスポートおよびインポートでは、トランスポータブル表領域のデータ移動と従来のデータ移動の両方を使用しますが、後者はSYSTEM
やSYSAUX
などの非トランスポータブル表領域に存在する表が対象です。トランスポータブル・オプションを使用すると、エクスポート時間や(特に)インポート時間を短縮できます。トランスポータブル・オプションを使用すると、表データをアンロードおよび再ロードする必要がありません。また、ユーザー表領域の索引構造を再作成する必要がありません。
Oracle Data Pumpを使用してCDBにデータを移動する場合、次の要件に注意してください。
-
マルチテナント環境を管理するには、
CDB_DBA
ロールを持っている必要があります。 -
Oracle Database 11.2.0.2以前からの全体データベース・エクスポートは、Oracle Database 12c以降(CDBまたは非CDB)にインポートされる場合があります。ただし、登録したオプションおよびコンポーネントの情報がエクスポートに含まれるように、まずソース・データベースをOracle Database 11gリリース2 (11.2.0.3以降)にアップグレードすることをお薦めします。
-
全体データベース・エクスポートまたは全体トランスポータブル・データベース・エクスポートのいずれかを使用して、Oracle Database 11gリリース2 (11.2.0.3以上)をCDB(または非CDB)に移行する場合、Oracle Data Pumpのエクスポート・パラメータを少なくとも
VERSION=12
に設定して、Oracle Database 12c以降のリリースにインポート可能なダンプ・ファイルを生成する必要があります。VERSION=12
を設定しない場合、生成したエクスポート・ファイルには、登録したデータベース・オプションおよびコンポーネントの完全な情報は含まれません。 -
ネットワーク・ベースの全体トランスポータブル・インポートでは、
FULL=YES
、TRANSPORTABLE=ALWAYS
およびTRANSPORT_DATAFILES=datafile_name
パラメータを使用する必要があります。ソース・データベースがOracle Database 11gリリース11.2.0.3以上で、Oracle Database 12cリリース1 (12.1)より前の場合、VERSION=12
パラメータも必要です。 -
ファイル・ベースの全体トランスポータブル・インポートでは、
TRANSPORT_DATAFILES=datafile_name
パラメータのみを使用する必要があります。データ・ポンプ・インポートでは、TRANSPORTABLE=ALWAYS
およびFULL=YES
パラメータの存在が推測されます。 -
Oracle Database 12cリリース2 (12.2)以降、マルチテナント・コンテナ・データベース(CDB)環境では、CDBの各PDBに対する一意のパスとして、デフォルトのOracle Data Pumpディレクトリ・オブジェクト
DATA_PUMP_DIR
が定義されます。この一意のパスは、CREATE PLUGGABLE DATABASE
文のPATH_PREFIX
句が相対パスに定義されているかどうかに関係なく、定義されます。 -
Oracle Database 19c以降、
impdp
のcredential
パラメータにより、オブジェクト・ストア・バケットへのアクセスに必要なユーザー名とパスワードを含む資格証明オブジェクトの名前を指定します。DEFAULT_CREDENTIAL
という名前のPDBプロパティを使用して、デフォルトの資格証明を指定することもできます。デフォルトの資格証明を使用してimpdb
を実行する場合は、ダンプ・ファイル名に接頭辞DEFAULT_CREDENTIAL:
を付け、credential
パラメータは指定しません。
例1-1 PDBへの表のインポート
エクスポート/インポート操作に対して特定のPDBを指定するには、データ・ポンプの開始時に接続文字列に接続識別子を指定します。たとえば、pdb1
というPDBにデータをインポートするには、データ・ポンプ・コマンドラインで次のように入力します。
impdp hr@pdb1 DIRECTORY=dpump_dir1 DUMPFILE=hr.dmp TABLES=employees
例1-2 データをインポートする際の資格証明の指定
この例では、次のように、DBMS_CREDENTIAL.CREATE_CREDENTIAL
を使用してHR_CRED
という名前の資格証明を作成していることを前提としています。
BEGIN
DBMS_CLOUD.CREATE_CREDENTIAL(
credential_name => 'HR_CRED',
username => 'atpc_user@example.com',
password => 'password'
);
END;
/
次のコマンドは、資格証明HR_CRED
を指定し、オブジェクト・ストアに格納されているファイルを指定します。ファイルのURLはhttps://example.com/ostore/dnfs/myt.dmp
です。
impdp hr@pdb1 \
table_exists_action=replace \
credential=HR_CRED \
parallel=16 \
dumpfile=https://example.com/ostore/dnfs/myt.dmp
例1-3 デフォルトの資格証明を使用したデータのインポート
-
次のように、
DBMS_CREDENTIAL.CREATE_CREDENTIAL
を使用してHR_CRED
という名前の資格証明を作成します。BEGIN DBMS_CLOUD.CREATE_CREDENTIAL( credential_name => 'HR_CRED', username => 'atpc_user@example.com', password => 'password' ); END; /
-
次のように、PDBプロパティ
DEFAULT_CREDENTIAL
を設定します。ALTER DATABASE PROPERTY SET DEFAULT_CREDENTIAL = 'ADMIN.HR_CRED'
-
次のコマンドは、ダンプ・ファイルの場所
https://example.com/ostore/dnfs/myt.dmp
に対する接頭辞としてデフォルトの資格証明を指定します。impdp hr@pdb1 \ table_exists_action=replace \ parallel=16 \ dumpfile=default_credential:https://example.com/ostore/dnfs/myt.dmp
credential
パラメータが指定されていないことに注意してください。
関連項目:
-
オブジェクト・ストアのアクセスに必要なSSL認証を構成する方法を学習するには、Oracle Databaseセキュリティ・ガイドを参照してください
- Oracle Data Pump Importを使用してオブジェクト・ストアにファイルをロードする方法の詳細は、Oracle Data Pumpを使用したオブジェクト・ストアへの表のインポートを参照してください
親トピック: CDBでのOracle Data Pumpの使用
1.3.3 Oracle Data Pumpの使用によるCDB内または間のPDBの移動
PDBでのOracle Data Pumpのエクスポートおよびインポート操作でORA-65094
ユーザー・スキーマ・エラーを回避する方法を学習します。
CDBで共通ユーザーを作成する場合、CDBのPDB内からそのユーザーの全データベースまたは特権スキーマをエクスポートすると、標準のCREATE USER C##common name
DDL文がインポート時に実行されます。ただし、ユーザー名の共通ユーザー接頭辞C##
が原因で、文は失敗します。次のエラー・メッセージが返された場合:
ORA-65094:invalid local user or role name
例1-4 無効なローカル・ユーザー・エラーの回避
エクスポート対象のPDBで、そのユーザーのスキーマにローカル・オブジェクトを作成してそれらをインポートする場合、同じ名前の共通ユーザーがすでにターゲットCDBインスタンスに存在することを確認するか、impdp
コマンドでOracle Data PumpのインポートREMAP_SCHEMA
パラメータを使用して、有効なローカル・ユーザーにスキーマを再マップします。たとえば:
REMAP_SCHEMA=C##common name:local user name
関連トピック
親トピック: CDBでのOracle Data Pumpの使用
1.4 クラウド移行前アドバイザ・ツール
クラウド移行前アドバイザ・ツールは、データベースをOracle Cloudに移行するために役立ちます。
- クラウド移行前アドバイザ・ツール(CPAT)とは
オンプレミスのOracle DatabaseデータがOracle Cloudへの移行に適しているかどうかを判断するには、Oracleのクラウド移行前アドバイザ・ツール(CPAT)を使用します。
親トピック: Oracle Data Pumpの概要
1.4.1 クラウド移行前アドバイザ・ツール(CPAT)とは
オンプレミスのOracle DatabaseデータがOracle Cloudへの移行に適しているかどうかを判断するには、Oracleのクラウド移行前アドバイザ・ツール(CPAT)を使用します。
クラウド移行前アドバイザ・ツール(CPAT)は、オンプレミスのOracle Databaseを分析してそのデータベースの一部またはすべてをOracle Cloudプラットフォーム・オプションのいずれか(Autonomous Databaseやその他のクラウド・データベース・オプションなど)に移行可能かどうかを判断するために役立つJavaアプリケーションです。CPATは、特定の移行シナリオを評価して、移行オプションを特定するために役立ちます。また、移行元のオンプレミスOracle Databasesから移行先のOracle Cloudデータベース・オプションへの移行計画を準備するために役立ちます。
問題を防ぐためにCPATがどのように役立つか
CPATツールを使用した場合は、クラウド移行に環境に関する潜在的な問題が見つかると、どのような問題があるかが事前に警告されます。それにより、移行で想定外の問題が発生する可能性が下がります。このツールでは、問題に関する警告のみでなく、Oracle Data Pumpやその他の移行ツールのパラメータなど、移行のためのパラメータも提供できます。これらのパラメータはお客様固有の移行ケースに合わせてカスタマイズされるため、移行に関する潜在的な問題を減らすことやすべてなくすことができます。
問題を識別し、カスタマイズしてパラメータを作成するために、CPATにより、ソース・データベースとスキーマ・コンテンツに対していくつかのチェックが実行されます。これらのチェックは、選択した移行先Oracle Cloudデータベース・オプション、および使用する予定の移行手法によって内容が変わります。これらのチェックの結果は、まとめられて、機械可読形式(JSON)、または人間が判読可能な形式(プレーン・テキストまたはHTML)、あるいはその両方で表示されます。また、CPATのチェック結果は、Oracle Zero Downtime Migration (Oracle ZDM)やOracle Enterprise Managerなど、他のOracle機能で使用できるように設計されています。
ノート:
CPATは、それ自体が移行ツールなわけではありません。これは、移行の準備に役立つように用意されています。Oracle GoldenGateまたはOracle Data Pumpを使用した特定の移行手法が最善のオプションかどうかを示すのではなく、お客様が選択したオプションについて、カスタマイズしたサポートを提供します。親トピック: クラウド移行前アドバイザ・ツール
1.5 Oracle Data Pumpのエクスポート操作およびインポート操作に必要なロール
エクスポートおよびインポートの多くの操作には、DATAPUMP_EXP_FULL_DATABASE
ロールとDATAPUMP_IMP_FULL_DATABASE
ロールが必要になります。
エクスポート操作またはインポート操作を実行するときには、その操作の実行に使用しているユーザー・アカウントにDATAPUMP_EXP_FULL_DATABASE
ロールまたはDATAPUMP_IMP_FULL_DATABASE
ロール(あるいはその両方)が付与されていることが必要になる場合があります。これらのロールは、データベース作成の一環として標準スクリプトを実行するとOracle Database用に自動的に定義されます。(これらのロールの名前にはFULL
という語が含まれますが、これらのロールは、実際にはFull
モードのみではなく、任意のエクスポートまたはインポート・モードのすべての特権操作に適用される点に注意してください)。
DATAPUMP_EXP_FULL_DATABASE
ロールはエクスポート操作にのみ影響します。DATAPUMP_IMP_FULL_DATABASE
ロールは、インポート操作と、SQLFILE
インポート・パラメータを使用する操作に影響します。これらのロールによって、ユーザーは次の処理を行うエクスポートおよびインポート操作を実行できます。
- 自分のスキーマ・スコープ以外での操作の実行
- 他のユーザーが開始したジョブの監視
- 権限のないユーザーが参照できないオブジェクトのエクスポート(表領域定義など)とインポート(ディレクトリ定義など)
これらは強力なロールです。管理者として、これらのロールをユーザーに付与する際は、十分に注意する必要があります。
SYS
スキーマには、これらのいずれのロールも割り当てられていません。ただし、Oracle Data Pumpが実行するセキュリティ・チェックうち、これらのロールを必要とするものについてはSYS
スキーマへのアクセス権が付与されます。
ノート:
ORA-39181: ファイングレイン・アクセス・コントロールのため、データの一部のみがエクスポートされました
というエラー・メッセージが表示される場合は、My Oracle Supportノート422480.1のファイングレイン・アクセス・コントロール・ポリシーが有効化されている表データのエクスポート時のセキュリティに関する情報を参照してください。
Oracleロールには、認証が必要なものがあります。そのようなロールをOracle Data Pumpのエクスポートおよびインポートで使用する必要がある場合は、ENABLE_SECURE_ROLES
パラメータをYES
に設定することで明示的に使用可能にする必要があります。
関連項目:
Oracle Databaseのインストールで事前定義されるロールの詳細は、Oracle Databaseセキュリティ・ガイドを参照してください
親トピック: Oracle Data Pumpの概要
1.6 Oracle Data Pumpジョブの処理中の動作について
Oracle Data Pumpジョブでは、データ・ポンプ制御ジョブ表、データ・ポンプ制御ジョブ・プロセスおよびワーカー・プロセスを使用して、作業を実行し、進行状況を追跡します。
- Oracle Data Pumpジョブの調整
すべてのOracle Data Pumpエクスポートおよびインポート・ジョブを調整するために、データ・ポンプ制御プロセスが作成されます。 - Oracle Data Pumpジョブ内での進捗状況の追跡
Oracle Data Pumpによるデータおよびメタデータの転送時、ジョブ内での進捗状況を追跡するためにData Pump制御表が使用されます。 - Oracle Data Pumpジョブ実行中のデータおよびメタデータのフィルタ処理
Oracle Data Pumpによってエクスポートおよびインポートされるオブジェクトのタイプをフィルタ処理する場合、EXCLUDE
およびINCLUDE
パラメータを使用できます。 - Oracle Data Pumpジョブ実行中のメタデータの変換
データベース間でデータを移動するときには、Oracle Data Pump Importのパラメータを使用してメタデータの変換を実行できます。 - Oracle Data Pumpのジョブ・パフォーマンスの最大化
ジョブ・パフォーマンスが向上するように、Oracle Data PumpのPARALLEL
パラメータを使用して、複数のジョブ・プロセスをパラレルで実行できます。 - Oracle Data Pumpによるデータのロードおよびアンロード
データのインポートおよびエクスポート時にOracle Data Pump子プロセスがどのように動作するかを説明します。
親トピック: Oracle Data Pumpの概要
1.6.1 Oracle Data Pumpジョブの調整
すべてのOracle Data Pumpエクスポートおよびインポート・ジョブを調整するために、データ・ポンプ制御プロセスが作成されます。
Data Pump制御プロセスによって、ジョブ全体(クライアント・プロセスとの通信、ワーカー・プロセス・プールの作成および制御、ロギング操作の実行など)が制御されます。
1.6.2 Oracle Data Pumpジョブ内の進捗状況の追跡
Oracle Data Pumpはデータおよびメタデータを転送しますが、データ・ポンプ制御ジョブ表を使用してジョブ内の進行状況を追跡します。
データ・ポンプ制御表は、データベース内のユーザー表として実装されます。エクスポート・ジョブおよびインポート・ジョブのデータ・ポンプ制御表の特定の機能は、次のとおりです。
- エクスポート・ジョブの場合、Data Pump制御ジョブ表には、ダンプ・ファイル・セット内のデータベース・オブジェクトの位置が記録されます。エクスポート・ユーティリティでは、ジョブの継続中に、Data Pump制御表の作成およびメンテナンスが行われます。エクスポート・ジョブ終了時に、Data Pump制御表の内容がダンプ・ファイル・セット内のファイルに書き込まれます。
- インポート・ジョブの場合、Data Pump制御ジョブ表は、ダンプ・ファイル・セットからロードされ、ターゲット・データベースにインポートする必要があるオブジェクトの位置を特定する操作の順序の制御に使用されます。
Data Pump制御ジョブ表は、エクスポートまたはインポート操作を実行している現在のユーザーのスキーマに作成されます。したがって、そのユーザーには、CREATE TABLE
システム権限と、Data Pump制御ジョブ表を作成するための十分な表領域割当て制限が必要です。Data Pump制御ジョブ表の名前は、それを作成したジョブの名前と同じです。したがって、Oracle Data Pumpジョブに、既存の表またはビューと同じ名前を明示的には指定できません。
すべての操作で、ジョブの再起動にマスター表の情報が使用されます。
Data Pump制御ジョブ表は、状況に応じて、次のとおり保持または削除されます。
- ジョブが正常に完了すると、Data Pump制御ジョブ表が削除されます。これを上書きするには、ジョブに対してOracle Data Pumpの
KEEP_MASTER=YES
パラメータを設定します。 -
データ・ポンプ制御ジョブ表は、正常に完了しなかったジョブに対して自動的に保持されます。
- 対話方式コマンド
STOP_JOB
を使用してジョブを停止すると、ジョブの再起動に使用できるようにData Pump制御ジョブ表は保持されます。 - 対話型コマンド
KILL_JOB
を使用してジョブを強制終了した場合、Data Pump制御ジョブ表は削除され、ジョブは再起動できません。 - ジョブが予期せず終了した場合、Data Pump制御ジョブ表は保持されます。このジョブを再起動しない場合、マスター表を削除できます。
- ジョブが実行を開始する前(つまり、データベース・オブジェクトがコピーされる前)に停止した場合、Data Pump制御ジョブ表は削除されます。
1.6.3 Oracle Data Pumpジョブ実行中のデータおよびメタデータのフィルタ処理
Oracle Data Pumpによってエクスポートおよびインポートされるオブジェクトのタイプをフィルタ処理する場合、EXCLUDE
およびINCLUDE
パラメータを使用できます。
Data Pump制御ジョブ表内では、名前や自分のスキーマなどの属性が特定のオブジェクトに割り当てられます。オブジェクトは、オブジェクトのクラス(TABLE
、INDEX
、DIRECTORY
など)にも属します。オブジェクトのクラスは、オブジェクトのオブジェクト型と呼ばれます。EXCLUDE
およびINCLUDE
パラメータを使用して、エクスポートまたはインポートされるオブジェクト型を制限できます。オブジェクトの名前またはオブジェクトを自分のスキーマの名前に基づいて、制限するオブジェクトを指定できます。データ固有のフィルタを指定して、エクスポートおよびインポートする行を制限することもできます。
関連トピック
1.6.4 Oracle Data Pumpジョブ実行中のメタデータの変換
データベース間でデータを移動するときには、Oracle Data Pump Importのパラメータを使用してメタデータの変換を実行できます。
多くの場合、表領域間で記憶域を再マッピングするためや、特定のオブジェクト・セットの所有者を再定義するために、メタデータの変換を実行することが役立ちます。データを移動するときに、Oracle Data Pump ImportパラメータのREMAP_DATAFILE
、REMAP_SCHEMA
、REMAP_TABLE、REMAP_TABLESPACE
、TRANSFORM
およびPARTITION_OPTIONS
を使用して変換を実行できます。
1.6.5 Oracle Data Pumpジョブのパフォーマンスの最大化
ジョブ・パフォーマンスが向上するように、Oracle Data PumpのPARALLEL
パラメータを使用して、複数のジョブ・プロセスをパラレルで実行できます。
PARALLEL
パラメータを使用すると、現状の環境で最大の効果が得られる並列度を設定できます。たとえば、本番システムへのジョブの影響を制限するために、データベース管理者は並列度を制限できます。並列度は、ジョブの実行中いつでも再設定できます。たとえば、運用時間中はPARALLEL
を2に設定して、特定のジョブの並列度を2に制限します。運用時間外は、並列度を8にリセットします。並列度の設定は、操作内でデータおよびメタデータ処理を実行するワーカー・プロセスにワークロードを割り当てるデータ・ポンプ制御プロセスによって強制されます。これらのワーカー・プロセスは、パラレルで動作します。並列度の設定に関する推奨事項は、エクスポートのPARALLEL
およびインポートのPARALLEL
パラメータの説明を参照してください。
ノート:
並列度を調整する機能は、Oracle DatabaseのEnterprise Editionでのみ使用可能です。
1.6.6 Oracle Data Pumpによるデータのロードおよびアンロード
データのインポートおよびエクスポート時にOracle Data Pump子プロセスがどのように動作するかを学習します。
Oracle Data Pump子プロセスによって、メタデータおよび表データがアンロードおよびロードされます。エクスポートでは、トランスポータブル表領域を使用するジョブを除いて、すべてのメタデータおよびデータがパラレルでアンロードされます。インポートでは、正しい依存順序でオブジェクトを作成する必要があります。
同じタイプのオブジェクトが、複数の子プロセスを使用するのに十分なだけ存在する場合、それらのオブジェクトは複数の子プロセスによってインポートされます。一部のメタデータ・オブジェクトには相互依存性があり、その依存性を満たすために、1つの子プロセスで、これらのオブジェクトを順に作成する必要があります。子プロセスは、コマンドライン・パラメータPARALLEL
に指定した値と同数になるまで必要に応じて作成されます。アクティブな子プロセスの数は、ジョブの存続期間中いつでも再設定できます。ワーカー・プロセスは、Oracle Real Application Clusters(Oracle RAC)環境内の様々なノードで起動できます。
ノート:
Oracle DatabaseのStandard Editionでは、PARALLEL
の値は1に制限されています。
非常に大きい表またはパーティションをロードまたはアンロードするタスクが子プロセスに割り当てられた場合、パラレル実行を最大限に利用できるようにするため、外部表によるアクセス方法を使用できます。その場合、子プロセスはパラレル実行コーディネータになります。実際のロードおよびアンロード作業は、Oracle Real Application Clusters(Oracle RAC)環境で使用可能なプロセスのプールから割り当てられたパラレル入出力(I/O)実行プロセスの数に分割されます。
1.7 Oracle Data Pumpジョブのステータスの監視方法
Oracle Data Pumpエクスポートおよびインポート・クライアント・ユーティリティでは、ロギング・モードまたは対話方式コマンド・モードのどちらでもジョブに接続できます。
ロギング・モードでは、ジョブの実行中に、そのジョブの詳細な状態がリアルタイムで自動的に表示されます。表示される情報には、ジョブおよびパラメータの説明、処理されるデータ量の推定、現在の操作または処理中のアイテムの説明、ジョブで使用されるファイル、発生したエラーおよび最終的なジョブの状態(停止または完了)があります。
対話方式コマンド・モードでは、ジョブの状態をリクエストに表示できます。表示される情報には、ジョブの説明および状態、現在の操作または処理中のアイテムの説明、書込み中のファイルおよび累積的な状態があります。
ジョブの実行中にログ・ファイルを書き込むこともできます。ログ・ファイルには、ジョブの進捗状況のサマリーが記録され、ジョブの実行中に発生したエラーがリストされます。また、ジョブの完了状態も記録されます。
Oracle Data Pumpジョブについての情報(ジョブの状態など)を調べるための別の方法として、DBA_DATAPUMP_JOBS
ビュー、USER_DATAPUMP_JOBS
ビュー、またはDBA_DATAPUMP_SESSIONS
ビューを問い合せることもできます。詳細は、『Oracle Databaseリファレンス』を参照してください。
関連トピック
親トピック: Oracle Data Pumpの概要
1.8 V$SESSION_LONGOPSを使用したジョブ実行の進行状況の監視方法
表データの転送を監視する場合は、V$SESSION_LONGOPS
動的パフォーマンス・ビューを使用するとOracle Data Pumpのジョブを監視できます。
表データを転送するOracle Data Pumpの操作(エクスポートおよびインポート)では、ジョブの進捗状況(単位は、転送された表データのMB数)を示す動的パフォーマンス・ビューV$SESSION_LONGOPS
のエントリが保持されます。このエントリは、転送の推定サイズを含み、実際に転送されたデータの量が反映されるように定期的に更新されます。
パラメータCOMPRESSION
、ENCRYPTION
、ENCRYPTION_ALGORITHM
、ENCRYPTION_MODE
、ENCRYPTION_PASSWORD
、QUERY
およびREMAP_DATA
を使用しても、推定値の決定には反映されません。
エクスポート操作の推定値が有効かどうかは、操作開始時に要求された推定のタイプによって異なります。この値は、実際の転送量を超えた場合に必要に応じて更新されます。インポート操作の推定値は、厳密な値です。
データ・ポンプ・ジョブに関連するV$SESSION_LONGOPS
列は、次のとおりです。
USERNAME
: ジョブの所有者OPNAME
: ジョブ名TARGET_DESC
: ジョブ操作SOFAR
: この時点までのジョブ実行中に転送されたMB数TOTALWORK
: ジョブ内の推定MB数UNITS
: メガバイト(MB)-
MESSAGE
: 状態メッセージ。次の形式が使用されます。'job_name: operation_name : nnn out of mmm MB done'
親トピック: Oracle Data Pumpの概要
1.9 Oracle Data Pumpによるファイル割当て
Oracle Data Pumpによるファイルの割当て方法と処理方法は、対話方式モードのコマンドを使用することで変更できます。
- Oracle Data Pumpでのファイル割当ての理解
Oracle Data Pumpによるファイルの割当て方法と処理方法を理解すると、エクスポート・ユーティリティとインポート・ユーティリティを最大限に活用できるようになります。 - ファイルの指定およびダンプ・ファイルの追加
エクスポート操作の場合、ダンプ・ファイルは、Oracle Data Pumpジョブの定義時およびエクスポート操作の後の段階で指定できます。 - ダンプ・ファイル、ログ・ファイルおよびSQLファイルのデフォルトの位置
Oracle Data Pumpのファイルのデフォルトの場所、およびOracle RAC、Oracle Automatic Storage Managementおよびマルチテナント・アーキテクチャを使用している場合にこれらの場所がどのように影響を受けるかを学習します。 - Oracle Data Pump Exportでの置換変数の使用
Oracle Data Pump Export操作で複数のダンプ・ファイルを指定する場合は、ファイル名に置換変数を含むDUMPFILE
パラメータを使用します。
親トピック: Oracle Data Pumpの概要
1.9.1 Oracle Data Pumpでのファイル割当ての理解
Oracle Data Pumpによるファイルの割当て方法と処理方法を理解すると、エクスポート・ユーティリティとインポート・ユーティリティを最大限に活用できるようになります。
Oracle Data Pumpジョブは、次のタイプのファイルを管理します。
-
ダンプ・ファイル。移動中のデータとメタデータを格納します。
-
ログ・ファイル。操作に関連したメッセージを記録します。
-
SQLファイル。
SQLFILE
操作の出力を記録します。SQLFILE
操作は、Oracle Data PumpインポートのSQLFILE
パラメータを使用して開始します。この操作により、その他のパラメータに基づいてインポート・ユーティリティが実行するすべてのSQL DDL
が、SQLファイルに書き込まれます。 -
トランスポータブル・インポート中に
DATA_FILES
パラメータにより指定されるファイル
ノート:
Oracle Data Pumpジョブによってネットワーク・ファイル・ストレージ(NFS)関連のエラーが生成される場合は、対象プラットフォームのインストレーション・ガイドを参照して適切なNFSマウント設定を調べてください。
親トピック: Oracle Data Pumpによるファイル割当て
1.9.2 ファイルの指定およびダンプ・ファイルの追加
エクスポート操作の場合、ダンプ・ファイルは、Oracle Data Pumpジョブの定義時およびエクスポート操作の後の段階で指定できます。
エクスポート操作中に領域が不足した場合は、Oracle Data Pumpエクスポート・ユーティリティのADD_FILE
コマンドを対話方式モードで使用して、追加ダンプ・ファイルを追加できます。
インポート操作の場合、ジョブの定義時にすべてのダンプ・ファイルを指定する必要があります。
既存のファイルは、ログ・ファイルおよびSQLファイルによって上書きされます。ダンプ・ファイルの場合は、REUSE_DUMPFILES
エクスポート・パラメータを使用して、既存のダンプ・ファイルを上書きするかどうかを指定できます。
親トピック: Oracle Data Pumpによるファイル割当て
1.9.3 ダンプ・ファイル、ログ・ファイルおよびSQLファイルのデフォルトの位置
Oracle Data Pumpのファイルのデフォルトの場所、およびOracle RAC、Oracle Automatic Storage Managementおよびマルチテナント・アーキテクチャを使用している場合にこれらの場所がどのように影響を受けるかを学習します。
- ダンプ・ファイル、ログ・ファイルおよびSQLファイルのデフォルトの位置の理解
Oracle Data Pumpは、クライアントベースではなくサーバーベースです。ダンプ・ファイル、ログ・ファイルおよびSQLファイルはサーバーベースのディレクトリ・パスとの相対でアクセスされます。 - Oracle RACでのOracle Data Pumpの使用方法の理解
Oracle Real Application Clusters (Oracle RAC)環境でOracle Data Pumpを使用するには、いくつかのチェックを実行して、クラスタ・メンバー・ノードが使用可能であることを確認する必要があります。 - Oracle Automatic Storage Managementを使用可能にした場合のディレクトリ・オブジェクトの使用方法
Oracle Automatic Storage Management (Oracle ASM)を使用可能にしてOracle Data Pumpエクスポートまたはインポートを使用する場合は、ダンプ・ファイル用に使用するディレクトリ・オブジェクトを定義します。 - DATA_PUMP_DIRディレクトリ・オブジェクトおよびプラガブル・データベース
CDB内の各PDBに対する一意のパスとして、デフォルトのOracle Data Pumpディレクトリ・オブジェクトDATA_PUMP_DIR
を定義します。
親トピック: Oracle Data Pumpによるファイル割当て
1.9.3.1 ダンプ・ファイル、ログ・ファイルおよびSQLファイルのデフォルトの位置の理解
Oracle Data Pumpは、クライアントベースではなくサーバーベースです。ダンプ・ファイル、ログ・ファイルおよびSQLファイルはサーバーベースのディレクトリ・パスとの相対でアクセスされます。
Oracle Data Pumpでは、ディレクトリ・パスをディレクトリ・オブジェクトとして指定する必要があります。ディレクトリ・オブジェクトは、ファイル・システムのディレクトリ・パスに名前をマップします。データベース管理者は、ディレクトリ・パスに関連付けられたディレクトリ・オブジェクトに承認されたユーザーのみがアクセスできるようにする必要があります。
次の例は、/usr/apps/datafiles
にあるディレクトリにマップされるdpump_dir1
というディレクトリ・オブジェクトを作成するSQL文を示しています。
SQL> CREATE DIRECTORY dpump_dir1 AS '/usr/apps/datafiles';
ディレクトリ・オブジェクトは、データのセキュリティおよび整合性を確保するために必要です。たとえば:
-
入力ファイルのディレクトリ・パスの場所を指定する権限が付与されたユーザーは、サーバーにはアクセス権があるが、ユーザー自身はアクセス権を持たないデータの読取りを実行できる可能性があります。
-
出力ファイルのディレクトリ・パスの場所を指定できるユーザーは、通常は削除する権限のないファイルを上書きできるようになる可能性があります。
UNIX、LinuxおよびWindowsオペレーティング・システムの場合、デフォルトのディレクトリ・オブジェクトDATA_PUMP_DIR
は、データベースの作成時、またはデータベース・ディクショナリがアップグレードされるたびに作成されます。デフォルトでは、このディレクトリ・オブジェクトは特権ユーザーのみが使用できます。(ユーザーSYSTEM
は、デフォルトでDATA_PUMP_DIR
ディレクトリへの読取りおよび書込みアクセス権を持っています。)Oracleは、Oracle Databaseのアップグレード時またはパッチの適用時に、DATA_PUMP_DIR
ディレクトリの定義を変更することがあります。
権限のないユーザーがOracle Data Pumpエクスポートまたはインポートを実行できるようにするには、まず、データベース管理者(DBA)またはCREATE ANY DIRECTORY
権限を持つユーザーがディレクトリ・オブジェクトを作成しておく必要があります。
ディレクトリの作成後、ディレクトリ・オブジェクトを作成するユーザーは、そのディレクトリに対するREAD
権限またはWRITE
権限を他のユーザーに付与する必要があります。たとえば、dpump_dir1
という名前のディレクトリで、Oracle Databaseがユーザーhr
のかわりにファイルを読取りまたは書込みできるようにするには、次のコマンドをDBAが実行する必要があります。
SQL> GRANT READ, WRITE ON DIRECTORY dpump_dir1 TO hr;
ディレクトリ・オブジェクトに対するREAD
権限またはWRITE
権限は、それに対応するディレクトリ内にあるファイルの読取りまたは書込みをユーザーのかわりにOracle Databaseのみが実行できることを意味します。Oracle Database以外は、適切なオペレーティング・システム権限が付与されていないかぎり、該当するファイルに直接アクセスすることはできません。同様に、Oracle Databaseには、そのディレクトリ内のファイルに対する読取りおよび書込みのオペレーティング・システム権限が必要になります。
Oracle Data Pumpエクスポートおよびインポート・ユーティリティでは、次の順序でファイルの場所が判断されます。
-
ディレクトリ・オブジェクトがファイル指定の一部として指定されている場合は、そのディレクトリ・オブジェクトで指定された位置が使用されます。(ディレクトリ・オブジェクトとファイル名は、コロンで区切る必要があります。)
-
ディレクトリ・オブジェクトがファイル指定の一部として指定されていない場合は、
DIRECTORY
パラメータで指定されたディレクトリ・オブジェクトが使用されます。 -
ディレクトリ・オブジェクトがファイル指定の一部として指定されていない場合、および
DIRECTORY
パラメータでディレクトリ・オブジェクトが指定されていない場合は、環境変数DATA_PUMP_DIR
の値が使用されます。この環境変数は、データ・ポンプ・エクスポートおよびインポート・ユーティリティを実行するクライアント・システムで、オペレーティング・システム・コマンドを使用して定義します。このクライアント・ベースの環境変数には、DBAがサーバー・システムで最初に作成するサーバー・ベースのディレクトリ・オブジェクトの名前を割り当てる必要があります。たとえば、次のSQL文では、サーバー・システムにディレクトリ・オブジェクトが作成されます。このディレクトリ・オブジェクトの名前はDUMP_FILES1
で、位置は'/usr/apps/dumpfiles1'
です。SQL> CREATE DIRECTORY DUMP_FILES1 AS '/usr/apps/dumpfiles1';
この文の実行後、
csh
を使用しているUNIXベースのクライアント・システムのユーザーは、環境変数DATA_PUMP_DIR
に値DUMP_FILES1
を割り当てることができるようになります。コマンドラインでは、DIRECTORY
パラメータは省略できます。ダンプ・ファイルemployees.dmp
およびログ・ファイルexport.log
は、'/usr/apps/dumpfiles1'
に書き込まれます。%setenv DATA_PUMP_DIR DUMP_FILES1 %expdp hr TABLES=employees DUMPFILE=employees.dmp
-
前述の3つの条件ではディレクトリ・オブジェクトが生成されないときに、特権ユーザーが操作している場合、Oracle Data Pumpはデフォルトのサーバー・ベースのディレクトリ・オブジェクト
DATA_PUMP_DIR
の値の使用を試行します。このディレクトリ・オブジェクトは、データベースの作成時またはデータベース・ディクショナリのアップグレード時に自動的に作成されます。DATA_PUMP_DIR
のパス定義を確認する場合は、次のSQL問合せを使用できます。SQL> SELECT directory_name, directory_path FROM dba_directories 2 WHERE directory_name='DATA_PUMP_DIR';
特権ユーザーでない場合は、
DATA_PUMP_DIR
ディレクトリ・オブジェクトへのアクセス権限が、DBAによって事前に付与されている必要があります。デフォルトの
DATA_PUMP_DIR
ディレクトリ・オブジェクトと、同じ名前のクライアント・ベースの環境変数とを混同しないでください。
1.9.3.2 Oracle RACでのOracle Data Pumpの使用方法の理解
Oracle Real Application Clusters (Oracle RAC)環境でOracle Data Pumpを使用するには、いくつかのチェックを実行して、クラスタ・メンバー・ノードが使用可能であることを確認する必要があります。
-
Oracle RAC構成でOracle Data Pumpまたは外部表を使用するには、ディレクトリ・オブジェクトのパスがクラスタ・ファイル・システム上に存在するようにする必要があります。
ディレクトリ・オブジェクトは、Oracle Data Pumpまたは外部表プロセス(あるいはその両方)を実行できるすべてのインスタンスから参照およびアクセスできる共有物理記憶域を指している必要があります。
-
デフォルトのOracle Data Pumpの動作では、Oracle RAC構成内の任意のインスタンスで子プロセスを実行できます。したがって、このようなOracle RACインスタンス上の子プロセスは、ディレクトリ・オブジェクトによって定義された場所(共有ストレージ・メディアなど)に物理的にアクセスできる必要があります。この目的で使用できる共有ストレージが構成内にない場合にも並列処理が必要であれば、
CLUSTER=NO
パラメータを使用して、すべての子プロセスを、Oracle Data Pumpジョブが開始されたインスタンスのみに置くことができます。 -
特定の状況下では、Oracle Data Pumpはパラレル問合せの子プロセスを使用してデータをロードまたはアンロードします。Oracle RAC環境では、これらの子プロセスの実行場所はデータ・ポンプによって制御されません。したがって、これらの子プロセスは、Oracle Data Pumpジョブの
CLUSTER
およびSERVICE_NAME
に指定されたインスタンスに関係なく、クラスタ内の他のクラスタ・メンバー・ノードで実行できます。パラレル問合せ操作の制御は、Oracle Data Pumpとは無関係です。パラレル問合せ子プロセスがOracle Data Pumpジョブの一部として他のインスタンスで実行される場合は、ダンプ・ファイル・セットの物理記憶域へのアクセスも必要になります。
1.9.3.3 Oracle Automatic Storage Managementを使用可能にした場合のディレクトリ・オブジェクトの使用方法
Oracle Automatic Storage Management (Oracle ASM)を使用可能にしてOracle Data Pumpエクスポートまたはインポートを使用する場合は、ダンプ・ファイル用に使用するディレクトリ・オブジェクトを定義します。
Oracle ASMディスク・グループ名が,オペレーティング・システムのディレクトリ・パスのかわりに使用されるように、ダンプ・ファイルに対して使用されるディレクトリ・オブジェクトを定義する必要があります。
ログ・ファイルには、オペレーティング・システムのディレクトリ・パスを指す個別のディレクトリ・オブジェクトを使用します。
たとえば、このプロシージャを使用して、Oracle ASMダンプ・ファイルのディレクトリ・オブジェクトを作成できます。
SQL> CREATE or REPLACE DIRECTORY dpump_dir as '+DATAFILES/';
このディレクトリ・オブジェクトを作成した後、ログ・ファイル用の個別のディレクトリ・オブジェクトを作成します。
SQL> CREATE or REPLACE DIRECTORY dpump_log as '/homedir/user1/';
ユーザーhr
に、これらのディレクトリ・オブジェクトに対するアクセス権を付与する場合は、このユーザーに必要な権限を割り当てます。
SQL> GRANT READ, WRITE ON DIRECTORY dpump_dir TO hr; SQL> GRANT READ, WRITE ON DIRECTORY dpump_log TO hr;
最後に、次のデータ・ポンプ・エクスポート・コマンドを使用できます。
> expdp hr DIRECTORY=dpump_dir DUMPFILE=hr.dmp LOGFILE=dpump_log:hr.log
コマンドを実行する前に、パスワードの入力を求められます。
ノート:
データ・ポンプのダンプ・ファイルをASMとディスク・ディレクトリの間で単にコピーする場合には、DBMS_FILE_TRANSFER
PL/SQLパッケージを使用できます。
1.9.3.4 DATA_PUMP_DIRディレクトリ・オブジェクトおよびプラガブル・データベース
CDB内の各PDBに対する一意のパスとして、デフォルトのOracle Data Pumpディレクトリ・オブジェクトDATA_PUMP_DIR
を定義します。
Oracle Database 12c リリース2 (12.2)からは、マルチテナント・コンテナ・データベース(CDB)環境において、相対パスにCREATE PLUGGABLE DATABASE
のPATH_PREFIX
句が定義されているどうかに関係なく、デフォルトのOracle Data Pumpディレクトリ・オブジェクトDATA_PUMP_DIR
がCDB内の各PDBの一意のパスとして定義されます。
1.9.4 Oracle Data Pump Exportでの代替変数の使用
Oracle Data Pump Export操作時に複数のファイルを指定する場合は、ファイル名に含まれる置換変数を指定したDUMPFILE
パラメータを使用します。
特定のファイル名をリストするかわりに(またはリストすることに加えて)、ファイル名に置換変数を使用するときには、置換変数が含まれているファイル名をダンプ・ファイル・テンプレートと呼びます。
ノート:
次の各例では、置換変数%U
を使用してOracle Data Pumpでの置換変数の使用方法を説明します。その他の使用可能な置換変数については、インポートまたはエクスポート・ユーティリティのDUMPFILE
パラメータ・リファレンスのトピックで確認してください。
ダンプ・ファイル・テンプレートを使用すると、新しいダンプ・ファイルが必要に応じて作成されます。たとえば、置換変数%U
を使用している場合は、新しいダンプ・ファイルの作成が必要になったときに、最初の%U
には01
が使用され、その後は順に02
、03
が使用されるようになります。PARALLEL
パラメータの現行の設定で指定されたすべてのプロセスをアクティブにできるように、十分な数のダンプ・ファイルが作成されます。ダンプ・ファイルのいずれかがFILESIZE
パラメータで指定した最大サイズに達したために満杯になると、そのダンプ・ファイルはクローズされ、そのファイルを引き継ぐために新しく生成された名前を持つ新しいダンプ・ファイルが作成されます。
複数のダンプ・ファイル・テンプレートが用意されている場合は、これらのテンプレートは、ラウンドロビン法によるダンプ・ファイルの生成に使用されます。たとえば、並列度が6のジョブにexpa%U
、expb%U
およびexpc%U
のすべてが指定されている場合、最初に作成されるダンプ・ファイルはexpa01.dmp
、expb01.dmp
、expc01.dmp
、expa02.dmp
、expb02.dmp
およびexpc02.dmp
になります。
インポート操作とSQLFILE
操作の場合は、ダンプ・ファイルの仕様expa%U
、expb%U
およびexpc%U
を指定すると、その操作では最初にダンプ・ファイルexpa01.dmp
、expb01.dmp
およびexpc01.dmp
を開こうとします。データ・ポンプ制御エクスポート表は、複数のダンプ・ファイルにまたがることができます。そのため、データ・ポンプ制御表のすべての部分が検出されるまで、置換変数を増分し、新しいファイル名(expa02.dmp
、expb02.dmp
およびexpc02.dmp
など)を検索することで、ダンプ・ファイルを開き続けます。ダンプ・ファイルが存在しない場合は、エラーとなったダンプ・ファイル指定の置換変数の増加が中止されます。たとえば、expb01.dmp
とexpb02.dmp
が見つかっているときにexpb03.dmp
が見つからない場合、それ以降expb%U
の仕様を使用したファイルは検索されなくなります。Data Pump制御表全体が検出されると、ダンプ・ファイル・セット内のすべてのダンプ・ファイルが配置されたかどうかを調べるためにその表が使用されます。
1.10 異なるOracle Databaseリリース間のエクスポートとインポート
Oracle Data Pumpを使用すると、異なるリリースのデータベース・ソフトウェア間でOracle Databaseのすべてまたは一部を移行できます。
通常、データベース・リリース間の移行にはOracle Data PumpエクスポートのVERSION
パラメータを使用します。VERSION
を使用すると、指定したバージョンと互換性のあるOracle Data Pumpダンプ・ファイル・セットが生成されます。
VERSION
のデフォルト値はCOMPATIBLE
です。この値は、エクスポートされたデータベース・オブジェクト定義がCOMPATIBLE
初期化パラメータで指定されたリリースと互換性があることを示します。
アップグレードの際に、Oracle Data Pumpベースの移行のターゲット・リリースがソースより新しくなる場合は、通常、VERSION
パラメータの指定は必要ありません。ターゲット・リリースがソースより新しい場合、ソース・データベース内のすべてのオブジェクトには、これらの新しいターゲット・リリースとの互換性があります。ただし、Oracle Database 12cリリース1 (12.1.0.1)以降にインポートするための準備として、Oracle Database 11g (リリース11.2.0.3以降)全体をエクスポートする場合を除きます。この場合は、FULL=YES
とともにVERSION=12
を明示的に指定して、Oracle Databaseの内部コンポーネント・メタデータの完全セットを含めます。
ダウングレードの際に、Oracle Data Pumpベースの移行のターゲット・リリースがソースより古くなる場合は、VERSION
パラメータ値をターゲットと同じバージョンに設定します。ターゲット・リリース・バージョンがソース・システムのCOMPATIBLE
初期化パラメータの値と同じである場合は例外です。この場合、VERSION
を指定する必要はありません。ただし、VERSION
パラメータが明示的に指定されていない場合、通常、Oracle Data Pumpインポートは現在のリリースよりも新しいOracle Databaseのリリースで作成されたダンプ・ファイル・セットを読み取ることができません。
異なるデータベース・リリース間のエクスポートとインポートを行う場合、次の点を考慮する必要があります。
-
Oracle Data Pumpエクスポートで、現在のデータベース・バージョンより古いデータベース・バージョンを指定すると、その古いバージョンのデータベースにインポート可能なダンプ・ファイル・セットが作成されます。たとえば、Oracle Database 19cを実行している場合、エクスポートで
VERSION=12.2
を指定すると、作成されるダンプ・ファイル・セットはOracle Database 12c (リリース12.2)にインポートできます。ノート:
-
Oracle Database 12cリリース1 (12.1.0.2)以降のみで有効なデータベース権限(たとえば、表、ビュー、マテリアライズド・ビューおよびシノニムに対する
READ
権限)はOracle Database 12cリリース1 (12.1.0.1)以降にインポートできません。これを実行しようとすると、エラーとして報告され、インポート操作が続行されます。 -
Oracle Database 12c リリース2 (12.2.0.1)よりも前のリリースにエクスポートするときに、Oracle Data Pumpが30バイトを超えるオブジェクト名を除外することはありません。該当するオブジェクトはエクスポートされます。インポート時には、30バイトを超える名前のオブジェクトを作成しようとするとエラーが返されます。
-
-
現在のOracle Databaseのリリースより古いOracle Databaseのリリースを指定すると、特定の機能とデータ型が使用できなくなることがあります。たとえば、
VERSION=10.1
を指定したときに、そのジョブに対してデータ圧縮も指定するとエラーが発生します。これは、Oracle Database 10gリリース1 (10.1)では圧縮がサポートされていないためです。別の例として、ソースOracle Databaseリリースのユーザー定義またはOracle提供の型がターゲット・データベースの型よりも新しいバージョンの場合、その型はターゲット・データベースの型のいずれのバージョンとも一致しないためロードされません。 -
Oracle Data Pumpインポートは、常に、古いOracle Databaseリリースのデータベースで作成されたOracle Data Pumpのダンプ・ファイル・セットを読み込むことができます。
-
ネットワーク・リンクを通じたOracle Data Pump操作の場合は、ソースとターゲットのOracle Databaseリリースのバージョンの差異が2以下であることが必要です。
たとえば、一方のデータベースがOracle Database 12cの場合、もう一方のOracle Databaseのリリースは12c、11gまたは10gであることが必要です。Oracle Data Pumpでは、メジャー・バージョン番号(10g、11g、12cなど)のみがチェックされます。Oracle Databaseの具体的なリリース番号(12.2、12.1、11.1、11.2、10.1、10.2など)はチェックされません。
-
表統計が含まれているOracle Database 11gダンプ・ファイルをOracle Database 12cリリース1 (12.1)以降にインポートすると、Oracle ORA-39346エラーが発生する場合があります。このエラーは、Oracle Database11gのダンプ・ファイルに、メタデータとして表の統計が含まれているために発生します。Oracle Database12cリリース1 (12.1)以降のリリースでは、表の統計が表データとして提示される必要があります。インポート操作中のこのエラーは無視しても問題ありません。インポート操作が完了した後、表の統計を再収集します。
-
LONG
データ型(LONG
、LONG RAW
、LONG VARCHAR
、LONG VARRAW
)のすべての形式は、Oracle8iリリース8.1.6で非推奨になりました。以降のリリースでは、LONG
データ型は既存のアプリケーションとの下位互換性のために提供されていました。以降のリリースで開発された新しいアプリケーションでは、大量の文字データにCLOB
およびNCLOB
データ型を使用することをお薦めします。
1.11 Oracle Data Pumpを使用したブロックチェーン表のエクスポートおよびインポート
ブロックチェーン表をエクスポートまたはインポートするには、次の最小要件、制限およびガイドラインを確認します。
ブロックチェーン表に対してOracle Data Pumpを使用する場合は、CONVENTIONAL access_method
のみを使用できます。
ブロックチェーン表は、次の場合にのみエクスポートされます。
- エクスポートの
VERSION
パラメータは、明示的に21.0.0.0.0
以降に設定されている。 VERSION
パラメータはCOMPATIBLE
に設定され(またはデフォルト設定され)、データベースの互換性は21.0.0.0.0
以降に設定されている。VERSION
パラメータはLATEST
に設定され、データベース・リリースは21.0.0.0.0
以降に設定されている。
ブロックチェーン表に対してサポートされていないOracle Data Pumpオプションの使用を試みると、それらのオプションを使用しようとしたときにエラーが表示されます。
Oracle Data Pumpの次のオプションは、ブロックチェーン表ではサポートされません。
ACCESS_METHOD=[DIRECT_PATH, EXTERNAL_TABLE, INSERT_AS_SELECT]
-
TABLE_EXISTS_ACTION=[REPLACE | APPEND | TRUNCATE]
これらのオプションを使用すると、既存のブロックチェーン表にデータをインポートするときにエラーが発生します。
-
CONTENT=DATA_ONLY
このオプションを使用すると、ブロックチェーン表にデータをインポートしようとしたときにエラーになります。
-
PARTITION_OPTIONS= [DEPARTITIONING | MERGE]
ブロックチェーン表に対してこのオプションを使用して非パーティション化をリクエストした場合、非パーティション化時にブロックチェーン表がスキップされます。
NETWORK IMPORT
TRANSPORTABLE
SAMPLE, QUERY and REMAP_DATA
親トピック: Oracle Data Pumpの概要
1.12 Oracle Data Pumpを使用したSecureFilesラージ・オブジェクトのエクスポートの管理
SecureFilesラージ・オブジェクト(LOB)のエクスポートは、コンテンツ・タイプやVERSION
パラメータなどの変数による影響を受けます。
LOBは、大量のデータを保持するために設計された一連のデータ型です。Oracle Data Pumpエクスポートを使用してSecureFiles LOBをエクスポートすると、そのエクスポートの動作は、いくつかの条件に応じて異なります(エクスポートのVERSION
パラメータの値、コンテンツ・タイプ(ContentType
)が存在するかどうか、LOBがアーカイブされデータがキャッシュされるかどうかなど)。
次の例に、これらの変数の様々な組合せを示します。
-
表に、
ContentType
が存在するSecureFiles LOBが含まれていて、エクスポート・ユーティリティのVERSION
パラメータが11.2.0.0.0
未満の値に設定されていると、ContentType
はエクスポートされません。 -
表に、
ContentType
が存在するSecureFiles LOBが含まれていて、エクスポート・ユーティリティのVERSION
パラメータが11.2.0.0.0
以降の値に設定されていると、ContentType
がエクスポートされ、その後のインポートでリストアされます。 -
表に、現在アーカイブされているSecureFiles LOBが含まれていて、データがキャッシュされ、エクスポート・ユーティリティの
VERSION
パラメータが11.2.0.0.0
未満の値に設定されていると、SecureFiles LOBデータがエクスポートされて、アーカイブ・メタデータが削除されます。この例では、VERSION
が11.1
以降に設定されていると、SecureFiles LOBは標準のSecureFiles LOBになります。ただし、VERSION
が11.1
未満の値に設定されていると、SecureFiles LOBはBasicFiles
LOBになります。 -
表に、現在アーカイブされているSecureFiles LOBが含まれていて、データがキャッシュされず、エクスポート・ユーティリティの
VERSION
パラメータが11.2.0.0.0
未満の値に設定されていると、ORA-45001
エラーが返されます。 -
表に、現在アーカイブされているSecureFiles LOBが含まれていて、データがキャッシュされ、エクスポート・ユーティリティの
VERSION
パラメータが11.2.0.0.0
以上の値に設定されていると、キャッシュされたデータとアーカイブ・メタデータの両方がエクスポートされます。
SecureFiles LOBの詳細は、『Oracle Database SecureFilesおよびラージ・オブジェクト開発者ガイド』を参照してください。
1.13 Oracle Data Pumpプロセス終了コード
Oracle Data Pump ExportおよびOracle Data Pump Import操作の状態をチェックするには、ログ・ファイルでプロセス終了コードを確認します。
Oracle Data Pumpでは、完了してすぐにエクスポートおよびインポート操作の結果が提供されます。Oracle Data Pumpでは、結果をログ・ファイルに記録するだけでなく、結果をプロセス終了コードでレポートすることもできます。Oracle Data Pumpの終了コードを使用して、コマンドラインやスクリプトからのOracle Data Pumpジョブの結果を確認します。
表1-1 Oracle Data Pump終了コード
終了コード | 意味 |
---|---|
|
エクスポートおよびインポート・ジョブが、正常に完了しました。エラーは出力デバイスに表示されず、ログ・ファイル(ある場合)にも記録されません。 |
|
エクスポートまたはインポート・ジョブは正常に完了しましたが、ジョブ実行中にエラーが検出されました。エラーは出力デバイスに表示され、ログ・ファイル(ある場合)に記録されます。 |
|
エクスポートまたはインポート・ジョブで、次を含む1つ以上の回復不可能なエラーが検出されました:
回復不可能なエラーは出力デバイスに表示されますが、ログ・ファイルには記録されない場合があります。これがログ・ファイルに記録されるかどうかは、次のようないくつかの要因によります。
|
親トピック: Oracle Data Pumpの概要
1.14 Oracle Data Pumpによるダンプ・ファイル・ブロックの管理方法
Oracle Database 23cより前のリリースでは、Oracle Data Pumpはヘッダー・ブロックを使用します。Oracle Database 23c以降、Oracle Data Pumpはトレーラ・ブロックを使用します。
- エクスポート用のダンプ・ファイル
ダンプ・ファイルのタイプと、Oracle Data PumpとSQLモードのダンプ・ファイル間のエクスポート・ダンプ・フライの違いについて学習します - ダンプ・ファイルでのトレーラ・ブロック・ファイル・レイアウト
Oracle Database 23c以降、デフォルトで、SQLモード・ファイルとData Pump Exportファイルの両方で、Oracle Cloud Infrastructureのオブジェクト・ストアでの使用を容易にするトレーラ・ブロック形式が使用されます。 - ダンプ・ファイルでのヘッダー・ブロック・ファイル・レイアウト
Oracle Database 21c以前のリリースでは、ダンプ・ファイルはヘッダー・ブロックを使用します。 - ダンプ・ファイル・トレーラ・ブロックのタイプ
Oracle Data PumpおよびSQLモード・ダンプ・ファイルに使用されるトレーラ・ブロックには、2つのタイプがあります。
親トピック: Oracle Data Pumpの概要
1.14.1 エクスポート用のダンプ・ファイル
ダンプ・ファイルのタイプと、エクスポート・ダンプがOracle Data PumpとSQLモードのダンプ・ファイル間で異なる点について学習します。
エクスポート・ダンプ・ファイルのタイプ
エクスポート・ダンプ・ファイルは、PL/SQL ORACLE_DATAPUMP外部アクセス・ドライバAPIまたはOracle Data Pump Export (expdp
)コマンドライン・ユーティリティのいずれかを使用するときに作成されます。
エクスポート操作中にOracle Data Pumpが作成できるダンプ・ファイルには、次の2つのタイプがあります。
- 拡張可能ファイルは、指定されたファイル・サイズ属性がnullまたは0の場合に拡張可能なエクスポート・ダンプ・ファイルです。拡張可能ファイルでは、Data Pumpは、必要な量のデータをファイルに書き込むか、デバイスの物理領域がなくなるまで、またはプロセスが割り当てられたディスク割当てに達するまで、書込みを続行します。
- 固定サイズ・ファイルは、指定されたファイル・サイズ属性がゼロより大きいエクスポート・ダンプ・ファイルです。nullまたはゼロより大きいファイル・サイズが指定されている場合、Data Pumpは指定したファイル・サイズまでのデータのみをダンプ・ファイルに書き込みます。固定サイズのファイルが使用され、エクスポートされるオブジェクトのサイズがダンプ・ファイル・サイズに指定された残りの使用可能な領域を超えている場合、そのオブジェクトは複数のダンプ・ファイルに及ぶ可能性があります。
ノート:
Oracle Data Pumpのエクスポート操作では、拡張可能ファイルと固定サイズの両方のファイルを使用できます。ただし、これを実行できるのは、DBMS_DATAPUMP
PL/SQL APIを使用する場合のみです。expdp
コマンドライン・クライアントを使用する場合、特定のエクスポート操作に対して指定できるファイル・タイプは1つのみです。
1.14.2 ダンプ・ファイルのトレーラ・ブロック・ファイル・レイアウト
Oracle Database 23c以降、SQLモード・ファイルとData Pump Exportファイルの両方が、Oracle Cloud Infrastructureのオブジェクト・ストアでの使用を容易にするトレーラ・ブロック形式をデフォルトで使用します。
Oracle Database 21c以前のリリースでは、ヘッダー・ブロックがダンプ・ファイルで使用されるデフォルトのレイアウト形式です。ダンプ・ファイルは、ローカル・ファイル・システムに配置する必要がありました。Oracle Database 23c以降のリリースでは、デフォルトの形式がヘッダー・ブロックからトレーラ・ブロックに変更されます。このデフォルト形式の変更により、クラウド内のオブジェクト・ストアにダンプ・ファイルを書き込むことが容易になります。
トレーラ・ブロックの概要
ヘッダー・ブロックとは異なり、トレーラ・ブロックはファイルが閉じられるまで書き込まれません。初期ヘッダー・ブロックは、ファイル作成時に限られた情報で書き込まれます。ただし、トレーラ・ブロックはディスクに書き込まれません。かわりに、トレーラ・ブロックはディスクに書き込まれるまで制御表で維持および更新されます。ディスクに書き込まれた後、これらのトレーラ・ブロックには、後で読み取られるときにファイル内のデータを正しく処理するために必要な情報が含まれます。
ノート:
この機能はOracle Database 23cの新機能であるため、トレーラ・ブロック形式を使用してダンプ・ファイルをエクスポートする場合、Data Pumpエクスポート・ダンプ・ファイル・セットは、Oracle Database 23c以降のリリースを実行しているData Pumpサーバーでのみ読取り可能です。
VERSION
パラメータ値は、データベースのCOMPATIBLE
設定がOracle Database 23cに設定されているか(変更されたこのデフォルトを使用)、COMPATIBLE設定が以前のOracle Databaseリリースに設定されているか(デフォルトはヘッダー・ブロックを使用)を指定して、ダンプ・ファイル形式を制御します。オブジェクト・ストアに使用される資格証明は、使用されるAPI (Native|Swift
)を示します。使用されるAPIは、ダンプ・ファイル形式を決定します。
トレーラ・ブロックによるクラウド・オブジェクト・ストアへの書込み方法
トレーラ・ブロックが有効な場合、Oracle Data Pumpは、ローカル・ファイル・システムに格納されている.dmp
ファイルの書込みおよび処理と同じ方法で、クラウドに格納されている.dmp
ファイルを書込みおよび処理します。手順の流れは次のとおりです。
- データ・ストアの資格証明を持つユーザーとしてログインします。オブジェクト・ストアへの接続に使用される資格証明の値は、データ・ダンプ・エクスポート(
expdp
)を開始するデータベース・ユーザーが所有する資格証明オブジェクトの名前です。 CREDENTIAL
パラメータが指定されている場合、DUMPFILE
パラメータの値は、データ・ポンプがクラウド・ストレージでUniform Resource Identifier (URI)として扱う区切られた文字列のカンマ区切り文字列のリストです。
ノート:
Data Pump ExportのDUMPFILEパラメータには、directory-object-name:filename
を使用してオプションのディレクトリ・オブジェクトを指定するオプションがあります。ただし、CREDENTIAL
が指定されると、DUMPFILE
パラメータの指定がオーバーライドされます。
ログ・ファイルの場所は、DEFAULT_DIRECTORY
パラメータによって設定されます。LOGFILEのファイル名の一部としてディレクトリ・オブジェクトの名前を指定することも選択できます。ダンプ・ファイルにURIが指定されていて、CREDENTIALパラメータが指定されていない場合は、ユーザーにエラーが返されます。
クラウド・オブジェクト・ストアにダンプ・ファイルを格納するための前提条件
Oracle Data Pump Export (expdp
)を使用してオブジェクト・ストアにアクセスする前に、sqlnet.ora
ファイルのWALLET_LOCATION
パラメータで示されるウォレットに、そのオブジェクト・ストアの資格証明が必要です。クラウドへの認証にはユーザー名とパスワードを指定し、ウォレット内のオブジェクト・ストアの証明書の場所を指定する必要があります。次の構文では、location
はウォレットの場所、file-for-trusted-certificate
は証明書のファイル名、walletpassword
はOracleウォレットのパスワードです。
orapki wallet add -wallet location -trusted_cert -cert file-for-trusted-certificate –pwd walletpassword
CREDENTIAL
パラメータには、Data Pumpエクスポートがウォレット内で検索するキーを構築するために使用する資格証明の名前が含まれます。前述の例では、expdp
コマンドラインでCREDENTIAL=obm
を指定します。
1.14.3 ダンプ・ファイルのヘッダー・ブロック・ファイル・レイアウト
Oracle Database 21c以前のリリースでは、ダンプ・ファイルはヘッダー・ブロックを使用します。
ノート:
Oracle Database 23c以降では、ヘッダー・ブロックはレガシー形式です。ダンプ・ファイル・レイアウトには様々な形式があります。
ヘッダー・ブロックを含むData Pump Dumpファイル・レイアウト(Oracle Databaseリリース10.1から21cのデフォルト)
リリース10.1からリリース21cまでのData Pumpエクスポート・ファイルの場合、基本的なダンプ・ファイル・レイアウトには次のコンポーネントがあります。
- 様々なフィールド(たとえばダンプ・ファイルのバージョン番号、文字セットID、マスター表データ(存在する場合)へのオフセットおよび長さなど)を含むファイル・ヘッダー・ブロック。
- システム・メタデータを含む1つ以上のブロック(
USERS
、INDEXES
、GRANTS
、その他のメタデータなど)。 - エクスポートされる各ユーザー表の表ストリームを含む1つ以上のブロック。例:
SCOTT.EMP
。 - エクスポート・ジョブのプライマリ表の表ストリームを含む1つ以上のブロック。
VERSIONパラメータとダンプ・ファイルの互換性
VERSION
パラメータは、エクスポートされるデータベース・オブジェクトのバージョンを指定します。また、ダンプ・ファイルの互換性も指定します。デフォルトでは、VERSION
はCOMPATIBLE
に設定され、COMPATIBLE
初期化パラメータで指定されたデータベース互換性レベルに対応します。
COMPATIBLE
初期化パラメータを23に更新し、COMPATIBLEが23cに設定されていないデータベースにダンプ・ファイルをエクスポートする場合(つまり、従来のヘッダー・ブロック形式にする場合)、23より前のバージョンを指定する必要があります。たとえば、VERSION
が19
として指定されている場合、ヘッダー・ブロック(レガシー)形式がダンプ・ファイルに使用され、ダンプ・ファイルのバージョンは5.1です。
VERSION=19
詳細は、Data Pumpエクスポート(expdp
)およびimpdp
)のVERSION
パラメータを参照してください。
1.14.4 ダンプ・ファイルのトレーラ・ブロックのタイプ
Oracle Data PumpおよびSQLモード・ダンプ・ファイルに使用されるトレーラ・ブロックには、2つのタイプがあります。
使用するエクスポート・オプションのタイプは、ダンプ・ファイルに使用されるトレーラ・ブロック・タイプの種類に影響します。
ディスクベースのトレーラ・ブロック
ディスクベースのトレーラ・ブロックは、対応するヘッダー・ブロックやその他のデータが存在する実際のダンプ・ファイルに書き込まれるブロックです。SQLモードのダンプ・ファイルは、ディスクベースのトレーラのみを使用できます。
表ベースのトレーラ・ブロック
表ベースのトレーラ・ブロックは、ダンプ・ファイルの外部でエクスポート・ジョブのプライマリ表に格納されるトレーラ・ブロックです。ダンプ・ファイル・ブロックの格納は、次の2つの目的で役立ちます。
- 最初にダンプ・ファイル(プライマリ・エクスポート・プロセス)を作成し、ヘッダー・ブロックをフォーマットするプロセスは、後でファイル・トレーラ・ブロックの基礎としてヘッダー・ブロックを使用する必要があるプロセスと同じではありません。かわりに、これはワーカー・プロセスによって行われます。ワーカー・プロセスはトレーラ・ブロックに順番に書き込み、ファイル・ヘッダー・ブロックをシークして読み取る必要がないため、プライマリ表にファイル・トレーラ・ブロックを格納するのは、ワーカー・プロセスが後でフェッチしてディスクに書き込むことができるまで、情報を保存する場所です。
- ストリーム・トレーラ・ブロックの場合、ファイル情報を表ベースのトレーラ・ブロックに格納すると、サイズ割当て管理が簡略化されます。ダンプ・ファイル内のブロックのサイズはすべて4Kです。ディスクベースのトレーラ・ブロックを使用した場合、エクスポートされるすべての表でファイル自体にトレーラ・ブロックを追加する必要があるため、出力ダンプ・ファイル・セットのサイズが大幅に増加する可能性があります。ユーザー表の場合、ストリーム・トレーラは常に表ベースです。これは、ディスクベースのストリーム・トレーラ・ブロックを使用するプライマリ表を除くすべてのユーザー表に当てはまります。
プライマリ表に格納されるすべてのファイルまたはトレーラ・ブロックは圧縮形式になります。4Kヘッダー・ブロックとトレーラ・ブロックは、それぞれ約200バイト以下に圧縮されます。
1.15 統合監査を使用してOracle Data Pumpジョブを監視する方法
特定のユーザー・データベース・アクションを監視および記録するには、統合監査を使用してデータ・ポンプ・ジョブの監査を実行します。
特定のユーザー・データベース・アクションを監視および記録するには、Oracle Data Pumpジョブの監査を実行できます。Oracle Data Pumpでは、すべての監査レコードが1つの場所に一元化される統合監査を使用します。統合監査を設定するには、統合監査ポリシーを作成するか、既存の監査ポリシーを変更します。監査ポリシーは、データベースにおけるユーザー動作の特定の部分を監査できる監査設定の名前付きグループです。
ポリシーを作成するには、SQL CREATE AUDIT POLICY
文を使用します。監査ポリシーを作成したら、AUDIT
SQL文を使用してポリシーを有効にします。
ポリシーを無効にするには、NOAUDIT
SQL文を使用します。
関連項目:
-
SQL
CREATE AUDIT POLICY、ALTER AUDIT POLICY、AUDIT
およびNOAUDIT
文の詳細は、Oracle Database SQL言語リファレンスを参照してください -
Oracle Databaseで監査を使用する方法の詳細は、Oracle Databaseセキュリティ・ガイドを参照してください
親トピック: Oracle Data Pumpの概要
1.16 Oracle Data Pump操作に対する暗号化されたデータのセキュリティ警告
Oracle Data Pumpは、暗号化されたデータが暗号化されていないデータとしてエクスポートされると警告を表示します。
Oracle Data Pumpのエクスポート操作中に、エクスポート・ジョブの開始時に指定された暗号化データがOracle Data Pumpで検出されると、ORA-39173
警告が表示されます。このORA-39173
("ORA-39173: 暗号化データがダンプ・ファイル・セットに暗号化されずに格納されました。")は、監査レコードにも書き込まれます。統合監査証跡のDP_WARNINGS1
列を確認すると、エクスポート操作中に発生したORA-39173エラーを表示できます。監査情報は、次のSQL文を実行することで取得します。
SELECT DP_WARNINGS1 FROM UNIFIED_AUDIT_TRAIL WHERE ACTION_NAME = 'EXPORT' ORDER BY 1;
親トピック: Oracle Data Pumpの概要
1.17 Oracle Data Pumpによるタイムスタンプ・データの処理方法
タイムスタンプ・データ型のTIMESTAMP WITH TIMEZONE
およびTIMESTAMP WITH LOCAL TIMEZONE
を含むエクスポートおよびインポート・ジョブの正常な完了に影響する可能性のある要因について学習します。
ノート:
この項の情報は、Oracle Database 12c以上で実行されているOracle Data Pumpにのみ適用されます。
- TIMESTAMP WITH TIMEZONEの制限事項
TIMESTAMP WITH TIME ZONE
データを含むエクスポートおよびインポート・ジョブは制限されます。 - TIMESTAMP WITH LOCAL TIME ZONE制限事項
トランスポータブル・モードを使用した表の移動は制限されます。
親トピック: Oracle Data Pumpの概要
1.17.1 TIMESTAMP WITH TIMEZONEの制限事項
TIMESTAMP WITH TIME ZONE
データを含むエクスポートおよびインポート・ジョブは制限されます。
- TIMESTAMP WITH TIME ZONEの制限事項の理解
TIMESTAMP WITH TIME ZONE
データが含まれるエクスポート・ジョブおよびインポート・ジョブを実行するには、タイムゾーン・ファイル・データとOracle Databaseリリースに関する情報を理解する必要があります。 - TIMESTAMP WITH TIME ZONEデータのOracle Data Pumpサポート
Oracle Data Pumpでは、様々なエクスポート・モードおよびインポート・モードでTIMESTAMP WITH TIME ZONE
データがサポートされます。 - ソースおよびターゲットのタイムゾーン・ファイルのバージョン
ジョブが正常に完了するかどうかは、ソースとターゲットのタイムゾーン・ファイルのバージョンが一致しているかどうかによります。
1.17.1.1 TIMESTAMP WITH TIME ZONEの制限事項の理解
TIMESTAMP WITH TIME ZONE
データが含まれるエクスポート・ジョブおよびインポート・ジョブを実行するには、タイムゾーン・ファイル・データとOracle Databaseリリースに関する情報を理解する必要があります。
ダンプ・ファイルをインポートする場合、宛先(ターゲット)データベースのタイム・ゾーン・バージョンは、エクスポートの取得元のソース・データベースのタイム・ゾーン・バージョンと同じバージョンか、それより新しい(高い)バージョンである必要があります。ジョブが正常に完了するかどうかは、次の要因に依存します。
- ソース・データベースとターゲット・データベースのOracle Databaseタイムゾーン・ファイルのバージョン。
- エクスポート/インポート・モードと、使用しているデータ・ポンプのバージョンで
TIMESTAMP WITH TIME ZONE
データがサポートされるかどうか。(Oracle Data Pump 11.2.0.1以上のリリースでは、TIMESTAMP WITH TIME ZONE
データがサポートされます。)
データベースのタイムゾーン・ファイルのバージョンを識別するには、次のSQL文を実行します。
SQL> SELECT VERSION FROM V$TIMEZONE_FILE;
関連トピック
親トピック: TIMESTAMP WITH TIMEZONEの制限事項
1.17.1.2 Oracle Data PumpによるTIMESTAMP WITH TIME ZONEデータのサポート
Oracle Data Pumpは、様々なエクスポート・モードおよびインポート・モードでTIMESTAMP WITH TIME ZONE
データをサポートしています。
Oracle Data Pumpでは、Oracle Databaseタイム・ゾーン・ファイルのバージョンがソース・データベースとターゲット・データベースで異なる場合、様々なエクスポート・モードおよびインポート・モードでTIMESTAMP WITH TIME ZONE
データがサポートされます。サポートされているモードには、非トランスポータブル・モード、トランスポータブル表領域、トランスポータブル表モードおよび全体トランスポータブル・モードがあります。
非トランスポータブル・モード
-
TIMESTAMP WITH TIME ZONE
データをサポートするデータ・ポンプのバージョン(11.2.0.1以上)でダンプ・ファイルを作成すると、エクスポート・システムのタイムゾーン・ファイルのバージョンがダンプ・ファイルに記録されます。Oracle Data Pumpでは、この情報を使用してデータ変換が必要であるかどうかを決定します。ターゲット・データベースでソースのタイムゾーンのバージョンについて認識しているが、実際には新しいバージョンを使用している場合、データは新しいバージョンに変換されます。TIMESTAMP WITH TIME ZONE
データはダウングレードできないため、ソースで使用しているものより古いバージョンのタイムゾーン・ファイルを使用しているターゲットにインポートを試みると、インポートは失敗します。 -
ダンプ・ファイルがOracle Database 11gリリース2 (11.2.0.1)より前のOracle Data Pumpバージョンで作成された場合、
TIMESTAMP WITH TIME ZONE
データはサポートされません。変換は行われず、破損が発生する可能性があります。
トランスポータブル表領域モードおよびトランスポータブル表モード
-
トランスポータブル表領域モードおよびトランスポータブル表モードでは、ソースとターゲットのタイムゾーン・ファイルのバージョンが異なる場合、
TIMESTAMP WITH TIME ZONE
列を含む表は作成されません。ジョブの開始時に、ソースとターゲットのデータベース・タイムゾーン・ファイルのバージョンを示す警告が表示されます。また、作成されなかった表ごとにメッセージが表示されます。このことは、ダンプ・ファイルを作成するために使用したOracle Data PumpバージョンでTIMESTAMP WITH TIME ZONE
データがサポートされる場合でも同様です。(リリース11.2.0.1以上ではTIMESTAMP WITH TIMEZONE
データがサポートされます。) -
ソースがOracle Database 11gリリース2 (11.2.0.1)よりも前の場合、トランスポータブル・セットが
TIMESTAMP WITH TIME ZONE
列を使用するかどうかに関係なく、タイムゾーン・ファイルのバージョンはすべてのトランスポータブル・ジョブのソースおよびターゲット・データベースで同じである必要があります。
全体トランスポータブル・モード
全体トランスポータブル・エクスポートおよびインポートがサポートされるのは、ソース・データベースがOracle Database 11gリリース2 (11.2.0.3)以降であり、ターゲットが少なくともOracle Database 12cリリース1 (12.1)以降の場合です。
Oracle Data Pump 11.2.0.1以上では、TIMESTAMP WITH TIME ZONE
データがサポートされます。したがって、全体トランスポータブル操作では、TIMESTAMP WITH TIME ZONE
列を含む表が作成されます。ソース・データベースとターゲット・データベースのタイムゾーン・ファイルのバージョンが異なる場合、ソースのTIMESTAMP WITH TIME ZONE
列は、ターゲットのタイムゾーン・ファイルのバージョンに変換されます。
1.17.1.3 ソースおよびターゲットのタイムゾーン・ファイルのバージョン
ジョブが正常に完了するかどうかは、ソースとターゲットのタイムゾーン・ファイルのバージョンが一致しているかどうかによります。
-
Oracle Databaseのタイムゾーン・ファイルのバージョンがソース・データベースとターゲット・データベースで同じである場合、
TIMESTAMP WITH TIME ZONE
データの変換は不要です。エクスポート/インポート・ジョブは正常に完了します。この例外は、データ・ポンプの11.2.0.1より前のリリースを使用して実行されるトランスポータブル表領域またはトランスポータブル表のエクスポートです。この場合、
TIMESTAMP WITH TIME ZONE
列を含むダンプ・ファイルの表は、タイムゾーン・ファイルのバージョンがソースとターゲットで同じであっても、インポート時に作成されません。 -
ターゲット・データベースでソースのタイムゾーン・ファイルのバージョンを使用できない場合、ジョブは失敗します。ソースのタイムゾーン・ファイルが新しいバージョンに更新されていても、ターゲットでは更新されていないことがあるため、ソースのタイムゾーン・ファイルのバージョンはターゲットで使用できない可能性があります。たとえば、タイムゾーン・ファイルのバージョンが17のOracle Database 11gリリース2 (11.2.0.2)でエクスポートを実行し、使用できるタイムゾーン・ファイルのバージョンが16のみの11.2.0.2でインポートを実行すると、ジョブは失敗します。
親トピック: TIMESTAMP WITH TIMEZONEの制限事項
1.17.2 TIMESTAMP WITH LOCAL TIME ZONEの制限事項
トランスポータブル・モードを使用した表の移動は制限されます。
表がトランスポータブル・モード(トランスポータブル表、トランスポータブル表領域または全体トランスポータブル)を使用して移動され、次の条件が存在する場合、警告が発行されて表は作成されません。
-
ソース・データベースとターゲット・データベースのデータベース・タイムゾーンが異なる場合
-
表に
TIMESTAMP WITH LOCAL TIME ZONE
データ型が含まれる場合
これらの条件が原因で作成されなかった表を正常に移動するには、トランスポータブルではないエクスポートおよびインポート・モードを使用してください。
1.18 文字セットおよびグローバリゼーション・サポートに関する考慮点
ユーザー・データの文字セット変換とデータ定義言語(DDL)を使用したOracle Data Pumpエクスポートおよびインポートのグローバリゼーション・サポートについて学習します。
- データ定義言語(DDL)
エクスポート・ユーティリティでは、エクスポート・システムのデータベース文字セットを使用してダンプ・ファイルが書き込まれます。 - シングルバイト文字セットとエクスポートおよびインポート
エクスポート・データベースとインポート・データベースで同じ文字セットを使用していることを確認してください。 - マルチバイト文字セットとエクスポートおよびインポート
Oracle Data Pumpのエクスポートおよびインポート中の文字セットの変換は、インポートするOracle Databaseの文字セットに依存します。
親トピック: Oracle Data Pumpの概要
1.18.1 データ定義言語 (DDL)
エクスポート・ユーティリティは、エクスポート・システムのデータベース文字セットを使用してダンプ・ファイルを書き込みます。
インポート・システムのデータベース文字セットがエクスポート・システムのデータベース文字セットと異なる場合にのみ、ダンプ・ファイルのインポート時にDDLのために文字セット変換が必要です。
文字セット変換によるデータの損失を最小限にするには、インポートのデータベース文字セットがエクスポートのデータベース文字セットのスーパーセットであることを確認します。
1.18.2 シングルバイト文字セットとエクスポートおよびインポート
エクスポート・データベースとインポート・データベースで同じ文字セットを使用していることを確認してください。
インポートが実行されるシステムで7ビット文字セットを使用し、8ビット文字セットのダンプ・ファイルをインポートすると、一部の8ビット・キャラクタは同等の7ビットに変換されることがあります。これが発生した場合の目印として、アクセント記号が付いている文字からアクセントが消去されます。
この不要な変換を回避するため、エクスポート・データベースとインポート・データベースで同じ文字セットを使用していることを確認してください。
1.18.3 マルチバイト文字セットとエクスポートおよびインポート
Oracle Data Pumpのエクスポートおよびインポート中の文字セットの変換は、インポートするOracle Databaseの文字セットに依存します。
インポート・データベースの文字セットに同等の文字がないエクスポート・ファイル中の文字は、変換時にデフォルトの文字に置換されます。インポート・データベースの文字セットは、デフォルトの文字を定義します。
DDLの変換中にインポート・システムで置換文字を使用する必要がある場合、警告メッセージが表示され、システムは変換されたDDLをロードしようと試みます。
ユーザー・データの変換中にインポート・システムで置換文字を使用する必要がある場合、デフォルトの動作として、変換されたデータがロードされます。ただし、置換文字を使用して変換されたユーザー・データの行を拒否するようにインポート・システムに指示することが可能です。詳細は、インポートのDATA OPTIONS
パラメータを参照してください。
100%完全に変換されるためには、インポート・データベースの文字セットは、エクスポート・ファイルを生成するために使用される文字セットのスーパーセットであるか、それと同等である必要があります。
注意:
エクスポート・システムのデータベース文字セットがインポート・システムのものと異なる場合、ジョブの開始時に、データベース文字セットの内容を示す情報メッセージがインポート・システムに表示されます。
インポート・データベースの文字セットがエクスポート・ファイルを生成するために使用された文字セットのスーパーセットではない場合、文字セット変換によってデータ損失が発生する可能性があることを示す警告がインポート・システムに表示されます。
関連トピック
1.19 データ・バインドされた照合に関連するOracle Data Pumpの動作
Oracle Data Pumpでは、データ・バインドされた照合(DBC)がサポートされています。
- エクスポートされたユーザーのスキーマの現在のデフォルト照合
- エクスポートされた表、ビュー、マテリアライズド・ビューおよびPL/SQL単位(ユーザー定義の型を含む)の現在のデフォルト照合
- 表およびクラスタのすべての文字データ型列の宣言された照合
Oracle Database 12cリリース2 (12.2)データベースからエクスポートされたダンプ・ファイルをインポートするときのデータ・ポンプ・インポートの動作は、インポート時のOracle Data PumpのVERSION
パラメータの有効な値と、ターゲット・データベースでデータ・バインドされた照合(DBC)機能が有効になっているかどうかの両方によって異なります。VERSION
パラメータの有効な値は、パラメータをどのように指定するかによって決まります。このパラメータは、次のように指定できます。
-
VERSION=n
は、有効な値が特定のバージョン番号n
であることを意味します。たとえば、VERSION=19
-
VERSION=LATEST
: 有効な値は、現在実行中のデータベース・バージョンです。 -
VERSION=COMPATIBLE
: 有効な値は、データベース初期化パラメータCOMPATIBLE
の値と同じです。このことは、VERSION
の値が指定されていない場合にも該当します。
データベースでDBC機能を有効にするには、初期化パラメータCOMPATIBLE
を12.2以降に設定し、また初期化パラメータMAX_STRING_SIZE
をEXTENDED
に設定する必要があります。
Oracle Data PumpインポートのVERSION
パラメータの有効な値が12.2であり、ターゲット・データベースでDBCが有効になっている場合、Oracle Data Pumpインポートでは、ダンプ・ファイルからの照合メタデータを参照する照合句を含むDDL文が生成されます。エクスポートされたオブジェクトは、ソース・データベースにあった元の照合メタデータを使用して作成されます。
DBCが無効になっている場合、またはOracle Data PumpインポートのVERSION
パラメータが12.2未満の値に設定されている場合、照合構文は生成されません。
親トピック: Oracle Data Pumpの概要