• 検索結果がありません。

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

N/A
N/A
Protected

Academic year: 2021

シェア "Oracle Database 11g Data Pump:超高速データ移動ユーティリティの基盤"

Copied!
16
0
0

読み込み中.... (全文を見る)

全文

(1)

Oracle

®

Database 11g Data Pump:

超高速データ移動ユーティリティ

の基盤

Oracle ホワイト・ペーパー

2007 年 6 月

(2)

ご注意 本書は情報提供のみを目的としています。下記の事項は、マテリアルやコード、機能 の提供を確約するものではなく、また、購買を決定する際の判断材料とはなりえませ ん。本書に記載されている機能の開発、リリースおよび時期については、弊社の裁量 により決定いたします。 本書には、書式、ソフトウェアまたは印刷物のいかんによらず、オラクルが独占的に 所有する独自の情報が含まれています。本書とここに含まれる情報は、オラクルの事 前の同意を得ることなく、オラクル以外の者に開示、複写、複製または配布すること が禁じられています。本書は、ライセンス契約の一部をなすものではなく、オラクル、 その子会社または関連会社とのいかなる契約上の合意事項にも組み込まれるものでは ありません。

(3)

Oracle

®

Database 11g Data Pump

はじめに

このホワイト・ペーパーでは、Oracle Data Pump アーキテクチャの概要を紹介します。 また、Oracle Data Pump の主要機能やベスト・プラクティスに対する議論を取り上 げ、Oracle Data Pump の Export および Import ユーティリティとこれまでの Export および Import ユーティリティの簡単な比較を行います。

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)の全機能はもちろん、ダンプ・ファイル の暗号化と圧縮、チェックポイントの再開、ジョブ・サイズの予測、非常に柔軟 なファイングレイン・オブジェクト選択、あるインスタンスを別のインスタンス

(4)

から直接ロード、詳細なジョブ監視、Transportable Tablespace による個別の表パー ティションの移動など、多くの機能をサポートすることになりました。

Oracle Data Pump は Oracle Database に統合された機能であるため、すべての構成で 利用できます。ただし、パラレル処理などの Oracle Data Pump のいくつかの機能は、 Enterprise Edition でのみ利用可能です。ダンプ・ファイルの暗号化機能は、Oracle Advanced Security オプションの一部として利用できます。ダンプ・ファイルのデー タ圧縮機能は、Oracle Advanced Compression オプションに含まれています。

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 のジョブは、複数のプロセスで構成されています。これらプロセ スを作成順に説明します。

クライアント・プロセス - Oracle Data Pump APIにコールを行うプロセスです。前 述のとおり、Oracle DatabaseはこのAPIのクライアント・ユーティリティを 4 つ実 装しています。このホワイト・ペーパーでは、新しく実装するエクスポート/イン ポート・クライアントのexpdpおよびimpdpについて紹介します。両クライアン トは、これまでのexpおよびimpと同じルック・アンド・フィールを持ちますが、 後半で解説するとおり、より多くの機能が搭載されています。Oracle Data Pumpは Oracle Databaseに統合されているため、一度ジョブが実行されると、クライアント は何も要求されません。監視や制御を行う場合は、必要に応じて複数のクライア ントをジョブへ接続および非接続させます。

シャドウ・プロセス - これは、クライアントがOracle Databaseにログインする 際に作成される標準Oracleシャドウ・プロセス(またはフォアグラウンド・プロ

(5)

セス)です。このシャドウ・プロセスは、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のジョブが 開始されたインスタンス以外のインスタンスで作成できます。このように記述さ れたその他のプロセスは、すべて最初のインスタンス上に作成されます。

データの移動

Oracle Data Pump は 4 つのデータ移動方法をサポートし、それぞれ異なるパフォー マンスと機能性を持っています。速い順に 4 つの方法を列挙すると、次のように なります。

• データ・ファイルのコピー(トランスポータブル表領域) • ダイレクト・パスによるロードおよびアンロード

1 Oracle Data Pumpの公開APIは、PL/SQLパッケージのDBMS_DATAPUMPに統合されています。このホワイ

ト・ペーパーでは取り上げません。詳細については、『Oracle Database Utilities』 および『Oracle Database PL/SQL Packages and Types Reference』を参照してください。

(6)

• 外部表 • 従来型パス

Oracle Data Pump は、特定の操作に対してもっとも最適なデータ移動方法を選択し ます。また、ユーザーはコマンドライン・パラメータを使用してアクセス方法を 指定することもできます。

