この章では、データ・ウェアハウス環境を最初に構成する方法を説明します。この付録には、次の項があります。
この項にある手順では、データ・ウェアハウスとして使用するためのOracleデータベースを構成する方法を説明します。その後は、Oracle Warehouse Builder(OWB)を構成し、Oracle Databaseを利用してデータ管理方針設計用のグラフィカル・ユーザー・インタフェースを提供します。
データ・ウェアハウス・システムをセットアップする手順
「環境の準備」の説明に従って、ハードウェアのサイジングおよび構成を行います。
Oracle Databaseソフトウェアをインストールします。インストール手順については、『Oracle Database 2日でデータベース管理者』または『Oracle Databaseインストレーション・ガイドfor Linux』など、使用するプラットフォームのインストレーション・ガイドを参照してください。
「データ・ウェアハウスのデータベースの設定」の説明に従って、データベースをデータ・ウェアハウスとして使用できるように構成します。
Oracle Warehouse Builderソフトウェアにアクセスします。
「Oracle Warehouse Builderへのアクセス」の説明に従います。その後は、デモンストレーションをインストールし、データ・ウェアハウスの一般的なタスクをWarehouse Builderで実行する方法を学習できます。
データ・ウェアハウスのアーキテクチャの基本的な構成要素は、オンライン・トランザクション処理(OLTP)システムの基本的な構成要素に似ています。ただし、データのサイズと量のため、データ・ウェアハウスのハードウェア構成およびデータ・スループットの要件は固有のものとなります。データ・ウェアハウスのサイジングは、システムに必要なスループットが起点になります。サイジング時には、次の基準を1つ以上使用します。
ピーク時に問合せによりアクセスされるデータ量および許容できるレスポンス時間。
一定期間内にロードされるデータ量。
一般的に、どの特定の時間でも必要とする最も高いスループットを見積もる必要があります。
ハードウェア・ベンダーによって適切なデータ・ウェアハウス・アプリケーション設定が推奨されるため、サイジングに役立ちます。詳細は、任意のハードウェア・ベンダーにご相談ください。
データ・ウェアハウスのパフォーマンスを最大限にするには、適切なサイジングと安定したハードウェア構成が必要です。次の項では、適切な構成に重要なポイントを説明します。
中央演算装置(CPU)はデータ・ウェアハウスの計算機能に使用されます。データ・ウェアハウスの操作を実行するには、十分な処理能力を持つCPUが必要です。パラレル操作は、それと同等な数のシリアル操作よりもCPUに負担がかかります。
必要なCPU数は、見積もった最も高いスループットを目安に使用します。大まかな見積りとして、次の公式を使用します。
<number of CPUs> = <maximum throughput in MB/s> / 200
この公式を使用する場合は、CPUが1秒間に約200MBまで耐えられることが前提になります。たとえば、1秒間に1200MBの最高スループットが必要な場合、<number of CPUs> = 1200/200 = 6 CPU
がシステムに必要です。このシステムは、6つのCPUを持つ1台のサーバー構成で処理できます。2ノード・クラスタ・システムであれば、両方のノードに3つのCPUを使用して構成できます。
データ・ウェアハウスのメモリーは、大規模なソートなどのメモリーに負担をかける処理を行う際に特に重要になります。大部分の問合せは大容量のデータにアクセスするため、データ・キャッシュへのアクセスはデータ・ウェアハウスにとっては重要ではありません。データ・ウェアハウスには、重要なOLTPアプリケーションと同じメモリー要件はありません。
CPU数は必要なメモリー容量のよいガイドラインになります。次の単純な公式を使用すると、選択したCPUで必要なメモリー容量を計算できます。
<amount of memory in GB> = 2 * <number of CPUs>
たとえば、6つのCPUを持つシステムが必要とするメモリー容量は2 * 6 = 12 GB
になります。大部分の一般的なサーバーはこの要件を満たしています。
データ・ウェアハウス環境での一般的な問題は、必要とする最大容量に基づいた記憶領域のサイジングです。記憶領域要件に排他的に基づいたサイジングは、スループットのボトルネックを作成する傾向があります。
必要なディスク・アレイの数を知るために、必要とする最大スループットを使用します。また、ディスク・アレイが耐えられるスループットを知るために、記憶領域プロバイダの指定を使用します。記憶領域プロバイダはGb/秒で測定され、最初のスループットの見積りはMB/秒に基づいていることに注意してください。平均的なディスク・コントローラの最大スループットは2Gb/秒で、これは持続可能なスループットでは約(70% * 2 Gbit/s) /8 = 180 MB/s
に相当します。
必要なディスク・アレイ数を決定するには、次の公式を使用します。
<number of disk controllers> = <throughput in MB/s> / <individual controller throughput in MB/s>
たとえば、スループットが1秒当たり1200MBのシステムでは、1200 / 180 = 7 ディスク・アレイとなり、少なくとも7つのディスク・アレイが必要となります。
必要なスループットを維持するために十分な物理ディスクがあるか確認してください。ディスクのスループット数をディスク・ベンダーに尋ねてください。
エンドツーエンドのI/Oシステムは、CPUおよびディスクを含んだコンポーネントで構成されます。バランスのよくとれたI/Oシステムには、I/Oシステムのすべてのコンポーネントに対して同等の帯域幅が必要です。これらのコンポーネントには次が含まれます。
サーバーおよび記憶領域間のコネクタであるホスト・バス・アダプタ(HBA)。
サーバー間およびストレージ・エリア・ネットワーク(SAN)またはネットワーク・アタッチ・ストレージ(NAS)間のスイッチ。
ネットワーク接続用のイーサネット・アダプタ(GigE NICまたはInfiniband)。Oracle Real Application Clusters(Oracle RAC)環境では、I/Oスループットのシステムのサイジング時には含めないノード間のインターコネクト用に追加のプライベート・ポートが必要です。インターコネクトは、ノード間のパラレル実行などのファクタを考慮に入れ、個々にサイジングする必要があります。
個別のコンポーネントを接続するワイヤ。
各コンポーネントは、バランスのよくとれたI/Oシステムにするために十分なI/O帯域幅を提供する必要があります。見積もった最初のスループットおよびベンダーによるハードウェア仕様は、必要な個々のコンポーネントの量を決定する基準になります。ベンダーのビット単位で表現した最大スループット数を、バイト単位の持続可能なスループット数に変換するには、表2-1の換算を使用してください。
表2-1 スループット・パフォーマンスの変換
コンポーネント | ビット | 1秒当たりのバイト数 |
---|---|---|
HBA |
2GB |
200MB |
16ポート・スイッチ |
8×2GB |
1200MB |
Fibre Channel |
2GB |
200MB |
GigE NIC |
1GB |
80MB |
Inf-2Gビット |
2GB |
160MB |
十分なI/O帯域幅を確保するために十分なコンポーネントを使用することに加え、ディスク上でのデータのレイアウトが成功と失敗を分ける鍵となります。すべてのディスク・アレイに対して十分なスループットを持つシステムを構成しても、問合せが取得するデータが1つのディスク上にある場合は、必要なスループットを得ることができません。これは、ディスクが1つしかないことがボトルネックとなるためです。このような状況を避けるためには、できるかぎり多くのディスク、理想はすべてのディスクへデータをストライプ化します。1MBに対して256KBのストライプのデータは、マルチブロック読取り操作および複数のディスクへのデータの振り分け間でのよいバランスを提供します。
Oracle Databaseのインストールの前に、ハードウェアおよびオペレーティング・システムのレベルで設定を検証してください。必要なスループットとパフォーマンスがオペレーティング・システムから得られない場合、Oracle Databaseはユーザーの要件に合せて実行できません。スループットを検証するためのツールは、dd
ユーティリティと、オラクル社が提供するOrionの2つがあります。
UNIXまたはLinuxでオペレーティング・システムのスループットを検証する基本方法は、dd
ユーティリティを使用することです。dd
ユーティリティは、UNIXの一般的なプログラムであり、このユーティリティの主な目的は、生データの低レベル・コピーおよび変換です。ddユーティリティにはオーバーヘッドがほとんどないため、その出力からは信頼できる測定値が得られます。Oracle Databaseは、dd
ユーティリティが実現する最大スループットの約90パーセントに到達できます。
次は、dd
の使用に最も重要なオプションです。
bs=BYTES: Read BYTES bytes at a time; use 1 MB count=BLOCKS: copy only BLOCKS input blocks if=FILE: read from FILE; set to your device of=FILE: write to FILE; set to /dev/null to evaluate read performance; write to disk would erase all existing data!!! skip=BLOCKS: skip BLOCKS BYTES-sized blocks at start of input
Oracle Databaseが達成可能な最大スループットを見積もるため、典型的なデータ・ウェアハウス・アプリケーションのワークロード(大規模かつ、ランダムで連続したディスク・アクセスによる)を模倣します。
次のdd
コマンドは合計2GBを読み取る2つのデバイスに対してランダムで連続したディスク・アクセスを実行します。スループットは次のコマンドを終了するのに必要な時間によって分けられた2GBです。
dd bs=1048576 count=200 if=/raw/data_1 of=/dev/null & dd bs=1048576 count=200 skip=200 if=/raw/data_1 of=/dev/null & dd bs=1048576 count=200 skip=400 if=/raw/data_1 of=/dev/null & dd bs=1048576 count=200 skip=600 if=/raw/data_1 of=/dev/null & dd bs=1048576 count=200 skip=800 if=/raw/data_1 of=/dev/null & dd bs=1048576 count=200 if=/raw/data_2 of=/dev/null & dd bs=1048576 count=200 skip=200 if=/raw/data_2 of=/dev/null & dd bs=1048576 count=200 skip=400 if=/raw/data_2 of=/dev/null & dd bs=1048576 count=200 skip=600 if=/raw/data_2 of=/dev/null & dd bs=1048576 count=200 skip=800 if=/raw/data_2 of=/dev/null &
検証では、データベースの記憶領域に含む予定のすべての記憶領域装置を対象としてください。クラスタ環境を構成する場合は、それぞれのノードからdd
コマンドを実行します。
Orionはオラクル社が提供するツールで、スループットの測定を目的として、データベース・システム上の代表的なワークロードを模倣します。dd
ユーティリティと比較すると、Orionには次の利点があります。
Orionのシミュレーションはデータベースが生成するワークロードに似ています。
Orionを使用すると、1つのシミュレーションで高い信頼性の書取りおよび読取りシミュレーションを実行できます。
オラクル社はデータベースがすでにインストールされている場合でも、最大の達成可能なスループットを検証するためにOrionの使用をお薦めします。
次はサポートされるI/Oワークロードのタイプです。
小規模およびランダム
大規模および連続的
大規模およびランダム
混合ワークロード
各タイプのワークロードでOrionは1秒当たりのMB、1秒当たりのI/OおよびI/O待機時間などのパフォーマンス・メトリクスを計測するためのI/Oロードの異なるレベルで検証を実行できます。データ・ウェアハウス・ワークロードは複数のプロセスによって発行された連続するI/Oスループットによって一般的に特徴づけられています。構築するシステムのタイプに応じて異なるI/Oシミュレーションを実行できます。例は次のとおりです。
ユーザーまたはアプリケーションがシステムに問い合せる場合の毎日のワークロード
ユーザーがシステムにアクセスするまたはしない場合のデータ・ロード
索引およびマテリアライズド・ビューの構築
バックアップ操作
参照:
|
環境設定およびOracle Databaseソフトウェアのインストール後、データベース・パラメータが正しく設定されていることを確認します。設定する必要があるデータベース・パラメータは多くありません。
一般的なガイドラインとして、特に理由がないかぎり、データベース・パラメータは変更しないでください。データ・ウェアハウスの設定には、Oracle Enterprise Managerを使用します。様々なパラメータ設定を表示するには、「データベース」ページに移動して「サーバー」をクリックします。「データベース構成」で「メモリー・パラメータ」または「すべての初期化パラメータ」をクリックします。
Oracle Databaseメモリーには、次のコンポーネントがあります。
共有メモリー: システム・グローバル領域(SGA)とも呼ばれます。Oracleインスタンスで使用されるメモリーです。
セッションベース・メモリー: データベースのセッションに占有されるメモリーで、プログラム・グローバル領域(PGA)とも呼ばれています。セッションベース・メモリーはソートや集計などのデータベース操作の実行に使用されます。
Oracle Databaseは2つのメモリー領域のメモリー・コンポーネントの配布を自動的にチューニングします。次に示す相互に排他的な2つのオプションのいずれかを選択できます。
MEMORY_TARGET
およびMEMORY_MAX_TARGET
を設定します。
SGA_TARGET
およびPGA_AGGREGATE_TARGET
を設定します。
最初のオプションを選択した場合、他のパラメータを設定する必要はありません。データベースによって、すべてのメモリーが管理されます。2番目のオプションを選択した場合は、SGAとPGAのサイズを指定する必要があります。その他の設定は、データベースによって行われます。
PGA_AGGREGATE_TARGET
パラメータはすべてのセッションの合計PGAが使用するターゲット・メモリー容量です。まずは、次の公式を使用してPGA_AGGREGATE_TARGET
値を定義します。
PGA_AGGREGATE_TARGET
= 3 * SGA_TARGET
このPGA_AGGREGATE_TARGET
をメモリーに適用するための十分な物理メモリーがない場合は、PGA_AGGREGATE_TARGET
の値を小さくします。
MEMORY_TARGET
およびMEMORY_MAX_TARGET
MEMORY_TARGET
パラメータによってターゲットのメモリー・サイズを設定でき、関連した初期化パラメータMEMORY_MAX_TARGET
によって最大ターゲット・メモリー容量を設定できます。データベースは、システム・グローバル領域(SGA)および集計プログラム・グローバル領域(PGA)間の要件に従ってメモリーを再分配し、ターゲット・メモリー・サイズに対してチューニングします。ターゲット・メモリー初期化パラメータは動的であるため、データベースの再起動なしにいつでもターゲット・メモリー・サイズを変更できます。最大メモリー・サイズは上限として機能するため、ターゲット・メモリー・サイズを非常に高い値に設定してしまうことはありません。また特定のSGAコンポーネントが簡単に縮小できないこと、または最小サイズで保持される必要があるため、ターゲット・メモリー・サイズを過度に小さく設定してしまうことも防止します。
初めてデータ・ウェアハウスを使用する際は、Database Configuration Assistant(DBCA)の実行時に選択できるデータ・ウェアハウス・テンプレート・データベースが便利です。ただし、次の初期化パラメータを考慮すれば、どのデータベースでもかまいません。
COMPATIBLE
パラメータは以前のリリースに対してデータベースが持つ互換性のレベルを識別します。最新機能を活用するには、COMPATIBLE
パラメータでデータベースのリリース番号に設定します。
クエリー・リライトなどの上位のコストベース・オプティマイザ機能を活用するには、OPTIMIZER_FEATURES_ENABLE
パラメータがデータベースの現行バージョンの値に設定されていることを確認します。
DB_BLOCK_SIZEパラメータのデフォルト値は8KBで、この値はデータ・ウェアハウスのほとんどの要件に適しています。表圧縮を使用する場合は、より大きなブロック・サイズを指定することを検討してください。
DB_FILE_MULTIBLOCK_READ_COUNT
パラメータを使用すると、単一オペレーティング・システムの読取りコールでデータベース・ブロックの読取りができます。データ・ウェアハウスの一般的なワークロードは多くの連続したI/Oで構成されているため、多数の小さいI/Oではなく、少数の大きいI/Oを活用できるようにします。このパラメータを設定するときは、オペレーティング・システムのブロック・サイズと最大I/Oサイズを考慮して、次の公式を使用します。
DB_FILE_MULTIBLOCK_READ_COUNT * DB_BLOCK_SIZE = <maximum operating system I/O size>
最大のオペレーティング・システムのI/Oサイズは64KBから1MBの間で変化します。
PARALLEL_MAX_SERVERS
パラメータは、パラレル実行の使用可能な最大プロセス数のリソース制限を設定します。パラレル操作には、操作のあらゆる表に属性を付与する最大並列度(DOP)として問合せサーバーのプロセス数が最大2倍必要です。
Oracle Databaseはほとんどのシステムにとって十分なデフォルト値をPARALLEL_MAX_SERVERS
パラメータに設定します。PARALLEL_MAX_SERVERS
パラメータのデフォルト値は次のとおりです。
(CPU_COUNT x PARALLEL_THREADS_PER_CPU x (2 if PGA_AGGREGATE_TARGET > 0; otherwise 1) x 5)
上位のDOP属性を持つ表のパラレル問合せにはこの値は十分ではない可能性があります。オラクル社は上位のDOPの問合せを実行するユーザーには、PARALLEL_MAX_SERVERS
を次のように設定することをお薦めします。
2 x DOP x <number_of_concurrent_users>
たとえば、PARALLEL_MAX_SERVERS
パラメータに64を設定することで、各問合せは各セットの8つのDOPを持つ2つのスレーブ・セットを使用することを想定し、同時に4つのパラレル問合せを実行できます。
ハードウェア・システムがCPUバインドでもI/Oバインドでもない場合、問合せサーバー・プロセスを追加することによって、システムに同時パラレル実行ユーザーの数を増やすことができます。一方システムがCPUバインドまたはI/Oバインドになる場合、同時ユーザーの追加はすべてのパフォーマンスに弊害をもたらします。PARALLEL_MAX_SERVERS
パラメータを慎重に設定することが、同時パラレル操作数の制限に効果的な方法です。
TRUE
またはFALSE
になるPARALLEL_ADAPTIVE_MULTI_USER
パラメータは、現行のワークロードに応じて特定の文の並列度を動的に決定するためのアルゴリズムをサーバーが使用するどうかを定義します。この機能を使用するには、PARALLEL_ADAPTIVE_MULTI_USER
をTRUE
に設定します。
マテリアライズド・ビューに対してクエリー・リライトを利用するには、QUERY_REWRITE_ENABLED
パラメータをTRUE
に設定する必要があります。このパラメータのデフォルトはTRUE
です。
QUERY_REWRITE_INTEGRITY
パラメータのデフォルトはENFORCED
です。データベースは、有効になっている検証された主キー制約、一意キー制約、および外部キー制約を基準とする場合、最新のマテリアライズド・ビューに対してのみクエリー・リライトを行います。
TRUSTED
モードでは、オプティマイザはマテリアライズド・ビューのデータが現行であり、ディメンションで宣言された階層関係およびRELY
制限が正確であるものとみなします。
最適化されたスター型変換を利用するには、STAR_TRANSFORMATION_ENABLED
パラメータをTRUE
に設定します。
Oracle Warehouse Builder(OWB)を使用すると、従来のデータ・ウェアハウスを含む様々なタイプのデータ管理計画を設定および配布できます。
OWBを有効にする手順
Oracle DatabaseのEnterprise EditionまたはStandard Editionのいずれかにアクセスしていることを確認します。
Oracle Database 11gには、Warehouse Builderサーバー・コンポーネントが事前にインストールされています。また、Warehouse Builderリポジトリのスキーマも含まれています。
Oracle DatabaseにインストールされているデフォルトのWarehouse Builderスキーマを使用するには、まず、次のようにスキーマのロックを解除します。
SYS
またはSYSDBA
ユーザーとしてSQL*Plusに接続し、次のコマンドを入力します。
SQL> ALTER USER OWBSYS ACCOUNT UNLOCK;
SQL> ALTER USER OWBSYS IDENTIFIED BY
owbsys_passwd;
Warehouse Builderのデザイン・センターを起動します。
Windowsの場合、「スタート」→「プログラム」→「Oracle」→「Warehouse Builder」を選択後、「デザイン・センター」を選択します。
UNIXおよびLinuxの場合、owb home
/owb/bin/unixに移動し、owbclient.sh
を実行します。
ワークスペースを定義し、ユーザーをワークスペースに割り当てます。
単一のWarehouse Builderリポジトリでは、関連付けられているオブジェクト上で作業している一連のユーザーに対応している各ワークスペースで、複数のワークスペースを定義できます。たとえば、開発、テストおよび本番などの各環境に対してワークスペースを作成できます。
簡略化するために、MY_WORKSPACEという1つのワークスペースを作成し、ユーザーを割り当てます。
「デザイン・センター」ダイアログ・ボックスで、「詳細の表示」をクリックした後、「ワークスペース管理」をクリックします。
「リポジトリ・アシスタント」が表示されます。
プロンプトに従い、「リポジトリ・アシスタント」でデフォルト設定を受け入れ、ワークスペースを作成し、ユーザーをワークスペース所有者として割り当てます。
作成したユーザー名およびパスワードで「デザイン・センター」にログインします。
参照: 『Oracle Warehouse Builderインストレーションおよび管理ガイドfor Windows and Linux』 |
ここからは、Oracle Warehouse Builder用のOracle By Example(OBE)Seriesの演習を使用して、複数のフラット・ファイル・ソースのデータの統合、データの変換および新規リレーショナル・ターゲットへのロード方法について説明します。
演習および例は、Oracle Technology Network(OTN)(http://www.oracle.com/webfolder/technetwork/tutorials/obe/db/10g/r2/owb/owb10gr2_obe_series/owb10g.htm
)で入手できます。このデモンストレーションには、製品への理解を深めるために多様なWarehouse Builderオブジェクトを作成するフラット・ファイル・データおよびスクリプトが用意されています。OBEのページでは、OWBの追加情報および演習に関する最新情報が提供されています。
このガイドに示されているWarehouse Builder演習を実行する手順
デモンストレーションをダウンロードします。
OTNの次の場所から、OWBの例の場所にアクセスします。
最新リリースのOracle By Example(OBE)セットのリンクをクリックします。
デモンストレーションは、owbdemo_files.zip
というZIPアーカイブ内の一連のファイルです。
このZIPアーカイブには、SQLスクリプト、値がカンマ区切りされる形式の2つのファイルおよびTclで記述されたスクリプトが含まれます。
(オプション)同じリンクから、XSALES表データが含まれるxsales.zip
ファイルをダウンロードします。
スクリプトowbdemoinit.tcl
を編集します。
スクリプトowbdemoinit.tcl
によって、他のTCLスクリプトで使用される変数を定義および設定します。次の変数を編集して、コンピュータ環境の値と一致させます。
set tempspace TEMP
set owbclientpwd workspace_owner
set sysuser sys
set syspwd pwd
set host hostname
set port portnumber
set service servicename
set project owb_project_name
set owbclient workspace_owner
set sourcedir drive:/newowbdemo
set indexspace USERS
set dataspace USERS
set snapspace USERS
set sqlpath drive:/
oracle/11.1.0/db_1/BIN
set sid servicename
Warehouse Builderスクリプト・ユーティリティおよびOMB PlusからTclスクリプトを実行します。
Windowsの場合、「スタート」→「プログラム」→「Oracle」→「Warehouse Builder」を選択後、「OMB*Plus」を選択します。
UNIXの場合、owb home
/owb/bin/unixに移動し、OMBPlus.sh
を実行します。
OMB+>プロンプトでは、次のコマンドを入力してスクリプトを含むディレクトリに移動します。
cd
drive
:\\newowbdemo\\
次のコマンドを入力して、すべてのTclスクリプトを必要な順序で実行します。
source loadall.tcl
デザイン・センターを起動し、スクリプトowbdemoinit.tcl
で指定した資格証明を使用して、ワークスペース所有者としてログインします。
デモンストレーションに従い、Warehouse Builderクライアントが正常に設定されたことを確認します。
デザイン・センターのロケーション・ナビゲータで、「ロケーション」ノードを展開します。「データベース」の展開後、「Oracle」を展開します。「Oracle」ノードには次の場所が含まれます。
OWB_REPOSITORY
SALES_WH_LOCATION
Warehouse Builderデモンストレーションを正常にインストールすると、デザイン・センターがEXPENSE_WH
というOracleモジュールとともに表示されます。