この方法は、ソース・データベースのエンディアン形式およびデータベース文字セットに関係なく使用できます。 Data Pumpを使用して異なるバージョンのOracle Database間でデータを移行することもできます。 この方法は実装が単純で、最も広範なクロスプラットフォーム・サポートを提供し、ターゲット・データベースの物理的な再編成を可能にします。ただし、データベースの規模が大きい場合、またはタイムフレームが限られている場合、エクスポートおよびインポートに必要な時間およびリソースの点からこの方法は適さない場合があります。
通常のData Pump ExportおよびImportではData Pumpユーティリティexpdp
およびimpdp
を使用してOracle Databaseデータおよびメタデータをアンロード(エクスポート)およびロード(インポート)します。 エクスポート時、ソース・データのコピーおよびメタデータはバイナリ・ダンプ・ファイルに書き込まれます。 ダンプ・ファイルをターゲット・システムにトランスポートした後、そのコンテンツを別のOracleデータベースにインポートできます。 このアーキテクチャから、Data Pumpは異なるプラットフォーム間、異なるOracle Databaseのバージョン間および文字セットの異なるデータベース間でのデータの移行のための広範なサポートを提供します。
この方法の使用と組み合せることで、データベース管理者はターゲット・データベースのデータベース・オブジェクトの物理プロパティを変更できます。 たとえば、管理者は、ターゲット・データベース環境の特性に合せて表および索引のエクステント・サイズを最適化できます。 したがって、通常のData Pump ExportおよびImportは、ターゲット・データベースを物理的に再編成する必要のある状況に適しています。
データベース全体を対象とする以外に、通常のData Pump ExportおよびImportには、特定の表、スキーマまたは表領域をエクスポートおよびインポートする柔軟性が備わっており、データベース全体を移行しない状況にも適しています。 データベースを部分的に移行する方法が論理的に有効な場合、この機能によってそれも可能になります。
エクスポートおよびインポート時に必要な処理のために、この方法は他の移行方法より時間およびリソースを集中的に必要とします。 したがって、ダウンタイムを最小限にする必要がある移行の場合、他の方法が望ましいこともあります。
従来のData Pump ExportおよびImportを使用して、ソース・データベース、表領域、スキーマまたは表をOracle Database Exadata Cloud Machineに移行するには、次の作業を行います:
ソース・データベース・ホストでData Pump Exportを使用してソース・データベースの一部またはすべてをダンプ・ファイルにアンロードします。
結果のダンプ・ファイルをExadata Cloud Machine計算ノードに転送します。
Exadata Cloud Machine計算ノードでData Pump Importを使用してターゲット・データベースをロードします。
ダンプ・ファイルの内容が正常にインポートされたことを確認したら、ダンプ・ファイルを削除できます。
「Oracle Databaseユーティリティ」の「第I部: Oracle Data Pump」を参照してください。
この例では、既存のOracleデータベースからOracle Database Exadata Cloud Machineにスキーマを移行するために必要なタスクのデモを段階的に示します。
この例では、スキーマ・モードのエクスポートおよびインポートを説明します。 同じ一般的な手順は、データベース全体、表領域または表のエクスポートおよびインポートに適用されます。
この例では、ソース・データベースはLinuxホスト上にあります。
ソース・データベース・ホストでData Pump Exportを起動し、スキーマをエクスポートします。
ソース・データベース・ホストでオペレーティング・システム・ディレクトリを作成し、エクスポート操作からの出力を格納します。
$ mkdir /u01/app/oracle/admin/orcl/dpdump/for_cloud
ソース・データベースのホストで、SQL*Plusを起動し、ソース・データベースにSYSTEM
ユーザーとしてログインします。
$ sqlplus system Enter password: <enter the password for the SYSTEM user>
オペレーティング・システム・ディレクトリを参照するディレクトリ・オブジェクトをソース・データベースに作成します。
SQL> CREATE DIRECTORY dp_for_cloud AS '/u01/app/oracle/admin/orcl/dpdump/for_cloud';
SQL*Plusを終了します。
ソース・データベース・ホストでSYSTEM
ユーザーまたはDATAPUMP_EXP_FULL_DATABASE
ロールを持つ別のユーザーとしてData Pump Exportを起動し、必要なスキーマをエクスポートします。 この例では、スキーマの所有者はFSOWNER
です。 要求されたら、ユーザーのパスワードを指定します。
$ expdp system SCHEMAS=fsowner DIRECTORY=dp_for_cloud
ダンプ・ファイルをターゲットExadata Cloud Machine計算ノードに転送します。
この例では、SCPユーティリティを使用してネットワーク経由でダンプ・ファイルをコピーします。
ターゲットExadata Cloud Machine計算ノードで、ダンプ・ファイルのコピー先のディレクトリを作成します。
転送するファイルのサイズに基づいて適切な場所を選択します。
$ mkdir /u01/app/oracle/admin/ORCL/dpdump/from_source
scp
コマンドを使用してエクスポート・ダンプ・ファイルをコピーする前に、ターゲットExadata Cloud Machine計算ノードへのアクセスを提供するSSH秘密鍵がソース・ホストで使用可能であることを確認します。 SSH鍵の詳細は、Exadata Cloud Machineへのネットワーク・アクセスについてを参照してください。
ソース・データベース・ホストでSCPユーティリティを使用してダンプ・ファイルをターゲットExadata Cloud Machine計算ノードに転送します。
$ scp –i private_key_file \ /u01/app/oracle/admin/orcl/dpdump/for_cloud/expdat.dmp \ oracle@compute_node_IP_address:/u01/app/oracle/admin/ORCL/dpdump/from_source
ターゲットExadata Cloud Machine計算ノードでData Pump Importを起動し、データをデータベースにインポートします。
Exadata Cloud Machine計算ノードでSQL*Plusを起動し、SYSTEM
ユーザーとしてデータベースにログインします。
$ sqlplus system Enter password: <enter the password for the SYSTEM user>
ディレクトリ・オブジェクトをExadata Cloud Machineデータベースに作成します。
SQL> CREATE DIRECTORY dp_from_source AS '/u01/app/oracle/admin/ORCL/dpdump/from_source';
存在しない場合、インポートされるオブジェクトの表領域を作成します。
SQL*Plusを終了します。
Exadata Cloud Machine計算ノードでData Pump Importを起動し、データベースに接続します。 データをデータベースにインポートします。
$ impdp system SCHEMAS=fsowner DIRECTORY=dp_from_source
データが正常にインポートされたことを確認したら、expdat.dmp
ファイルを削除できます。