Oracle Data Pump は、指定しないかぎり、 データを処理するもっとも最適なアクセ ス方法を選択します。 もっとも速くデータを移動する方法は、データの解釈や変更を行わずにデータベー スのデータ・ファイルをコピーすることです。この方法は、エクスポート時に指 定されたトランスポータブル・モードでデータを移動する際に使用されます。デー タ・ファイルのコピーを利用する場合、いくつかの制限があります。いくつかの データ・タイプ、表タイプ、および表の構成は、この方法で移動させることがで きません。たとえば、暗号化された列を持つ表は、このアクセス方法を使用して 移動できません。さらに、データ・ファイルのコピーを利用するには、ソース・ データベースおよびターゲット・データベース双方のキャラクタ・セットを同一 にしなければなりません。 ダイレクト・パスおよび外部表は、Oracle Database 11gが提供する 2 つの主要なデー タ・アクセス方法です。ダイレクト・パス・アクセス方法は 2 つの中では速いも のの、パーティション内のパラレル処理をサポートしません。外部表アクセス方 法は同機能をサポートするため、大規模な表またはパーティションをロードまた はアンロードする際に選択できます。また、各アクセス方法は他方を使用する場 合にある制限が与えられます。たとえば、アクティブな参照制約またはグローバ ル索引でロードされた表は、ダイレクト・パス・アクセス方法を使用してロード できません。データ型のLONGを含む列は、外部表アクセス方法でロードできませ ん。ほとんどの場合、ユーザーはどのアクセス方法を使用するかを考える必要が ありません。Oracle Data Pumpのジョブが、あらゆるジョブの特性に基づいて正し い選択をしてくれます。いずれの方法も、元のexpデータ表現よりも約 15%小さ い、コンパクトなバイナリ・ストリーム形式でダンプ・ファイル・セットへ書き 込みます。

ダイレクト・パスおよび外部表のいずれの方法でもデータをインポートできない 場合、Oracle Data Pump は従来型パスという方法を使用します。たとえば、暗号化 された列と LONG 列を含む表は従来型パスでインポートします。これは、ダイレ クト・パスでは暗号化された列をインポートできず、外部表は LONG 列をインポー トできないためです。従来型パス・アクセス方法でのデータのロードは、ダイレ クト・パスや外部表の方法に比べて時間がかかります。そのため、Oracle Data Pump は他に選択肢がない場合にのみ、この方法を採用します。

メタデータの移動

メタデータAPI(DBMS_METADATA)は、メタデータのアンロードおよびロードす べてを実行するワーカー・プロセスで使用されます。SQL DDLにオブジェクト定 義を格納していたこれまでのexp機能とは異なり、メタデータAPIはデータベース からオブジェクト定義を抽出し、ダンプ・ファイル・セットにXMLドキュメント として書き込みます。これにより、インポート時にDDLを作成する際、XML Stylesheet Language Transformations(XSLT)を柔軟に適用できるようになりました。 たとえば、インポート時にオブジェクトの所有権、ストレージの特性、表領域の 在り方などを簡単に変更できます。この強力なXMLは、従来のSQL DDLよりもダ ンプ・ファイルの領域を多く占有する可能性がありますが、その代わりに柔軟性 と機能性が向上します。さらに、COMPRESSIONパラメータを使用して、Oracle Data Pumpのエクスポート・ジョブを実行している際に、メタデータの容量を削減でき ます。

(7)

プロセス間通信

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ディレクト リ・オブジェクトで作成します。 たとえば、DBA は次のようにディレクトリを設定できます。

Create directory dmpdir1 as '/private1/data/dumps'; Grant read, write on directory dmpdir1 to scott;

これにより、scottはexpdpコマンドラインに次のようなダンプ・ファイルを指 定できます。

expdp scott/tiger dumpfile=dmpdir1:scott.dmp

管理性を高めるため、FILESIZEパラメータによってファイル・サイズが制限さ れている場合は、多くのダンプ・ファイルを作成できます。ファイル・マネージャ は、ファイル・ヘッダーに書き込まれた全体に固有の識別子およびその他の情報 を使用して、ダンプ・ファイル・セットの一貫性を自動管理します。インポート またはSQLファイル・ジョブは、ジョブのダンプ・ファイル・セットにおける全 要素がDUMPFILEパラメータ仕様に設定されるまで開始できません。

主な機能

(8)

