5 データ・ポンプ・ユーティリティのパフォーマンス
データ・ポンプ・エクスポート・ユーティリティおよびデータ・ポンプ・インポート・ユーティリティが、オリジナルのエクスポート・ユーティリティおよびインポート・ユーティリティよりもパフォーマンスに優れている理由、およびエクスポートおよびインポート操作のパフォーマンスを向上できる特定のステップについて説明します。
データ・ポンプ・エクスポートおよびデータ・ポンプ・インポート・ユーティリティは、大規模データベースを対象に設計されています。大量のデータおよびメタデータがある場合は、オリジナルのエクスポート・ユーティリティおよびインポート・ユーティリティと比較して、データのパフォーマンスが向上します。(データ・ポンプ・エクスポート・ユーティリティおよびデータ・ポンプ・インポート・ユーティリティでのメタデータ抽出およびデータベース・オブジェクト作成のパフォーマンスは、基本的にはオリジナルのエクスポート・ユーティリティおよびインポート・ユーティリティのパフォーマンスと同様です。)
- データ・ポンプ・エクスポートおよびデータ・ポンプ・インポートのデータ・パフォーマンスの改善点
この項では、データ・ポンプ・エクスポートおよびデータ・ポンプ・インポートでのデータ・パフォーマンスの改善点について説明します。 - パフォーマンスのチューニング
データ・ポンプでは、すべての使用可能なリソースを最大限に使用して、スループットの最大化およびジョブ経過時間の最小化が行われるように設計されています。 - データ・ポンプのパフォーマンスに影響する初期化パラメータ
特定のOracle Database初期化パラメータの設定が、データ・ポンプ・エクスポートおよびデータ・ポンプ・インポートのパフォーマンスに影響する場合があります。
親トピック: Oracle Data Pump
5.1 データ・ポンプ・エクスポート・ユーティリティおよびデータ・ポンプ・インポート・ユーティリティのデータ・パフォーマンスの改善点
この項では、データ・ポンプ・エクスポートおよびデータ・ポンプ・インポートでのデータ・パフォーマンスの改善点について説明します。
次に、データ・ポンプ・エクスポートおよびインポート・ユーティリティでのパフォーマンス向上の要因を示します。
-
複数のワーカー・プロセスで、表間およびパーティション間のパラレル処理を実行して、複数のパラレル・ダイレクト・パス・ストリームで表をロードおよびアンロードできます。
-
非常に大きい表およびパーティションの場合は、単一のワーカー・プロセスで、外部表による方法を使用してデータにアクセスすると、複数のパラレル問合せおよびパラレルDML I/Oサーバー・プロセスを介してパーティション間のパラレル処理を選択できます。
-
データ・ポンプでは、索引の作成およびパッケージ本体のロードにパラレル処理を使用します。
-
ダンプ・ファイルは、直接サーバーで読取りおよび書込みが行われるため、データをクライアントに移動する必要はありません。
-
ダンプ・ファイルの格納形式は、ダイレクト・パスAPIの内部ストリーム形式です。これは、表領域内部のOracle Databaseのデータ・ファイルに格納されている形式と同様の形式です。したがって、クライアント側では
INSERT
文バインド変数への変換は実行されません。 -
サポートされているデータ・アクセス方法(ダイレクト・パスおよび外部表による方法)は従来のSQLより高速です。ダイレクト・パスAPIを使用すると、単一ストリームでの最大のパフォーマンスが実現します。外部表機能を使用すると、Oracle Databaseのパラレル問合せおよびパラレルDML機能を効率的に使用できます。
-
エクスポート時に、メタデータとデータの抽出を同時に実行できます。
親トピック: データ・ポンプ・ユーティリティのパフォーマンス
5.2 パフォーマンスのチューニング
データ・ポンプでは、すべての使用可能なリソースを最大限に使用して、スループットの最大化およびジョブ経過時間の最小化が行われるように設計されています。
これを実現するには、システムでCPU、メモリー、I/O間でバランスがとられている必要があります。また、パフォーマンス・チューニングの標準原理が適用されます。たとえば、ダンプ・ファイル・セット内のダンプ・ファイルの書込みおよび読取りはパラレルで行われるため、最大のパフォーマンスを得るにはそれらのダンプ・ファイルを個別のディスクに常駐させる必要があります。また、それらのダンプ・ファイルは、ソースまたはターゲットの表領域が常駐するディスクとは別のディスクに常駐させる必要があります。
パフォーマンス・チューニングを行う場合は、パフォーマンスとリソース消費のバランスをとることが必要です。
- リソース消費の制御
データ・ポンプ・エクスポートおよびインポート・ユーティリティを使用すると、ジョブごとのリソース消費量を動的に増減できます。 - 圧縮および暗号化によるパフォーマンスへの影響
圧縮および暗号化に関連するデータ・ポンプ・パラメータを使用すると、特にネットワーク・モードで実行されるジョブの場合にパフォーマンスが向上する可能性があります。 - 統計のエクスポートおよびインポートにおけるメモリーの考慮事項
12.1より前のリリースで作成され、統計データが大量に含まれるデータ・ポンプ・エクスポート・ダンプ・ファイルでは、インポート操作で大量のメモリーを消費する場合があります。
親トピック: データ・ポンプ・ユーティリティのパフォーマンス
5.2.1 リソース消費の制御
データ・ポンプ・エクスポートおよびインポート・ユーティリティを使用すると、ジョブごとのリソース消費量を動的に増減できます。
これを実行するには、データ・ポンプのPARALLEL
パラメータを使用してそのジョブの並列度を指定します。最大のスループットを得るには、PARALLEL
をCPU数の2倍(CPUごとに2つのワーカー)以下に設定してください。
並列度を増加すると、CPU使用量、メモリー使用量およびI/O帯域幅使用も増大します。これらのリソースの使用可能な量が適切であることを確認してください。必要に応じて、異なるディスク・デバイスまたはチャネル間にファイルを分散して、必要なI/O帯域幅を確保できます。
並列度を最大にするには、並列度ごとに少なくとも1つのファイルを提供する必要があります。これを簡単に行うには、たとえばfile%u.dmp
のように、ファイル名に置換変数を使用します。ただし、ディスク設定によっては(たとえば、単純な非ストライプ・ディスクなどの場合)、すべてのダンプ・ファイルを1つのデバイスに配置しない場合があります。その場合は、置換変数を使用して複数のファイル名を指定し、それぞれのファイルを別々のディレクトリ(別々のディスク)に配置します。高速CPUと高速ディスクを使用する場合でも、CPUとディスク間のパスは、持続可能な並列度の量を制約する要因になることがあります。
データ・ポンプのPARALLEL
パラメータは、Oracle Database 11g以上のEnterprise Editionでのみ有効です。
親トピック: パフォーマンスのチューニング
5.2.2 圧縮および暗号化によるパフォーマンスへの影響
圧縮および暗号化に関連するデータ・ポンプ・パラメータを使用すると、特にネットワーク・モードで実行されるジョブの場合にパフォーマンスが向上する可能性があります。
ただし、RAWデータの変換を実行するために必要な追加のCPUリソースが原因で、パフォーマンスが低下する場合もあることに注意してください。両者はトレードオフの関係にあります。
親トピック: パフォーマンスのチューニング
5.2.3 統計のエクスポートおよびインポートにおけるメモリーの考慮事項
12.1より前のリリースで作成され、統計データが大量に含まれるデータ・ポンプ・エクスポート・ダンプ・ファイルでは、インポート操作で大量のメモリーを消費する場合があります。
インポート操作時のメモリーの不足を回避するには、インポートの開始前に十分にメモリーを割り当てる必要があります。必要とされるメモリーの正確な量は、インポートするデータの量、使用しているプラットフォーム、または使用する構成に固有の要素によって異なります。
この問題にまとめて対処するには、エクスポートまたはインポート操作のいずれかの際にデータ・ポンプのEXCLUDE=STATISTICS
パラメータを設定します。DBMS_STATS
PL/SQLパッケージを使用すると、インポートが完了した後にターゲット・データベースで統計を再生成することができます。
関連項目:
-
DBMS_STATS
PL/SQLパッケージを使用して手動で統計を収集する場合の詳細は、Oracle Database SQLチューニング・ガイドを参照してください -
DBMS_STATS
PL/SQLパッケージの詳細は、Oracle Database PL/SQLパッケージおよびタイプ・リファレンスを参照してください
親トピック: パフォーマンスのチューニング
5.3 データ・ポンプ・ユーティリティのパフォーマンスに影響する初期化パラメータ
特定のOracle Database初期化パラメータの設定が、データ・ポンプ・エクスポートおよびデータ・ポンプ・インポートのパフォーマンスに影響する場合があります。
特に、次の設定を使用してパフォーマンスを改善できます。ただし、プラットフォームによっては同様の効果を得られない場合もあります。
-
DISK_ASYNCH_IO=TRUE
-
DB_BLOCK_CHECKING=FALSE
-
DB_BLOCK_CHECKSUM=FALSE
次の初期化パラメータには、並列度が最大になる値を指定する必要があります。
-
PROCESSES
-
SESSIONS
-
PARALLEL_MAX_SERVERS
さらに、初期化パラメータSHARED_POOL_SIZE
とUNDO_TABLESPACE
は、余裕のある大きさにする必要があります。具体的な値は、データベースのサイズによって異なります。
- Streams環境でのバッファ・キャッシュ・サイズの設定
Oracle Data Pumpは、Streams機能を使用してプロセス間の通信を行います。
親トピック: データ・ポンプ・ユーティリティのパフォーマンス
5.3.1 Streams環境でのバッファ・キャッシュ・サイズの設定
Oracle Data Pumpは、Streams機能を使用してプロセス間の通信を行います。
SGA_TARGET
初期化パラメータが設定されていると、STREAMS_POOL_SIZE
初期化パラメータは自動的に合理的な値に設定されます。
SGA_TARGET
初期化パラメータが設定されていない状態で、STREAMS_POOL_SIZE
初期化パラメータも定義されていない場合は、ストリーム・プールのサイズは自動的に共有プール・サイズの10%(デフォルト)になります。
ストリーム・プールが作成されると、バッファ・キャッシュに割り当てられたメモリーから必要なSGAメモリーが確保されるため、キャッシュのサイズは、DB_CACHE_SIZE
初期化パラメータで指定したサイズよりも少なくなります。つまり、バッファ・キャッシュが必要最小限のSGAで構成されていた場合、データ・ポンプ操作は正しく動作しません。データ・ポンプ操作を正常に実行するために、STREAMS_POOL_SIZE
の値は、最小サイズの10MBにすることをお薦めします。