はじめに
Oracle Data Pumpを使用して、オンプレミスからオンプレミス / Oracle CloudにOracle Databaseを移行する際に推奨されるベスト・プラクティスについて紹介します。
ベスト・プラクティスを紹介するに当たり、Oracleの公式ドキュメントであるOracle Data Pumpのベスト・プラクティスの内容を参考にしております。
また、本記事の内容は、
第8回 Oracle DBaseCamp
【Oracle Data Pumpによるエクスポートとインポート】
に登壇した際の内容になります。
詳細についてご覧になりたい方は、以下の録画や資料を参考にしてみてください。
- 録画
*資料
Oracle Data Pumpのベスト・プラクティス
ベスト・プラクティスについて項目ごとにまとめました。
(赤字はOracle Data Pumpのパラメータ指定に関わるもの)
【事前設定】
- SYS as SYSDBAを使用してエクスポートを起動しない
- リソース使用率を適切に設定する (STREAM_POOL_SIZE初期化パラメータ)
【パラメータ】
- パラメータ・ファイルを使用する
- Oracle Data Pumpエクスポートの一貫性を確保する
- エクスポートおよびインポート中に診断パラメータを含める
- データベース互換性を設定する (ターゲット・データベースのバージョンが下位の場合)
【抽出対象】
- エクスポートとインポートから統計情報を除外する
【性能】
- 並列処理と現在の統計情報を使用してパフォーマンスを向上する
- 異なるOSおよびストレージ上のサーバーにネットワーク・リンクを使用する
- スペース使用とパフォーマンスのためにエクスポートで圧縮を使用する
【その他】
- SecureFiles LOBを使用する
- Data Pumpジョブ実行前のデータベース・チェック
- Oracle Cloudデータベース向けのその他のプラクティス
ドキュメントの中から、よく使うポイントをいくつかピックアップし、Oracle Data Pumpのパラメータ指定に関わるものについて詳しく解説していきます。
ベスト・プラクティスに記載のあるパラメータ
エクスポートの一貫性
Oracle Data Pumpでの移行において、すべてのオブジェクトのデータ抽出処理において指定した時刻の状態のデータを移行したいといった場合に利用できます。
指定したSCNもしくは時刻における一貫性を維持したデータのエクスポ ートをおこなう
- FLASHBACK_SCN
- FLASHBACK_TIME
注意点としては、
- 指定する時刻やSCNのUNDOデータが残っている必要がある
- UNDO表領域の容量やUNDO_RETENTIONの設定値を考慮する必要がある
⇒UNDO_RETENTION : UNDO保存の下限値(秒)を指定可能
エクスポート/インポートの診断
実行に問題が発生した際は、ログ情報を確認して原因を追及すると思いますが、そのログに記載される情報はなるべく多い方が原因究明を迅速に進めることができます。
ログファイルにタイムスタンプや経過時間などの、診断情報が常に含まれるように指定できます。
- LOGTIME:メッセージにタイムスタンプを付与
- METRICS:オブジェクトの数やジョブに関する経過時間の情報を付与
パフォーマンス問題を診断する場合であったり、同じような操作の時間を見積もる場合にも役立ちます。
エクスポート時の圧縮
COMPRESSIONパラメーターにより、移行データを圧縮することで、エクスポートの処理速度を上げることができます。
ファイルを圧縮することでダンプ・ファイルのサイズとネットワーク・モードのインポートでのデータ・ストリーム・サイズを削減できます。
- COMPRESSION
- COMPRESSION_ALGORITHM
COMPRESSION_ALGORITHMに関しては、以下の表からOptionを選択して、圧縮率と速度の適度な組み合わせを選ぶことができます。
オプション | 定義 |
---|---|
BASIC | 圧縮率と速度の適度な組合せが実現し、使用されるアルゴリズムはOracle Data Pumpの以前のバージョンと同じです。 |
LOW | Exportのスループットへの影響が最小です。このオプションは、CPUリソースが制限要因となる環境に適しています。 |
MEDIUM | ほとんどの環境に適しています。このオプションはBASICオプションと同様、圧縮率と処理速度を加味したよい組合せですが、BASICとは異なるアルゴリズムが使用されています。推奨 |
HIGH | ネットワーク速度が限定要因となっている、速度が遅いネットワークでダンプ・ファイルがコピーされる状況に最適です。 |
注意点としては、
使用には別途Enterprise Editionに含まれているAdvanced Compression Optionが必要になります。
並列処理
並列処理によって、より高速にエクスポートとインポートの処理を行うことができるようになります。
-
PARALLEL:
複数のダンプファイルに対して、同時にデータの書き込みを行えるようになるため、エクスポートとインポートの処理速度が向上 -
DMPFILE:
%U、%Lなどのワイルドカードを指定することで、複数のダンプ・ファイルに同時に書き込むことが可能になる -
FILESIZE:
1つのダンプ・ファイルの最大サイズを指定できるようになるので、作成されるダンプ・ファイル数とそれぞれのサイズを調整することが可能になる
PARALLELパラメータとDMPFILEパラメータについての詳しい解説は、Oracel Data Pumpのアーキテクチャから理解する「PARALLELパラメータとワーカー・プロセスの関係」をご参照ください。
統計情報の除外
オプティマイザ統計情報を除外することで、エクスポートとインポートのパフォーマンスを向上させることが可能です。
EXCLUDEパラメータを使用することでエクスポートの際に対象の情報を除外することができます。
- EXCLUDE = STATISTICS
統計情報を除外した場合は、インポート後にターゲット・データベースで統計情報を収集することになります。
インポート時のSecureFiles LOBへの変換
LOBファイルが含まれている場合は、TRANSFORMパラメータを使用して、SecureFiles LOBに変換することを推奨しています。
SecureFilesは、Oracle Database 12c以降で使用されるLOBのデフォルトの記憶域メカニズムであり、LOBの格納および管理には従来のBasicFilesではなくSecureFilesを使用することをお薦めします。
- TRANSFORM = LOB_STORAGE:SECUREFILE
BasicFiles LOBの方は、今後のリリースで非推奨になる予定です。
パラメータファイルの記載例
今までご紹介したベストプラクティスに記載されているパラメータを使った記載例となります。
指定する値はそれぞれの環境や実現したい意向によって異なりますので、あくまでも、こちらは記載方法の参考として見ていただければと思います。
■ エクスポート用のパラメータ・ファイル(expdp.par)
schemas=app
parallel=8
dumpfile=mydump%U.dmp
filesize=5g
exclude=statistics
logtime=all
metrics=yes
compression=all
compression_algorithm=medium
flashback_scn=3392846
■ インポート用のパラメータ・ファイル(impdp.par)
schemas=app
parallel=8
dumpfile=mydump%U.dmp
exclude=statistics
logtime=all
metrics=yes
transform=lob_storage:securefile
パラメータを実行コマンドに直接入力して実行することも可能ですが、パラメータ・ファイルを使用して実行することが推奨とされています。
理由としては、整理されていて見やすいこと、ミスがないか見直す際に楽であること、大量に文字を入力する手間を省けることがあります。
おわりに
今回は、Oracle Data Pumpのベスト・プラクティスと代表的なパラメータについて解説しました。
Oracle Data Pumpについて、更に詳しく知りたい方は以下の記事もご参考にしてみてください。