パフォーマンス

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 帯域幅 を確保することは重要です。帯域幅が十分でないと、パラレル・スレッドが追加 された場合にパフォーマンスが低下する恐れがあります。ダンプ・ファイル・セッ トは、インスタンスのデータ・ファイルを保持するスピンドルではないスピンド ルに配置されているかどうかを必ず確認してください。ワイルドカード・ファイ ルをサポートするので、I/O を複数のスピンドルへ簡単にロードできます。たとえ ば、次のような仕様では、full101.dmp、full201.dmp、full301.dmp、full401.dmp、 full102.dmp、full202.dmp、full302.dmp などの名前が付いたファイルを、4 つのディ レクトリ・オブジェクトによって指定された 4 つのディレクトリ全体に対し、ラ ウンド・ロビン方式で作成します。

Oracle Data Pump は、提供できるシステ ム ・ リ ソ ー ス す べ て を 活 用 し て 高 パ フォーマンスを提供します。

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の場合、サポートされていないプ ラットフォームに多大なる悪影響を及ぼします。 • db_block_checksumのデフォルト値がFALSEであることを確認してく ださい。ただし、統合問題を検証するためTRUEに設定している場合は、 データのロードおよびアンロードに対する影響は最小限(5%以下)に抑 えられます。

• Oracle Data PumpのAQベース通信およびメタデータAPIのいずれも、いく つかのSGAを必要とします。streams_pool_size値が十分であること を確認してください。 エクスポート時のメタデータ API およびインポート時のワーカー・プロセスの両 方とも、UNDO セグメントを消耗する可能性のある比較的長い問合せを実行する ことがあります。この問題のほとんどは、多数のオブジェクトに影響を与えるジョ ブで発生します。必ず、UNDO 表領域を十分な大きさに設定してください。たと えば、400,000 オブジェクトを含むデータベースのエクスポート/インポートは 2 つの UNDO セグメントが必要で、それぞれの必要なサイズは 750MB になります。

(9)

メタデータ API

Oracle Data Pumpのメタデータのパフォーマンスは、これまでのexpおよびimpク ライアントとあまり変わりませんが、Oracle Data PumpではXML形式を使用してい るので、メタデータの操作はより柔軟で拡張性が高くなります。ジョブの重要な 動作としてメタデータの移動が行われる場合は、パフォーマンスの向上があまり 見られない可能性があります。しかし、ほとんどの実運用環境ではデータ移動が 頻繁に行われることから、多くの操作は全体的に飛躍的な向上を遂げたように見 えます。 ネットワーク・モード

Oracle Data Pump は、インスタンスから別のインスタンスへ直接ロードする機能 (ネットワーク・インポート)と、リモート・インスタンスをアンロードする機能 (ネットワーク・エクスポート)をサポートします。ネットワーク・モードは、す べてのプラットフォームでサポートされていないネットワーク・パイプを使用す る代わりに DB リンクを使用します。

ネットワーク・インポート時に、リモート・ノードで実行されるメタデータ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コマンドで開始します。

(10)

インポート中に、特定のオブジェクトによって進捗が妨げられるような予期せぬ 問題が繰り返し発生することがあります。START=SKIP_CURRENTコマンドを使 用すれば、現在のオブジェクトをスキップして次のオブジェクトに進み、処理を 実行できます。 移動可能なジョブや SQL_FILE 出力を生 成するジョブは再開できません。

ファイングレイン・オブジェクト選択

これまでのexpおよびimpにおいてユーザーが含めたり排除したりするために選 択できたのは、索引、トリガー、許可、または制限のみでした。Oracle Data Pump のジョブは、利用可能なさまざまなクライアント・パラメータを使用して、ほぼ すべてのオブジェクトのタイプやサブセットを、含めたり排除したりできます。 Exclude EXCLUDEパラメータは、あらゆるデータベース・オブジェクトのタイプをエクス ポートまたはインポート操作から排除できます。オプションの名前修飾子を使用 すると、指定した各オブジェクト・タイプをさらに細かく選択できます。たとえ ば、次のパラメータ・ファイル内の 3 行は、PAYROLLで始まるパッケージはもち ろんのこと、すべての機能およびプロシージャを排除します。 Exclude=function Exclude=procedure Exclude=package:"like 'PAYROLL%' " Include INCLUDEパラメータは、操作内で指定されたオブジェクト・タイプおよびオブジェクト のみを含みます。たとえば、前述の 3 つの仕様がデータベースの全エクスポートに 対するINCLUDEパラメータである場合、ダンプ・ファイル・セットには、PAYROLLで 始まる機能、プロシージャ、およびパッケージのみが書き込まれます。 Content CONTENTパラメータは、操作にメタデータのみ、データのみ、または両方を要求 できます。これまでのexpのROWS=NパラメータはOracle Data Pumpのcontent= metadata_onlyを指定するパラメータに相当しますが、content=data_only を指定する機能はexpにありません。 Query QUERYパラメータは、これまでのexp同様の操作に加えて、2 つの機能が強化され ています。 • 表の名前を承認することで、特定の表に適用できます。 • エクスポートだけでなく、インポート中にも使用できます。 Sample SAMPLEパラメータは、エクスポートされるデータのサブセットを指定する際に使 用します。このパラメータに指定されたサンプルの割合は、エクスポートのサン プルにブロック単位の列が含まれる可能性があることを示します。

