はじめに
Oracle Data Pumpは、Oracle Databaseのオンプレミスからクラウドへの移行やバージョンアップの際によく使用される手法の1つです。
今回はOracle Databaseを運用していく上で、重要な役割を果たすOracle Data Pumpについてご紹介していきます。
また、本記事の内容は、
第8回 Oracle DBaseCamp
【Oracle Data Pumpによるエクスポートとインポート】
に登壇した際の内容になります。
詳細についてご覧になりたい方は、以下の録画や資料を参考にしてみてください。
- 録画
*資料
エクスポートとインポートの概要
■ エクスポートおよびインポートとは
まず、エクスポートとインポートというのは、データベース間のデータの移動を行うことができる機能です。
-
エクスポート
ソース・データベースから移動させたいスキーマや表といったオブジェクトをOSファイルとして抽出すること -
ダンプファイル
抽出したOSファイルのこと -
インポート
ダンプ・ファイルを元に、ターゲットデータベースにデータを書き込むこと
エクスポート、インポートの種類としては、主に2種類あり、Oracle Database 10gより前から提供されていた「オリジナルのエクスポート、オリジナルのインポート」と10g以降に提供されている「Oracle Data Pump」があります。
どちらもエクスポートの際にダンプファイルを作成しますが、それぞれに互換性はありませんので、注意が必要です。
■ エクスポートとインポートの種類
「Oracle Data Pump」では、データベースサーバー側で作業が実行されるため、クライアント側で作業が実行される「オリジナルのエクスポートおよびインポート」と比較して処理が高速になっています。
また、Oracle Data Pumpでは、APIによる呼び出しやジョブ管理が可能など、機能的に優れている部分が多いです。
しかし、Oracle Data Pumpでサポートされていない、古いOracle Databaseの移行の際は、オリジナルのエクスポートおよびインポートを利用する必要があります。
■ Oracle Data Pumpの利用用途
Oracle Data Pumpの利用用途として、「論理バックアップ」、「データベースのバージョンアップ」、「クラウドリフト」が挙げられます。
-
論理バックアップ
特定のデータだけをバックアップ可能で、復元したいデータを選択して復元することが可能になっています。また、物理バックアップの補助手段としても有効です。 -
データベースのバージョンアップ
Oracle Data Pumpは異なるバージョン間でのオブジェクトの移動が可能なので、10g以降であれば古いバージョン間でも利用可能になっています。Enterprise Editionだけでなく、Standard Edition 2でも使用できるので、非常に使い勝手が良いと言えます。 -
クラウドリフト
オンプレミスからクラウドのPaaSとOracle DatabaseをインストールしたIaaSへの移行の際も使用することができます。
Oracle Data Pumpの概要
■ Oracle Data Pumpとは
クライアントからexpdpおよびimpdpというこれらのコマンドを受け、エクスポートでダンプファイルを書き出す、インポートでダンプファイルを読み込むといった操作が行われます。
Oracle Databaseのデータベース・リンクの機能を利用して、Oracle Data Pumpのネットワーク・リンクというソース・データベースからターゲットデータベースへデータを移動させる機能を利用することができます。
ネットワークリンクを利用すれば、直接ソースデータベースからターゲットデータベースのストレージにダンプファイルをエクスポートできるようになります。また、ダンプファイルなどを生成せずとも直接ターゲットデータベースへデータをインポートすることも可能になります。
■ Oracle Data Pumpの特徴
Oracle Data Pumpの特徴としては、以下のような柔軟なデータの移動が可能なことが挙げられます。
- 異なるバージョンのOracle Database間におけるデータ移動
- 異なるプラットフォーム間におけるデータ移動
-
対象範囲を選択したデータ移動
・モード: データベース全体、表領域、スキーマ、表
・オブジェクト単位: EXCLUDE、INCLUDE、QUERY、CONTENT - データベース構造の変更を伴う移行において利用可能
・非CDB構成からPDB構成
・暗号化、圧縮、キャラクタ・セット、表領域・スキーマの再マッピング
対象範囲を選択したデータ移動において、エクスポート・インポート時にモードを選択することができ、そのモードの種類を表にまとめています。
モード | 機能説明 | パラメータ |
---|---|---|
全体 | データベース全体のエクスポート | FULL=[YES|NO] |
スキーマ | 指定したスキーマ全体のエクスポート | SCHEMAS=schema_name [, ...] |
表 | 指定した表全体のエクスポート | TABLES=[schema_name.]table_name[:partition_name] [, ...] |
表領域 | 指定した表領域全体のエクスポート | TABLESPACES=tablespace_name [, ...] |
また、オブジェクト単位で対象範囲を選択することができるので、データのフィルタ処理のようにエクスポート・インポートする対象を制限することが可能です。
パラメータ | 説明 |
---|---|
EXCLUDE | 操作対象から除外するオブジェクトを指定可能 |
INCLUDE | 操作対象に含めるオブジェクトを指定可能 |
QUERY | SELECT文などを使用し、条件を絞り込むことで、指定した表のデータでフィルタリング可能 |
CONTENT | メタデータのみ、データのみ、またはその両方のパターンでエクスポート、インポート可能 |
おわりに
今回は、Oracle Data Pumpの概要について解説しました。
Oracle Data Pumpについて、更に詳しく知りたい方は以下の記事もご参考にしてみてください。