Oracle Data Pumpの機能紹介 ～Enterprise Editionおよびオプションで利用できる機能～

## はじめに
Oracle Data Pumpは、Standard Edition 2 (SE2)でも使用できる便利なツールですが、Enterprise Editionやオプションがないと使えない機能もございます。
今回は、Oracle Data Pumpにおいて、Enterprise Editionおよびオプションで利用できる機能についてご紹介していきます。

また、本記事の内容は、

**第8回 Oracle DBaseCamp**
**【Oracle Data Pumpによるエクスポートとインポート】**

に登壇した際の内容になります。

詳細についてご覧になりたい方は、以下の録画や資料を参考にしてみてください。
* 録画

https://youtu.be/ysJdrpuwkNY

*資料

https://speakerdeck.com/oracle4engineer/oracle-dbasecamp-8

## Enterprise Edition(EE) において利用できる機能
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3072173/1c1dc1ac-e7a2-1ebb-cedb-a5ac5226d938.png)

:::note info
* **パラレル処理**
ワーカー・プロセスを複数利用して、エクスポート処理をパラレルに行うことで処理を高速化
* **トランスポータブル表領域**
通常のダンプ・ファイルをエクスポート・インポートする操作より短時間でデータの移行が可能
* **データ圧縮**
ダンプ・ファイルへ書き込む前にデータを圧縮することで、エクスポートの処理速度が向上
* **暗号化**
データを暗号化することで、機密データの漏洩リスクを防ぐ
:::
これらの機能について1つずつ詳細に解説していきます。

### パラレル処理
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3072173/2c33ed5c-e310-fe0b-a66a-83ee304ac8b5.png)
Oracle Data Pumpではワーカー・プロセスと呼ばれる処理の実行をしたり、ダンプ・ファイルに書き込んだりするプロセスがありますが、その<INS>**ワーカー・プロセスを複数で並列に利用することで処理を高速化**</INS>させます。
また並列処理には2種類あり、<INS>**複数の小さな表を同時に処理するもの**</INS>と、<INS>**大規模な表を分担して処理するもの**</INS>があります。
PARALLELパラメータに関する詳細な説明は以下の記事を参照してください。

https://qiita.com/yunagash/items/d9654d74257b19145619

### トランスポータブル表領域
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3072173/833ef8e9-f15d-fe4d-0d2b-52f380c28895.png)
トランスポータブル表領域では、表領域に格納されている<INS>**オブジェクトのメタデータをダンプ・ファイルとしてエクスポートして、データファイルは直接ターゲット・データベースに移動**</INS>させます。
その後メタデータをインポートすることでデータ移行を完了させます。

:::note info
**メリット**
通常のダンプ・ファイルのエクスポート・インポートよりも、短時間でデータ移行可能
:::

:::note warn
**デメリット**
転送対象の表領域を読み取り専用にする必要があるため、一時的にその表領域への変更処理が不可
:::

### データ圧縮
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3072173/5a2152ab-96a8-f16d-0713-ca4f95ca4b93.png)
データ圧縮については、Enterprise Editionに加えて、**Advanced Compression Option**が必要となっています。
特徴としては、ダンプファイルへ書き込む前にデータを圧縮することで、エクスポートの処理速度を上げることができます。
また、**COMPRESSION_ALGORITHMパラメータ**を使用することで、以下の表からOptionを選択して圧縮率と速度の適度な組み合わせを選ぶことができます。
|オプション|定義|
|:---|:---|
|BASIC|圧縮率と速度の適度な組合せが実現し、使用されるアルゴリズムはOracle Data Pumpの以前のバージョンと同じです。|
|LOW|Exportのスループットへの影響が最小です。このオプションは、CPUリソースが制限要因となる環境に適しています。|
|MEDIUM|ほとんどの環境に適しています。このオプションはBASICオプションと同様、圧縮率と処理速度を加味したよい組合せですが、BASICとは異なるアルゴリズムが使用されています。<font color="Red">推奨</font>|
|HIGH|ネットワーク速度が限定要因となっている、速度が遅いネットワークでダンプ・ファイルがコピーされる状況に最適です。|

### 暗号化
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3072173/ff49a4c0-f611-a716-54bb-3ad151c005ae.png)
暗号化については、Enterprise Editionに加えて、**Oracle Advanced Security**が必要となっています。
データを暗号化することで、機密データが漏洩するリスクを防ぐことができるので、セキュリティ対策として利用することができます。

## おわりに
今回は、Oracle Data PumpにおいてEnterprise Editionおよびオプションで利用できる機能について解説しました。

Oracle Data Pumpについて、更に詳しく知りたい方は以下の記事もご参考にしてみてください。

:::note info
* [Oracle Data Pumpによるエクスポートとインポートの基礎](https://qiita.com/yunagash/items/15625a0b6010ee83de1a)
* [Oracel Data Pumpのアーキテクチャから理解する「PARALLELパラメータとワーカー・プロセスの関係」](https://qiita.com/yunagash/items/d9654d74257b19145619)
* [Oracle Data Pumpのベスト・プラクティスと代表的なパラメータ](https://qiita.com/yunagash/items/aa41b3a2d916761807dc)
* [Oracle Data Pumpによる移行方法（クラウドリフト時の移行ケースと注意点）](https://qiita.com/yunagash/items/f2c037b1062753821c89)
* [Oracle Data Pumpのエクスポート時のジョブの中断、再開、強制終了の方法](https://qiita.com/yunagash/items/e06eb0fd4b1824bd09e0)
:::