(11)

この方法でサンプリングすることは参照的な統合性を保証するものでありません が、データベース内のデータのサブセットを使用して、システムをテストまたは 開発する際に有効です。

監視および予測

DBA は業務中に Oracle Data Pump の

ジョブを開始し、ジョブを監視状態に接 続することで、別の場所からパラメータ の変更や中断したジョブを再開できます。 オラクルの顧客からはこの他に、高性能で、より詳細な監視を行うことができる 機能を求める声が寄せられました。クライアントがログ・ファイルに書き込む標 準進捗メッセージおよびエラー・メッセージに加えて、新しいクライアントの対 話型コマンドSTATUSは、全体の進捗率、各ワーカー・プロセスの状態、現在作業 中のオブジェクト、および各オブジェクトの進捗率を含む詳細なジョブ情報を提 供します。また、詳細状態の自動更新間隔を秒単位で指定できます。

Oracle Data Pump の各エクスポート・ジョブを開始する際、アンロードするデータ すべてのおおよその容量を決定する予測段階が含まれます。デフォルトの決定方 法は、現在割り当てられているブロック数をカウントして、パーティションの大 きさを予測するというものです。表を分析すれば、より正確な予測を実施するの に必要な統計情報も利用できるようになります。これを実施する目的は 2 つあり ます。 1. 消費するダンプ・ファイルの領域を把握すること。 2. 表のアンロードを開始するのに必要な情報をすべて取得し、サイズの大き い順に並べ替えること。これにより、MCP はメタデータおよびデータの アンロードをパラレルでスケジューリングできるようになります。 予測段階で取得したオブジェクトを、表データ・オブジェクトといいます。それ ぞれは、パーティション(表がパーティション化されていない場合は表全体)を 示します。 0-nクライアントは、実行中のジョブに適用できるので、作業中の長期ジョブを開 始して、その場を離れて帰宅し、再度接続してから夜間に監視するということが 可能です。

Oracle Data Pump のクライアント:expdp および impdp

新しいexpdpおよびimpdpクライアントは、これまでのexpおよびimpクライアン トと変わらないルック・アンド・フィールを持っていますが、パラメータの互換 性を 100%保つことが目的ではありません。エクスポートおよびインポート操作 の両方に対して通じる概念を持つことで、パラメータも両方に対して通じるよう サポートしました。新しいクライアントでは、さらに優れた機能をサポートしま す。 • インタラクティブ・コマンド・モード:[Ctrl]キーを押しながら[C]を押す と(^C)、インタラクティブ・コマンド・モードが呼び出され、export> またはimport>のプロンプトが表示されます。このプロンプトでは、ヘ ルプの表示、ジョブ状態の詳細の取得、パラメータ監視の変更、ジョブ のダンプ・ファイル・セットに対する(ワイルドカード仕様を含む)ファ イルの動的追加、再開可能な状態でのジョブの停止、再開不可能な状態 でのジョブの停止、ジョブの並行処理レベルの変更、ログ・モードに戻 り進捗メッセージを継続して取得、ジョブを実行したままクライアント を終了するといったことが可能です。 • 操作の全モードをサポート:コマンドライン・クライアントは、MODEが 完全、スキーマ、表、表領域、またはTransportable Tabelspaceの際に使用 できます。Oracle Data Pumpと新しいexpdpおよびimpdpクライアントは、 これまでのexpおよびimp機能の完全な上位セットです。

• 特定の時間におけるエクスポートおよびインポートでは、フラッシュバック・ テクノロジがサポートされています。

(12)

• WHERE句の述語を、expdpおよびimpdpの両方を使用して個別の表に適 用できます。 • 特権ユーザー(EXP_FULL_DATABASEまたはIMP_FULL_DATABASEのい ずれかのロールを持つユーザー)は、ジョブが停止された場合でも、他 のユーザーによって開始されたジョブに接続および制御できます。

