Oracle® Database 11g Data Pump:超高速データ移動ユーティリティの

Oracleホワイト・ペーパー
2009年2月
Oracle® Database 11g Data Pump:
超高速データ移動ユーティリティの
基盤
Oracleホワイト・ペーパー - Oracle® Database 11g Data Pump:超高速データ移動ユーティリティの基盤
はじめに.............................................................................................................................. 1
Oracle Data Pumpの概要 ................................................................................................... 2
Oracle Data Pumpのアーキテクチャ ................................................................................. 3
マスター表 ..................................................................................................................... 3
プロセス構造 ................................................................................................................. 3
データ移動 ..................................................................................................................... 5
メタデータの移動 .......................................................................................................... 6
プロセス間通信.............................................................................................................. 6
ファイル管理 ................................................................................................................. 6
ディレクトリ管理 .......................................................................................................... 6
主要な機能 .......................................................................................................................... 7
パフォーマンス.............................................................................................................. 7
再開 ................................................................................................................................ 9
ファイングレイン・オブジェクト選択 ......................................................................... 9
監視および予測............................................................................................................. 11
Oracle Data Pumpのクライアント:expdpおよびimpdp ............................................. 11
その他の便利な機能 .................................................................................................... 12
これまでのexpおよびimp ................................................................................................. 14
Oracle Data Pumpと元のexp/impの相違点 ...................................................................... 14
結論 ................................................................................................................................... 15
Oracleホワイト・ペーパー - Oracle® Database 11g Data Pump:超高速データ移動ユーティリティの基盤
はじめに
このホワイト・ペーパーでは、Oracle Data Pumpアーキテクチャの概要を紹介します。また、Oracle
Data Pumpの主要機能やベスト・プラクティスに対する議論を取り上げ、Oracle Data PumpのExport
およびImportユーティリティとこれまでのExportおよびImportユーティリティの簡単な比較を行い
ます。
1
Oracleホワイト・ペーパー - Oracle® Database 11g Data Pump:超高速データ移動ユーティリティの基盤
Oracle Data Pumpの概要
Oracle Database 10gから利用できるOracle Data Pumpは、Oracle Databaseに完全統合された機能で、デー
タベースから、またはデ―タベースへのデータおよびメタデータの高速なロードとアンロードを実
現します。ロードまたはアンロード時の複数のパラレル・ストリームを自動的に管理およびスケジュー
リングし、スループットを最大限に引き出すことができます。Oracle Data Pumpインフラストラクチャ
は、PL/SQLパッケージのDBMS_DATAPUMPからコールできます。これにより、Oracle Data Pumpを使
用してカスタム・データ移動ユーティリティを構築できます。Oracle Databaseには、次の3つのクラ
イアント・ユーティリティが含まれます。
•
コマンドライン・エクスポート(expdp)
•
コマンドライン・インポート(impdp)
•
WebベースのOracle Enterprise Managerエクスポート/インポート・インタフェース
また、Oracle Data Pumpは、Oracle Databaseにおけるその他の主要機能の基盤でもあります。たとえ
ば、Automated Workload Repository(AWR)、Streams-Based Replication、Logical Standby、Grid、
Transportable Tablespacesなどです。Streams-Based ReplicationおよびLogical Standbyについて、Oracle
Data Pumpはフラッシュバック・テクノロジーを使用して、レプリケート・サイトでの初期構成を素
早く生成し、一貫性をもった開始地点を提供します。初期Gridのインスタンス化は、Transportable
Tablespacesをベースに実行されます。これは、移動した表領域セットに定義されたオブジェクトのメ
タデータを、Oracle Data Pumpが移動および関連付けることを前提に行われます。
Oracle Data Pumpに関する要件を大手顧客から収集していると、"時は金なり、である。ほかのことは
ともかく、大容量データのエクスポートおよびインポートの処理速度を向上してほしい"という声を
頻繁に聞きます。オラクルはこの言葉を深く受け止めました。Oracle Data Pumpは、データが集中す
る場合に、大量のエクスポートおよびインポート操作にかかる経過時間を2倍以上短縮します。
また、パフォーマンスの向上に加えて、顧客からはその他に多くの要望が寄せられました。これを
受けて、Oracle Data Pumpベースのエクスポートおよびインポート・クライアント(expdpおよび
impdp)では、これまでのエクスポートおよびインポート・クライアント(expおよびimp)の全機
能はもちろん、ダンプ・ファイルの暗号化と圧縮、チェックポイントの再開、ジョブ・サイズの予
測、非常に柔軟なファイングレイン・オブジェクト選択、あるインスタンスを別のインスタンスか
ら直接ロード、詳細なジョブ監視、Transportable Tablespaceによる個別の表パーティションの移動な
ど、多くの機能をサポートすることになりました。
Oracle Data PumpはOracle Databaseに統合された機能であるため、すべての構成で利用できます。ただ
し、パラレル処理などのOracle Data Pumpのいくつかの機能は、Enterprise Editionでのみ利用可能です。
ダンプ・ファイルの暗号化機能は、Oracle Advanced Securityオプションの一部として利用できます。
ダンプ・ファイルのデータ圧縮機能は、Oracle Advanced Compressionオプションに含まれています。
2
Oracleホワイト・ペーパー - Oracle® Database 11g Data Pump:超高速データ移動ユーティリティの基盤
Oracle Data Pumpのアーキテクチャ
Oracle Data Pumpは、最大の柔軟性を実現する高パフォーマンスを得るために設計されたアーキテク
チャです。Oracle Data Pumpのアーキテクチャを理解することで、高速な処理と機能を活かすことが
できます。
マスター表
Oracle Data Pumpの中心的な操作機能は、マスター表です。これは、Oracle Data Pumpのジョブを実行
するユーザーのスキーマに作成される表で、ジョブに関する詳細な情報のすべてを管理するディレ
クトリです。詳細情報には、エクスポートまたはインポートされた各オブジェクトの現在の状態、
それらオブジェクトのダンプ・ファイル・セット内における場所、ジョブに対してユーザーが提供
したパラメータ、各ワーカー・プロセスの状態、ダンプ・ファイルの現在のセット、再開情報など
が含まれます。
マスター表は、ファイル・ベースによるエクスポート・ジョブの実行中に構築され、最後の段階で
ダンプ・ファイルへ書き込まれます。これとは逆に、マスター表はファイル・ベースによるインポー
ト処理の最初の段階にユーザーの現在のスキーマへロードされます。これによって、マスター表を
使用してすべてのインポート・オブジェクトの作成を順序付けすることができます。
マスター表の使用は、Oracle Data Pumpで計画または計画外のジョブ停止時にジョブを再開するため
の重要な機能です。マスター表はジョブで処理すべき各オブジェクトの状態を維持しているので、
Oracle Data Pumpはどのオブジェクトが現在処理されているのか、そしてその処理が正しく終了して
いるのかが分かります。
プロセス構造
Oracle Data Pumpのジョブは、複数のプロセスで構成されています。これらプロセスを作成順に説明
します。
クライアント・プロセス - Oracle Data Pump APIにコールを行うプロセスです。前述のとおり、Oracle
DatabaseはこのAPIのクライアント・ユーティリティを4つ実装しています。このホワイト・ペーパー
では、新しく実装するエクスポート/インポート・クライアントのexpdpおよびimpdpについて紹介し
ます。両クライアントは、これまでのexpおよびimpと同じルック・アンド・フィールを持ちますが、
後半で解説するとおり、より多くの機能が搭載されています。Oracle Data PumpはOracle Databaseに
統合されているため、一度ジョブが実行されると、クライアントは何も要求されません。監視や制
御を行う場合は、必要に応じて複数のクライアントをジョブに接続したり、非接続にしたりします。
3
Oracleホワイト・ペーパー - Oracle® Database 11g Data Pump:超高速データ移動ユーティリティの基盤
シャドウ・プロセス - クライアントがOracle Databaseにログインする際に作成される標準Oracleシャ
ドウ・プロセス(またはフォアグラウンド・プロセス)です。このシャドウ・プロセスは、Oracle Data
Pump APIの要求を受けます1。DBMS_DATAPUMP.OPEN要求を受けると、シャドウ・プロセスは、お
もにマスター表の作成、さまざまなプロセス間の通信に使用されるAdvanced Queuing(AQ)キュー
の作成、マスター制御プロセスの作成で構成されるジョブを作成します。ジョブが実行されると、
シャドウ・プロセスの主要なタスクはクライアントからGET_STATUS要求を受け付けることとなり
ます。クライアントの接続が切り離されると、シャドウ・プロセスも切り離されます。
マスター制御プロセス(MCP)- 名前が示すとおり、MCPはOracle Data Pumpジョブの実行および順
序付けを制御します。Oracle Data Pumpのジョブ1つに対してMCPは1つ割り当てられ、ジョブの状態、
ジョブの詳細、再開、およびマスター表のダンプ・ファイル情報を管理します。ジョブは、メタデー
タおよびデータのアンロードまたはロードのさまざまな段階に分割され、MCPは現在の段階に適し
たワーク・プロセスに作業要求を受け渡します。このディスパッチ・ループでは、大量のMCPプロ
セスが実行されます。また、MCPは中央ファイル管理作業も実行します。この作業では、アクティ
ブなダンプ・ファイルのリストを維持し、データまたはメタデータをアンロードするプロセスから
要求があると、ファイルの一部を受け渡します。MCPには、次の形式のプロセス名がついています。
<instance>_DMnn_<pid>
ワーカー・プロセス - START_JOB要求を受け取ると、MCPはPARALLELパラメータ値に基づき、必
要に応じてワーカー・プロセスを作成します。ワーカー・プロセスはMCPが要求したタスク(おも
にメタデータおよびデータのアンロードやロード)を実行し、オブジェクト行で構成される大規模
なマスター表を維持します。データベース・オブジェクトがアンロードまたはロードされると、こ
れらの行はオブジェクトの最新の状態(保留、完了、失敗など)が書き込まれて更新されます。ま
た、ワーカー・プロセスは、現在作業中のオブジェクト(表、索引、ビューなど)のタイプを示す
型完了行を維持します。これらの型完了行は、再開する際に使用します。ワーカー・プロセスの名
前は、”*DWnn*”という形式です。
パラレル問合せ(PQ)プロセス - 表またはパーティションのロードまたはアンロードを実施すると
きのデータ・アクセス方法として外部表を選択すると、ロードまたはアンロードが割り当てられた
ワーカー・プロセスは、パラレル問合せプロセスを作成し、問合せコーディネータとして動作しま
す。これは、Oracle Databaseのパラレル実行アーキテクチャを利用する標準パラレル実行スレーブで、
パーティション内でのロードおよびアンロードを可能にします。Oracle Real Application Clusters(Oracle
RAC)において、パラレル問合せプロセスはOracle Data Pumpのジョブが開始されたインスタンス以
1
Oracle Data Pumpの公開APIは、PL/SQLパッケージのDBMS_DATAPUMPに統合されています。このホワイト・ペーパーでは取り
上げません。詳細については、
『Oracle Database Utilities and PL/SQL Packages and Types Reference』を参照してください。
4
Oracleホワイト・ペーパー - Oracle® Database 11g Data Pump:超高速データ移動ユーティリティの基盤
外のインスタンスで作成できます。このように記述されたその他のプロセスは、すべて最初のイン
スタンス上に作成されます。
データの移動
Oracle Data Pumpは4つのデータ移動方法をサポートし、それぞれ異なるパフォーマンスと機能性を
持っています。速い順に4つの方法を列挙すると、次のようになります。
•
データ・ファイルのコピー(トランスポータブル表領域)
•
ダイレクト・パスによるロードおよびアンロード
•
外部表
•
従来型パス
Oracle Data Pumpは、特定の操作に対してもっとも最適なデータ移動方法を選択します。また、ユー
ザーはコマンドライン・パラメータを使用してアクセス方法を指定することもできます。
もっとも速くデータを移動する方法は、データの解釈や変更を行わずにデータベースのデータ・ファ
イルをコピーすることです。この方法は、エクスポート時に指定されたトランスポータブル・モー
ドでデータを移動する際に使用されます。データ・ファイルのコピーを利用する場合、いくつかの
制限があります。いくつかのデータ・タイプ、表タイプ、および表の構成は、この方法で移動させ
ることができません。たとえば、暗号化された列を持つ表は、このアクセス方法を使用して移動で
きません。さらに、データ・ファイルのコピーを利用するには、ソース・データベースおよびター
ゲット・データベース双方のキャラクタ・セットを同一にしなければなりません。
ダイレクト・パスおよび外部表は、Oracle Database 11gが提供する2つの主要なデータ・アクセス方法
です。ダイレクト・パス・アクセス方法はこの2つの中では速いものの、パーティション内の並列度
をサポートしません。外部表アクセス方法は同機能をサポートするため、大規模な表またはパーティ
ションをロードまたはアンロードする際に選択できます。また、各アクセス方法は他方の使用に対
して制限があります。たとえば、アクティブな参照制約またはグローバル索引でロードされた表は、
ダイレクト・パス・アクセス方法を使用してロードできません。データ型がLONGの列を含む表は、
外部表のアクセス方法ではロードできません。ほとんどの場合、ユーザーはどのアクセス方法を使
用するかを考える必要がありません。Oracle Data Pumpのジョブが、あらゆるジョブの特性に基づい
て正しい選択をしてくれます。いずれの方法でも、元のexpデータ表現よりも約15%小さい、コンパ
クトなバイナリ・ストリーム形式でダンプ・ファイル・セットへ書き込みます。
ダイレクト・パスおよび外部表のいずれの方法でもデータをインポートできない場合、Oracle Data
Pumpは従来型パスという方法を使用します。たとえば、暗号化された列とLONG列を含む表は従来
型パスでインポートします。これは、ダイレクト・パスでは暗号化された列をインポートできず、
外部表はLONG列をインポートできないためです。従来型パス・アクセス方法でのデータのロードは、
ダイレクト・パスや外部表の方法に比べて時間がかかります。そのため、Oracle Data Pumpは他に選
択肢がない場合にのみ、この方法を採用します。
5
Oracleホワイト・ペーパー - Oracle® Database 11g Data Pump:超高速データ移動ユーティリティの基盤
メタデータの移動
メタデータのアンロードおよびロードの際は必ず、ワーカー・プロセスによってメタデータAPI
(DBMS_METADATA)が使用されます。オブジェクト定義をSQL DDLとして格納していたこれまでの
exp機能とは異なり、メタデータAPIはデータベースからオブジェクト定義を抽出し、ダンプ・ファ
イル・セットにXMLドキュメントとして書き込みます。これにより、インポート時にDDLを作成す
る際、XML Stylesheet Language Transformations(XSLT)を柔軟に適用できるようになりました。た
とえば、インポート時にオブジェクトの所有権、ストレージの特性、表領域の場所などを簡単に変
更できます。この堅牢なXMLは、従来のSQL DDLよりもダンプ・ファイルの領域を多く占有する可
能性がありますが、その代わりに柔軟性と機能性が向上します。さらに、COMPRESSIONパラメータ
を使用して、Oracle Data Pumpのエクスポート・ジョブを実行する際に書き込まれるメタデータの容
量を削減できます。
プロセス間通信
Advanced Queuing(AQ)は、さまざまなOracle Data Pumpの通信で使用されています。Oracle Data Pump
の各ジョブは、2つのキューで構成されています。
•
コマンドおよび制御キュー:クライアント以外のすべてのプロセスは、このキューにサブスクラ
イブします。ワーク要求と応答、ファイル要求、ログ・メッセージなど、すべてのAPIコマンド
はこのキューで処理されます。
•
ステータス・キュー:このキューは、シャドウ・プロセスのみがサブスクライブして読み込みま
す。このキューは、MCPによってキューに入れられた進行中の作業やエラー・メッセージを受け
取るのに使用します。このキューに書き込むのは、MCPのみです。
このキューには、次の形式で名前が付けられます。KUPC${C|S}_<job-unique timestamp>
ファイル管理
ファイル・マネージャは、いくつかのOracle Data Pumpのジョブに対して配信されます。前述のとお
り、新規ファイルの作成やファイル・セグメントの割当てなどの実際の作業は、MCP内で集中的に
実施されます。しかし、各ワーカー・プロセスおよびパラレル問合せプロセスは、領域の割当て、
ファイル・チャンクの読込み、または進行中の統計情報の更新を行うために、ローカルのプロセス
要求をファイル・マネージャに対して実行します。ローカルのファイル・マネージャは、ローカル
で要求を処理できるかどうかを判断し、処理できない場合はコマンドと制御キューを使用して、MCP
に転送します。マスター表では、ファイル・チャンクの読込みやファイルの統計情報の更新がロー
カルで実行されます。バッファへの書込みは一般的にローカルで処理されますが、その結果、より
多くのファイル領域をMCPに要求することがあります。
ディレクトリ管理
Oracleバックグラウンド・サーバー・プロセスがすべてのダンプ・ファイル・セットのI/Oを処理す
るため、I/Oを実行しているオペレーティング・システム・ユーザーはジョブを実行しているユーザー
ではなく、oracleとなります。しかし、一般的にoracleが特権アカウントであるため、セキュリティ
におけるジレンマとなります。したがって、すべてのディレクトリ仕様はDBAが設定した読取り/書
込み権限を持つOracleディレクトリ・オブジェクトを使用して作成します。
6
Oracleホワイト・ペーパー - Oracle® Database 11g Data Pump:超高速データ移動ユーティリティの基盤
たとえば、DBAは次のようにディレクトリを設定できます。
Create directory dmpdir1 as e/private1/data/dumpsf;
Grant read, write on directory dmpdir1 to scott;
これによって、scottは次のように、expdpコマンドラインにダンプ・ファイルを指定できるよう
になります。
expdp scott/tiger dumpfile=dmpdir1:scott.dmp
管理性を高めるためにFILESIZEパラメータによってファイル・サイズが制限されている場合は、多
くのダンプ・ファイルが作成されることがあります。ファイル・マネージャは、ファイル・ヘッダー
に書き込まれた全体に固有の識別子およびその他の情報を使用して、ダンプ・ファイル・セットの
一貫性を自動管理します。インポート・ジョブまたはSQLファイル・ジョブは、ジョブのダンプ・ファ
イル・セットの全要素がDUMPFILEパラメータ指定に設定されるまで開始できません。
主要な機能
この項では、Oracle Data Pumpのおもな新機能をいくつか簡単に紹介します。
パフォーマンス
Oracle Data Pumpのエクスポート/インポート操作(expdpおよびimpdp)は、一般的にこれまでのexp
およびimpよりも高速で実行できます。Oracle Data Pumpのダイレクト・パスでデータのアンロード
を1スレッドで実行する場合、これまでのexpよりも約2倍の速度で処理されます。Oracle Data Pump
でデータのロードを1スレッドで行う場合、これまでのimpと比べて15から45倍の速度で処理されま
す。さらに、Oracle Data Pumpの操作ではパラレル・スレッドの実行を指定できます2。また、パラレ
ル・スレッドは実行中のジョブに対して動的に追加および削除できます。これにより、変化する実
行環境に合わせてジョブを調整できます。
エクスポート時に2つ以上のワーカー・プロセスがある場合、データおよびメタデータのアンロード
はパラレルで処理されます。また、Oracle Data Pumpは各索引をジョブでパラレル処理できるように
自動的にパラレル化します。永続的なパラレル化された索引自身は、ソース値に対して変更される
ことはありません。
もっとも重要な要素であるI/O帯域幅
指定されたいくつかのパラレル・スレッドを実行できるよう、十分なI/O帯域幅を確保することは重
要です。帯域幅が十分でないと、パラレル・スレッドが追加された場合にパフォーマンスが低下する
恐れがあります。ダンプ・ファイル・セットが、インスタンスのデータ・ファイルを保持するスピン
2
Oracle Database Enterprise Editionでのみ
7
Oracleホワイト・ペーパー - Oracle® Database 11g Data Pump:超高速データ移動ユーティリティの基盤
ドルではないスピンドルに配置されているかどうかを必ず確認してください。ワイルドカード・ファ
イルをサポートするので、I/Oを複数のスピンドルへ簡単にロードできます。たとえば、次のように
指定した場合、full101.dmp、full201.dmp、full301.dmp、full401.dmp、full102.dmp、full202.dmp、full302.dmp
という名前が付いたファイルが、4つのディレクトリ・オブジェクトによって指定された4つのディ
レクトリ全体に対し、ラウンド・ロビン方式で作成されます。
Dumpfile=dmpdir1:full1%u.dmp,dmpdir2:full2%u.dmp
Dumpfile=dmpdir3:full3%u.dmp,dmpdir4:full4%u.dmp
初期化パラメータ
Oracle Data Pumpにおいて、最大のパフォーマンスを得るためのチューニングは、基本的に必要あり
ません。初期化パラメータは、インストールされたもので十分です。ただし、次の点については注
意してください。
•
disk_asynch_io値がTRUEであることを確認してください。これは、非同期I/Oをすでにサポー
トしているファイル・システムのプラットフォームには影響を与えませんが、値がFALSEの場合、
非同期I/Oがサポートされていないプラットフォームに多大なる悪影響を及ぼします。
•
db_block_checksumのデフォルト値がFALSEであることを確認してください。ただし、統合問
題を検証するためTRUEに設定している場合は、データのロードおよびアンロードに対する影響
は最小限(5%以下)に抑えられます。
•
Oracle Data PumpのAQベース通信およびメタデータAPIのいずれも、いくつかのSGAを必要とし
ます。streams_pool_size値が十分であることを確認してください。
エクスポート時のメタデータAPIおよびインポート時のワーカー・プロセスの両方とも、ロールバッ
ク・セグメントを消耗する可能性のある比較的長い問合せを実行することがあります。この問題の
ほとんどは、多数のオブジェクトに影響を与えるジョブで発生します。必ず、これらセグメントを
十分な大きさに設定してください。たとえば、400,000オブジェクトを含むデータベースのエクスポー
ト/インポートは2つのロールバック・セグメントが必要で、それぞれの必要なサイズは750MBになり
ます。
メタデータAPI
Oracle Data Pumpのメタデータのパフォーマンスは、これまでのexpおよびimpクライアントとあま
り変わりませんが、Oracle Data PumpではXML形式を使用しているので、メタデータの操作はより柔
軟で拡張性が高くなります。メタデータの移動がジョブの重要な動作の場合は、パフォーマンスの
向上があまり見られない可能性があります。しかし、ほとんどの実運用環境ではデータ移動が頻繁
に行われることから、多くの操作は全体的に飛躍的な向上を遂げたように見えます。
ネットワーク・モード
Oracle Data Pumpは、インスタンスから別のインスタンスへ直接ロードする機能(ネットワーク・イ
ンポート)と、リモート・インスタンスをアンロードする機能(ネットワーク・エクスポート)を
サポートします。ネットワーク・モードは、すべてのプラットフォームではサポートされていない
ネットワーク・パイプを使用する代わりにDBリンクを使用します。
8
Oracleホワイト・ペーパー - Oracle® Database 11g Data Pump:超高速データ移動ユーティリティの基盤
ネットワーク・インポート時に、リモート・ノードでメタデータAPIが実行されてオブジェクト定義
を抽出し、それをOracle Data Pumpのジョブが実行されているローカル・インスタンスへ送信して作
成処理が行われます。データは、次のようなinsert as select文を使用して、フェッチおよびロー
ドされます。
Insert into foo (a,b,c,・ select (a,b,c,・ from foo@remote_service_name
これらの文は、ダイレクト・パス・エンジンにアクセスして最大のパフォーマンスを得るための両
方の機能に対するヒントが含まれます。
ネットワーク・エクスポートは、読込み専用データベースでのエクスポートを可能にしますOracle
Data Pumpのexpdpは、マスター表の維持、キューに対するメッセージの書込み、外部表の作成など、
すべてにおいてインスタンス上での書込み操作が必要となるため、読込み専用インスタンス上で
ローカルに実行することができません。ネットワーク・エクスポートは、Oracle Data Pumpのジョブ
が実行されているインスタンス上にダンプ・ファイル・セットを作成し、ネットワーク・インポー
トと同様に、リモート・インスタンスからメタデータおよびデータを抽出します。ネットワーク・
エクスポートのデータ移動は、create as select@service形式のDML文が必要であることから、
外部表で排他的に実行されます。
いずれのネットワーク・モードの操作においても、ネットワーク帯域幅はボトルネックになる可能
性があります。パラレル設定がネットワークを飽和させないように注意してください。オラクルの
多くの顧客は、これまでのexpおよびimpを使用して、ネットワーク・パイプにエクスポートした後
に相手方にインポートすることによって、’ネットワーク・モード'のようなものを実装していること
が分かりました。こうした作業はエクスポートとインポートの操作をオーバーラップして実行する
ため、経過時間を短縮します。ファイル・ベースのOracle Data Pumpの操作におけるパフォーマンス
は大幅に改善されたため、これまでのexpおよびimpで実現したように、ネットワーク・モードによっ
てインスタンスの初期化における経過時間が大幅に短縮できるかどうかははっきりしません。
再開
停止したOracle Data Pumpのジョブは、ジョブが停止した際にマスター表およびダンプ・ファイル・
セットに障害が発生していない限り、データを損失せずに再開できます。これは、クライアント上
でSTOP_JOBコマンドによって意図的にジョブを停止したか、あるいはシステム障害、電力不足、そ
の他の予定外のイベントによって意図せずに停止したかに関係なく実行できます。マスター表が十
分なコンテキストを維持することで、どこから再開すべきかが分かります。ATTACH=<job name>
パラメータで停止したジョブにクライアントを接続し、インタラクティブなSTARTコマンドで開始
します。
インポート中に、特定のオブジェクトによって進捗が妨げられるような予期せぬ問題が繰り返し発
生することがあります。START=SKIP_CURRENTコマンドを使用すれば、現在のオブジェクトをス
キップして次のオブジェクトに進み、処理を実行できます。
ファイングレイン・オブジェクト選択
これまでのexpおよびimpにおいてユーザーが含めるか排除するかを選択できたのは、索引、トリガー、
許可、または制限のみでした。Oracle Data Pumpのジョブは、利用可能なさまざまなクライアント・
9
Oracleホワイト・ペーパー - Oracle® Database 11g Data Pump:超高速データ移動ユーティリティの基盤
パラメータを使用して、ほぼすべてのオブジェクトのタイプやサブセットを、含めたり排除したり
できます。
Exclude
EXCLUDEパラメータは、あらゆるデータベース・オブジェクトのタイプをエクスポートまたはイン
ポート操作から排除できます。オプションの名前修飾子を使用すると、指定した各オブジェクト・
タイプをさらに細かく選択できます。たとえば、次のパラメータ・ファイル内の3行は、PAYROLLで
始まるパッケージはもちろんのこと、すべての機能およびプロシージャを排除します。
Exclude=function
Exclude=procedure
Exclude=package:hlike ePAYROLL%f g
Include
INCLUDEパラメータは、操作内で指定されたオブジェクト・タイプおよびオブジェクトのみを含み
ます。たとえば、前述の3つの仕様がデータベースの全エクスポートに対するINCLUDEパラメータで
ある場合、ダンプ・ファイル・セットには、PAYROLLで始まる機能、プロシージャ、およびパッケー
ジのみが書き込まれます。
Content
CONTENTパラメータは、操作にメタデータのみ、データのみ、または両方を要求できます。これま
でのexpのROWS=NパラメータはOracle Data Pumpのcontent=metadata_onlyに相当しますが、
content=data_onlyを指定する機能はexpにはありません。
問合せ
QUERYパラメータは、これまでのexp同様の操作に加えて、2つの機能が強化されています。
特定の表にのみ適用されるような表名で修飾できます。
エクスポートだけでなく、インポート中にも使用できます。
Sample
SAMPLEパラメータは、エクスポートされるデータのサブセットを指定する際に使用します。このパ
ラメータに指定されたサンプルの割合は、エクスポートのサンプルにブロック単位の列が含まれる
可能性があることを示します。この方法でサンプリングすることは参照整合性を保証するものであり
10
Oracleホワイト・ペーパー - Oracle® Database 11g Data Pump:超高速データ移動ユーティリティの基盤
ませんが、データベース内のデータのサブセットを使用して、システムをテストまたは開発する際
に有効です。
監視および予測
オラクルの顧客からはこの他に、高性能で、より詳細な監視を行うことができる機能を求める声が
寄せられました。クライアントがログ・ファイルに書き込む標準進捗メッセージおよびエラー・メッ
セージに加えて、新しいクライアントのインタラクティブなコマンドSTATUSは、全体の進捗率、各
ワーカー・プロセスの状態、現在作業中のオブジェクト、および各オブジェクトの進捗率を含む詳
細なジョブ情報を提供します。また、詳細状態の自動更新間隔を秒単位で指定できます。
Oracle Data Pumpの各エクスポート・ジョブを開始する際、アンロードするデータすべてのおおよそ
の容量を決定する予測段階が含まれます。デフォルトの決定方法は、現在割り当てられているブロッ
ク数をカウントして、パーティションの大きさを予測するというものです。表を分析すれば、より
正確な予測を実施するのに必要な統計情報も利用できるようになります。これを実施する目的は2つ
あります。
•
消費するダンプ・ファイルの領域を把握すること。
•
表のアンロードを開始するのに必要な情報をすべて取得し、サイズの大きい順に並べ替えるこ
と。これにより、MCPはメタデータおよびデータのアンロードをパラレルでスケジューリングで
きるようになります。
予測段階で取得したオブジェクトを、表データ・オブジェクトといいます。それぞれは、パーティ
ション(表がパーティション化されていない場合は表全体)を示します。
0-nクライアントは、実行中のジョブに適用できるので、作業中の長期ジョブを開始して、その場を
離れて帰宅し、再度接続してから夜間に監視するということが可能です。
Oracle Data Pumpのクライアント:expdpおよびimpdp
新しいexpdpおよびimpdpクライアントは、これまでのexpおよびimpクライアントと変わらない
ルック・アンド・フィールを持っていますが、パラメータの互換性を100%保つことが目的ではあり
ません。エクスポートおよびインポート操作の両方に対して通じる概念を持つことで、パラメータ
も両方に対して通じるようサポートしました。新しいクライアントでは、さらに優れた機能をサポー
トします。
•
インタラクティブ・コマンド・モード:[Ctrl]キーを押しながら[C]を押すと(^C)、インタラク
ティブ・コマンド・モードが呼び出され、export>またはimport>のプロンプトが表示されま
す。このプロンプトでは、ヘルプの表示、ジョブ状態の詳細の取得、パラメータ監視の変更、ジョ
ブのダンプ・ファイル・セットに対する(ワイルドカード仕様を含む)ファイルの動的追加、再
開可能な状態でのジョブの停止、再開不可能な状態でのジョブの停止、ジョブの並列度レベルの
変更、ログ・モードに戻り進捗メッセージを継続して取得、ジョブを実行したままクライアント
を終了するといったことが可能です。
11
Oracleホワイト・ペーパー - Oracle® Database 11g Data Pump:超高速データ移動ユーティリティの基盤
•
操作の全モードをサポート:コマンドライン・クライアントは、MODEが完全、スキーマ、表、
表領域、またはTransportable Tablespaceの際に使用できます。Oracle Data Pumpと新しいexpdpお
よびimpdpクライアントは、これまでのexpおよびimp機能の完全な上位セットです。
•
特定の時期以降、エクスポートおよびインポートでは、フラッシュバック・テクノロジーがサポー
トされています。
•
WHERE句の条件を、expdpおよびimpdpの両方を使用して個別の表に適用できます。
•
特権ユーザー(EXP_FULL_DATABASEまたはIMP_FULL_DATABASEのいずれかのロールを持つ
ユーザー)は、ジョブが停止された場合でも、他のユーザーによって開始されたジョブに対して
接続および制御を行うことができます。
その他の便利な機能
Oracle Data Pumpは、これまでのエクスポートおよびインポート・ユーティリティを超える機能や柔
軟性を持った、便利な新機能をいくつか搭載します。
- Oracle Data Pumpの一般的な使用方法として、本番システムからのデータに基づいて
テスト・システムまたは開発システムにデータを投入する方法があります。この方法では、個人を
識別できるデータを隠すことで、これらのデータにアクセス権限のない人物に対して非表示にする
ことができます。これは非常に有効であると同時に、法的にも必要となる場合があります。
REMAP_DATA
REMAP_DATAパラメータを使用すると、指定した列にある元の値をソースとし、再マッピングされ
た値を返す再マッピング・ファンクションを指定して、ダンプ・ファイル内の元の値を置き換える
ことができます。たとえば、クレジットカードなどの機密性の高い顧客データの列を、REMAP_DATA
機能で生成した数字に置き換えることができます。これにより、権限のないユーザーに対して個人
データを公開することなく、必要な形式や処理特性を保ちながらデータを維持できます。
DDL変換 - オブジェクト・メタデータはダンプ・ファイル・セットにXMLとして格納されているた
め、インポート中にDDLを(XSLTを使用して)形成する際、簡単に変換できます。Impdpは、次の
ような変換機能をサポートします。
•
PARTITION_OPTIONSは、インポート操作の際、どのように表のパーティションを扱うかを指定
します。表にある複数のパーティションをエクスポートできます。インポートでは、ユーザーは
これらのパーティションを元のデータベースと同じ形でロードするか、1つの表に統合するか、
または各パーティションを個別の表にするかを選択できます。
•
REMAP_TABLEにより、ユーザーはトランスポータブル・パーティション・インポート操作の一
環として表そのものに適用されるパーティションに、表の名前を指定できます。
これは、PARTITION_OPTIONS=departitionと組み合わせて使用する必要があります。
•
REMAP_TABLESPACEは、オブジェクト・セグメントが配置された表領域を変更します。また、
表領域の定義内にある表領域の名前も変更します。
12
Oracleホワイト・ペーパー - Oracle® Database 11g Data Pump:超高速データ移動ユーティリティの基盤
•
REMAP_SCHEMAは、以前のFROMUSER/TOUSERオブジェクトをスキーマ間で移動します。これに
より、オブジェクトの所有権を変更できます。
•
REMAP_DATAFILEは、異なるファイル・システム・セマンティクスを持つプラットフォーム間
でデータベースを移動する際に便利なパラメータです。また、TRANSFORMパラメータを通じて、
DDL内にストレージ句を作成しないよう指定することもできます。これは、ターゲット・インス
タンスのストレージ特性がソースのものと大きく異なる場合に有効です。
- impdpでは、SQLファイルも操作できます。これはデータベース・オブジェクトを作成す
るのではなく、同等のDDLをすぐに実行できるSQLスクリプト形式でファイルに書き込むだけです。
組み込まれた接続文のみがコメント・アウトされます。
SQL File
- これまでのimpでは、IGNORE=Yが指定された場合は既存の表に行を追加で
きました。Oracle Data PumpのimpdpのTABLE_EXISTS_ACTIONパラメータは、次の4つのオプショ
ンを提供します。
TABLE_EXISTS_ACTION
1. SKIPは、デフォルトのオプションです。すでに表が存在する場合はスキップします。
2. APPENDは、ターゲットの表の形状に互換性がある場合、行を追加します。これは、
ユーザーがCONTENT=DATA_ONLYを指定した場合にデフォルトとなります。
3. TRUNCATEは、形状に互換性があって切り捨てが可能である場合、表を切り捨てた
後でソースから行をロードします。たとえば、表が参照制約のターゲットである場
合、切り捨てることはできません。
4. REPLACEは既存の表を削除してから、ソースに基づいて表を作成およびロードします。
CONTENT - このパラメータは両クライアントで使用でき、DATA_ONLY、METADATA_ONLY、または
(デフォルトの)BOTHを実行できます。
VERSION - expdpは、指定されたバージョンと互換性のあるダンプ・ファイル・セットを生成するよ
う、サーバー・ベースのOracle Data Pumpに指示するVERSIONパラメータをサポートします。これは、
将来的にダウングレードを実行する際に使用します。これまでのexpと同様に、旧バージョンのOracle
Data Pumpのクライアントを実行する必要はありません。
- Oracle Enterprise ManagerはOracle Data Pumpに対する、機能性に優れたイン
タフェースをサポートします。
Oracle Enterprise Manager
- Oracle Data Pumpは、ユーザーおよびDBAがアクセスしてジョブの進捗状況を監視
できるビューをいくつか用意しています。
Data Pump Views
•
DBA_DATAPUMP_JOBS - これは、システム上でアクティブになっているすべてのOracle Data Pump
ジョブの概要を表示します。
•
USER_DATAPUMP_JOBS - これは、現在のユーザーでアクティブになっているOracle Data Pump
のジョブの概要を表示します。
13
Oracleホワイト・ペーパー - Oracle® Database 11g Data Pump:超高速データ移動ユーティリティの基盤
•
DBA_DATAPUMP_SESSIONS - これは、現在Oracle Data Pumpのジョブに接続されているすべての
セッションを表示します。
•
V$SESSION_LONGOPS - ビューにある行は、アクティブになっているOracle Data Pumpの各ジョ
ブにおける進捗状況を示します。OPNAME列は、Oracle Data Pumpのジョブ名を表示します。
これまでのexpおよびimp
これまでのexpの一般的な使用は、Oracle Database 11gではサポートされていません。これまでのimp
は、既存のダンプ・ファイルをインポートするため、現在もOracle Database 11gに同梱されています。
•
これまでのimpは永久にサポートされ、元のexpで作成された以前のリリース(リリース5.0以降)
のダンプ・ファイルをインポートできます。これまでのダンプ・ファイルとOracle Data Pumpの
ダンプ・ファイルに互換性はありません。いずれのクライアントも、一方で作成されたダンプ・
ファイルを読み込むことはできません。
•
これまでのexpはOracle Database 10g Release 2のサポート対象から外されており、Oracle Database
11gでも一般的な使用をサポートしません。Oracle Data Pumpのexpdpは、進化するエクスポート
を支える唯一の機能となります。Oracle Database 10g以降のリリースにある新機能は、これまでの
expではサポートされません。旧バージョンのexpは、Oracle Database 11gでダウングレードを実
施する場合に限り使用できます。Oracle Database 10g以降では、expdpのVERSIONパラメータを
使用してダウングレードを実施する必要があります。
Oracle Data Pumpと元のexp/impの相違点
この項では、Oracle Data Pumpベースのエクスポートおよびインポートを初めて実行する際に気付く、
おもな相違点について取り上げます。
Oracle Data Pumpは、大量のデータを扱う大きなジョブ向けに設計されています。大量のデータを扱
う際は、次のようなことが予測されます。
•
起動時間が長くかかります。すべてのプロセスおよび通信インフラストラクチャは、ジョブを実
行する前に開始させる必要があります。これには、10秒ほどかかります。また、エクスポートの
開始時間には、表にあるすべてのデータ・オブジェクトを取得して順序付ける時間が含まれてお
り、MCPは表のアンロードのスケジューリングを素早く開始できます。
•
Oracle Data Pumpのexpdpは、ジョブの終了時にマスター表をダンプ・ファイルに書き込む必要
があります。Oracle Data Pumpのimpdpは、マスター表の場所を探してロードしてから、対応す
る索引を構築しなければなりません。これは10秒程度かかりますが、マスター表が非常に大きい
場合は、インポート開始時の索引構築に時間がかかる可能性があります。ダイレクト・パス・ア
クセス方法は、マスター表のアンロードおよびロードで使用します。
•
ダンプ・ファイル・セットのサブセットをインポートすることで、マスター表から関係のない行
を削除できます。サブセットがエクスポート・セットに比べて非常に小さい場合、必要な更新を
実施する時間は長くなります。
14
Oracleホワイト・ペーパー - Oracle® Database 11g Data Pump:超高速データ移動ユーティリティの基盤
•
メタデータを抽出して作成するパフォーマンスは、これまでのexpおよびimpと同じ程度です。
DDLの高速化は、非常に難しい課題です。Oracle Data Pumpでもっとも大きく改善された点は、
データのアンロードおよびロードのパフォーマンスです。
•
ダンプ・ファイル内の圧縮されていないXMLメタデータは、これまでのexp DDLに比べて7倍の
サイズになります。Oracle Data Pumpのデータ・ストリーム形式は、これまでのexpの行/列形式
と比較して約15%小さくなります。COMPRESSIONパラメータはOracle Data Pumpのメタデータの
サイズを縮小するのに役立ちます。Oracle Database 10g Release 2以降はメタデータの圧縮がデ
フォルトで実施されます。
•
Oracle Data Pumpは、ニーズに沿ってリソース使用量を調整することができます。設計には、ジョ
ブごとの経過時間を削減することが一番に組み込まれています。そのため、Oracle Data Pumpは、
任意のPARALLEL設定の上限一杯のCPU、メモリ、I/O帯域幅、および(ネットワーク・モードに
おける)ネットワーク帯域幅を消費します。
Oracle Data Pumpを実行するユーザーは、マスター表を作成するのに十分な表領域を割り当てる必要
があります。
多数のオブジェクトを含むジョブは、ロールバック構成であることを認識してください。
クライアントで表示される進捗メッセージは、これまでのexpおよびimpで表示されたものと異なり
ますが、現在のオブジェクト・タイプを反映します。また、'既知の'エラーにはフラグが立ち、ジョ
ブの最後に発行される総エラー数に含まれます。
デフォルトで生成されるログ・ファイル名はexport.logまたはimport.logですが、LOGFILEパラ
メータが優先されます。これまでのexpおよびimpは、デフォルトでログ・ファイルを生成しません。
結論
Oracle Data PumpはOracle Database 11gでコールできる機能であり、データやメタデータを非常に高速
でロードおよびアンロードできます。Oracle Data Pumpのインフラストラクチャを完全に利用するコ
マンドラインのエクスポートおよびインポート・クライアント(expdpおよびimpdp)も、Oracle
Databaseで利用可能です。これらは、これまでのexpおよびimpの完全な上位セットとして実装され
ており、いずれは既存のクライアントと置き換えられていきます。
15
Oracle Database 11g Data Pump:
超高速データ移動ユーティリティ
の基盤
2009年2月
著者:Roy F. Swonger
共著者:George Claborn、William Fisher、
Carol Palmer、Jim Stenoish
Copyright © 2009, Oracle and/or its affiliates.All rights reserved.
Oracle Corporation
World Headquarters
500 Oracle Parkway
Redwood Shores, CA 94065
U.S.A.
本文書は情報提供のみを目的として提供されており、ここに記載される内容は予告なく変更されることがあります。本文書は、
その内容に誤りがないことを保証するものではなく、また、口頭による明示的保証や法律による黙示的保証を含め、商品性ない
し特定目的適合性に関する黙示的保証および条件などのいかなる保証および条件も提供するものではありません。オラクル社は
本文書に関するいかなる法的責任も明確に否認し、本文書によって直接的または間接的に確立される契約義務はないものとしま
す。本文書はオラクル社の書面による許可を前もって得ることなく、いかなる目的のためにも、電子または印刷を含むいかなる
形式や手段によっても再作成または送信することはできません。
Oracleは米国Oracle Corporationおよびその子会社、関連会社の登録商標です。その他の名称はそれぞれの会社の商標です。
0109