その他の便利な機能

Oracle Data Pump は、これまでのエクスポートおよびインポート・ユーティリティ を超える機能や柔軟性を持った、便利な新機能をいくつか搭載します。

REMAP_DATA - Oracle Data Pumpの一般的な使用方法として、本番システムから のデータに基づいたテストまたは開発システムの投入があります。この方法では、 個人を識別できるデータを隠すことで、これらのデータにアクセス権限のない人 物に対して非表示にすることができます。これは非常に有効であると同時に、法 的にも必要となる場合があります。 REMAP_DATA パラメータは、指定した列にある元の値をソースとする機能を再 マッピングするよう特定でき、ダンプ・ファイル内の元の値を置き換えるよう再 マッピングされた値を返すことができます。たとえば、クレジットカードなどの 機密性の高い顧客データの列を、REMAP_DATA 機能で生成した数字に置き換え ることができます。これにより、権限のないユーザーに対して個人データを公開 することなく、必要な形式や処理特性を保ちながらデータを維持できます。 DDL変換 - オブジェクト・メタデータはダンプ・ファイル・セットにXMLとして 格納されているため、DDLをインポートしながら(XSLTを使用して)形成する際、 簡単に変換できます。Impdpは、次のいくつかの変換機能をサポートします。 • PARTITION_OPTIONSは、インポート操作の際、どのように表のパーティ ションを扱うかを指定します。表にある複数のパーティションをエクス ポートできます。インポートでは、ユーザーはこれらのパーティション を元のデータベースにあったのと同じ形でロードするよう選択でき、1 つ の表に統合したり、または各パーティションを個別の表にしたりするこ ともできます。 • REMAP_TABLEにより、ユーザーはトランスポータブル・パーティション・ インポート操作の一環として表そのものに適用されるパーティションに、 表の名前を指定できます。これは、次と組み合わせて使用する必要があり ます。 PARTITION_OPTIONS=departition • REMAP_TABLESPACEは、オブジェクト・セグメントが配置された表領域 を変更します。また、表領域の定義内にある表領域の名前も変更します。 • REMAP_SCHEMAは、以前のFROMUSER/TOUSERオブジェクトをスキーマ間 で移動します。これにより、オブジェクトの所有権を変更できます。 • REMAP_DATAFILEは、異なるファイル・システム・セマンティクスを持つ プラットフォーム間でデータベースを移動する際に便利なパラメータです。 また、TRANSFORMパラメータを通じて、DDL内にストレージ句を作成しな いよう指定することもできます。これは、ターゲット・インスタンスの ストレージ特性がソースのものと大きく異なる場合に有効です。

(13)

SQL File - impdpでは、SQLファイルも操作できます。これはデータベース・オブ ジェクトを作成するのではなく、同等のDDLをすぐに実行できるSQLスクリプト の形式で書き込むだけです。組み込まれた接続文のみがコメント・アウトされま す。

TABLE_EXISTS_ACTION - これまでのimpでは、IGNORE=Yが指定された場合は既 存の表に行を追加していました。Oracle Data PumpのimpdpのTABLE_EXISTS_ ACTIONパラメータは、次の4 つのオプションを提供します。 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 Enterprise Managerは、Oracle Data Pumpで完全 に機能するインタフェースをサポートします。

Data Pump Views - Oracle Data Pumpは、ユーザーおよびDBAがアクセスしてジョ ブの進捗状況を監視できるビューをいくつか用意しています。

• DBA_DATAPUMP_JOBS:これは、システム上でアクティブになっている すべてのOracle Data Pumpジョブの概要を表示します。

• USER_DATAPUMP_JOBS:これは、現在のユーザーでアクティブになって いるOracle 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 以降)のダンプ・ファイルをインポートできます。

(14)

これまでのダンプ・ファイルと 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 と元のエクスポート/インポートの相違点

この項では、Oracle Data Pump ベースのエクスポートおよびインポートを実行した 際の主な相違点について取り上げます。

Oracle Data Pumpは、大量のデータを扱う大きなジョブ向けに設計されています。 大量のデータを扱う際は、次のようなことが予測されます。 • 起動時間が長くかかります。すべてのプロセスおよび通信インフラストラ クチャは、ジョブを実行する前に開始させる必要があります。これには、 10 秒ほどかかります。また、エクスポートの開始時間には、表にあるす べてのデータ・オブジェクトを取得して順序付ける時間が含まれており、 MCP は表のアンロードのスケジューリングを素早く開始できます。 • Oracle Data Pumpのexpdpは、ジョブの終了後にダンプ・ファイルをマス

ター表に書き込む必要があります。Oracle Data Pumpのimpdpは、マスター 表の場所を探してロードしてから、対応する索引を構築しなければなり ません。これは 10 秒程度かかりますが、マスター表が非常に大きい場合 は、インポート開始時の索引構築に時間がかかる可能性があります。ダイ レクト・パス・アクセス方法は、マスター表のアンロードおよびロードで使 用します。 • ダンプ・ファイル・セットのサブセットをインポートすることで、マスター 表から関係のない行を削除できます。サブセットがエクスポート・セット に比べて非常に小さい場合、必要な更新を実施する時間は長くなります。 • メタデータを抽出して作成するパフォーマンスは、これまでの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 を実行するユーザーは、マスター表を作成するのに十分な表領域 を割り当てる必要があります。

多数のオブジェクトを含むジョブは、ロールバック構成であることを認識してく ださい。

(15)

クライアントで表示される進捗メッセージは、これまでのexpおよびimpで表示さ れたものと異なりますが、現在のオブジェクト・タイプを反映します。また、'既 知の'エラーにはフラグが立ち、ジョブの最後に発行される総エラー数に含まれま す。 デフォルトで生成されるログ・ファイル名は、export.logまたはimport.logで す。これは、LOGFILEパラメータで上書きできます。これまでのexpおよびimpは、 デフォルトでログ・ファイルを生成しません。

結論

Oracle Data PumpはOracle Database 11gでコールできる機能であり、データやメタ データを非常に高速でロードおよびアンロードできます。Oracle Data Pumpのイン フラストラクチャを完全に利用するコマンドラインのエクスポートおよびインポー ト・クライアント(expdpおよびimpdp)も、Oracle Databaseで利用可能です。こ れらは、これまでのexpおよびimpの完全な上位セットとして実装されており、い ずれは既存のクライアントと置き換えられていきます。

(16)

Oracle®

Database 11g Data Pump:超高速データ移動ユーティリティの基盤 2007 年 6 月

著者: Roy F. Swonger

共著者: George Claborn、William Fisher、Carol Palmer、Jim Stenoish Oracle Corporation World Headquarters 500 Oracle Parkway Redwood Shores, CA 94065 U.S.A. 海外からのお問合せ窓口: 電話: +1.650.506.7000 ファクシミリ: +1.650.506.7200 www.oracle.com

Copyright © 2007, Oracle.All rights reserved.

本文書は情報提供のみを目的として提供されており、ここに記載される内容は 予告なく変更されることがあります。 本文書は一切間違いがないことを保証するものではなく、さらに、口述による 明示または法律による黙示を問わず、特定の目的に対する商品性もしくは適 合性についての黙示的な保証を含み、いかなる他の保証や条件も提供するもの ではありません。オラクル社は本文書に関するいかなる法的責任も明確に否 認し、本文書によって直接的または間接的に確立される契約義務はないもの とします。本文書はオラクル社の書面による許可を前もって得ることなく、 いかなる目的のためにも、電子または印刷を含むいかなる形式や手段によっ ても再作成または送信することはできません。

Oracle は米国 Oracle Corporation およびその子会社、関連会社の登録商標です。 その他の名称はそれぞれの会社の商標です。

参照

関連したドキュメント

が作成したものである。ICDが病気や外傷を詳しく分類するものであるのに対し、ICFはそうした病 気等 の 状 態 に あ る人 の精 神機 能や 運動 機能 、歩 行や 家事 等の

このマニュアル全体を読んで、Oracle Diagnostics Pack に同梱の Oracle Performance Manager、Oracle Capacity Planner、Oracle TopSessions および Oracle Event

自分は超能力を持っていて他人の行動を左右で きると信じている。そして、例えば、たまたま

① 新株予約権行使時にお いて、当社または当社 子会社の取締役または 従業員その他これに準 ずる地位にあることを

Oracle WebLogic Server の脆弱性 CVE-2019-2725 に関する注 意喚起 ISC BIND 9 に対する複数の脆弱性に関する注意喚起 Confluence Server および Confluence

「海洋の管理」を主たる目的として、海洋に関する人間の活動を律する原則へ転換したと

基本目標2 一人ひとりがいきいきと活動する にぎわいのあるまちづくり 基本目標3 安全で快適なうるおいのあるまちづくり..