Oracle Analytics ServerでのOracle Databaseのマテリアライズド・ビューの使用

Oracle Analytics ServerからSQLアクセス・アドバイザにメタデータをエクスポートし、Oracle Database Metadata Generatorを使用してマテリアライズド・ビューを作成する方法について説明します。

このセクションには次のトピックが含まれます:

マテリアライズド・ビューでのSQLアクセス・アドバイザの使用について

マテリアライズド・ビューでのSQLアクセス・アドバイザを使用して、データ・ウェアハウスのパフォーマンスおよびデータベースの機能を向上できます。

Oracle Database Metadata Generatorを使用すると、データベースに存在するデータの論理的関係に関するメタデータを、SQLアクセス・アドバイザで格納できます。また、効率的なOracleマテリアライズド・ビューを使用することによって、データ・ウェアハウスの問合せのスピードが向上します。これらのマテリアライズド・ビューは、リレーショナル・データを事前集計して問合せのパフォーマンスを向上させます。メタデータがSQLアクセス・アドバイザに格納された後は、データベース管理者がデータベース・オブジェクトを最適化して、問合せのパフォーマンスを強化できます。

問合せの処理時に、Oracle Databaseは可能なかぎりマテリアライズド・ビューを格納している表に問合せをルーティングします。このマテリアライズド・ビューのテーブルは基底にある元表より小さく、データが事前集計されているため、再ルーティングされた問合せを高速で実行できます。

Oracle Database Metadata Generatorはメタデータ・ブリッジとして機能し、固有のメタデータがPL/SQLコマンドが組み込まれたSQLファイルに変換され、SQLアクセス・アドバイザでディメンションが生成されます。メタデータがSQLファイル変換された後は、SQL*Plusなどのツールを使用して変換後のメタデータをSQLアクセス・アドバイザにインポートしてメタデータ・カタログ表に格納します。メタデータのインポート後は、マテリアライズド・ビューを作成し、このビューを着信するアプリケーション問合せの最適化に使用します。

Oracle Database用のメタデータのデプロイ

メタデータをOracle Databaseにデプロイするには、あらかじめOracle Databaseとそのツールを十分に理解しておく必要があります。

Oracle Databaseパフォーマンス・チューニング・ガイドの「SQLアクセス・アドバイザ」を参照してください。

メタデータのデプロイ前にジェネレータの実行に記載されたステップを完了します。キューブ・メタデータをデプロイするには、次の各項で説明されているタスクを実行します。

Oracle Databaseに対するSQLファイルの実行

SQLアクセス・アドバイザへのSQLファイルのインポートを実行する前に、Oracle Databaseのインポート・ツールを十分に理解しておく必要があります。詳細は、Oracle Databaseのドキュメント・セットを参照してください。

SQL*Plusなどのツールを使用してOracle Database Metadata Generatorが生成したSQLファイルを実行します。ディメンションが既存の場合、またはデータベース・スキーマがOracle BIリポジトリ・ファイルのものと異なる場合は、エラー・メッセージが表示される場合があります。スクリプトの実行が正常に完了すると、データベースWebコンソール、またはOracle Enterprise Manager Database Controlを使用して作成されたディメンションが表示されます。Oracle Enterprise Manager Database Controlでは、「ネットワーク」、「データベース」、データベース名、「ウェアハウス」、「サマリー管理」、「ディメンション」、「システム」の各ノードを展開します。

SQLファイルの実行後は、次の事項に注意します。

  • 増分メタデータ変更は許可されません。スキーマの変更では、Oracle Databaseのキューブ・モデル・メタデータを手動で削除し、メタデータを再度変換する必要があります。たとえば、Oracle BIリポジトリ内のキューブのディメンションを変更する必要がある場合は、Oracle Databaseのキューブ・モデルを削除し、Oracle BIリポジトリからSQLファイルを再生成してSQLアクセス・アドバイザにインポートする必要があります。

  • Oracle Database Metadata Generatorではメタデータの削除は実行できません。Oracle Enterprise Manager Database Controlを使用してキューブ・モデルを手動で削除する必要があります。

結合の存在に関する制約の定義

Oracle Databaseでディメンション表とファクト表間の結合が確実に認識できるようにする必要があります。

Oracle Databaseのドキュメントを参照してください。

これには、SQL*PlusまたはOracle Enterprise Manager Database Controlで制約を作成します。Oracle Enterprise Manager Database Controlで、制約を作成する表を選択して「制約」タブを選択します。

次のように、表の種類によって、タイプの異なる制約を作成します。

  • ディメンション表には、UNIQUEキー制約を作成します。

  • ファクト表には、FOREIGNキー制約を作成し、参照先スキーマと参照先表を指定します。「制約の定義」領域に、ファクト表の外部キー列とディメンション表の対応する一意キーを組み込みます。外部キー列データがディメンション表の一意キー列データと一致しないかぎり、ファクト表での外部キーの作成が失敗します。

問合せワークロードの作成

問合せワークロードは、最適化に使用される物理問合せのサンプル・セットです。

問合せワークロード作成の詳細は、Oracle Databaseのドキュメント・セットを参照してください。

ワークロードの作成前に実行速度が最低速の問合せに関する情報を使用してトレース・ファイルを生成します。

実行速度が最低速の問合せのトレース・ファイルは、次のように使用するデータベースのバージョンに応じたツールを使用して生成できます。

  • 使用状況トラッキング: Oracle Analytics Serverにあるこの機能を使用して、問合せとその実行所要時間をログに記録します。実行時間が長い問合せはスクリプトとして実行でき、また、Oracle Databaseのトレース機能とともに使用するとこれらの問合せのOracle Database SQLコードを取得できます。

  • Oracle Databaseトレース: このツールは、最低速の物理問合せの特定に使用します。トレース機能は、Oracle Enterprise Manager Database Control内から、またはDBMS_MONITORパッケージとともにSQLコマンドを入力することによって有効化できます。トレース機能を有効化したら、スクリプトを使用してトレース・ファイルを作成し、問合せワークロード表で問合せに使用されるSQLコードを取得します。

  • Oracle Enterprise Manager: このツールは実行速度が遅い問合せの追跡に使用されます。

次の各項で説明する機能は、Oracle Analytics Serverの一部ではなく、Oracle Databaseで使用できます。

  1. トレース・ファイルの確認時は、次のガイドラインを使用します。
    • バッチ・プロセスのように一度に多数の文をトレースした場合は、問合せ処理時間が許容できる文をただちに廃棄します。実行時間が最長の文に集中します。

    • Query列で、すべての問合せおよび副問合せの処理も含めてブロック・アクセスの読取りの整合性をチェックします。多くの場合、非効率的な文ではブロック・アクセス数の大量化が発生します。Current列には、セグメントのヘッダーおよび更新されるブロックなど、読取りの整合性と関連しないアクセス数が示されます。

    • Disk列で、ディスクから読み取られたブロックの数をチェックします。ディスクの読取りはメモリーの読取りより低速であるため、この値はQuery列およびCurrent列の合計を大きく下回る可能性があります。このようになっていない場合は、バッファ・キャッシュの問題を確認してください。

    • ロックの問題および非効率的なPL/SQLループによって、ブロック・アクセス数が少くてもCPU時間値が高い状況が発生することがあります。

    • 単一文に対する複数の解析文のコールがないかを調べます。これは、ライブラリ・キャッシュの問題を示すものです。

  2. ファイル内で問題の文を特定したら、実行計画をチェックして、問題の文のそれぞれが発生した原因を調べます。

問合せをワークロードにロードするには:

  • トレース・ユーティリティを使用して最低速の物理問合せの名前を特定したら、USER_WORKLOAD表に挿入します。

    次の表は、USER_WORKLOAD表の列を示しています。

  • INSERT文を使用して、QUERY列に最低速物理問合せのSQL文を、OWNER列に該当する所有者名を移入します。

データ型 必須 説明

QUERY

すべてのLONGまたはVARCHAR型(すべての文字型)

YES

問合せのSQL文。

OWNER

VARCHAR2 (30)

YES

問合せを最後に実行したユーザー。

APPLICATION

VARCHAR2 (30)

NO

問合せのアプリケーション名。

FREQUENCY

NUMBER

NO

問合せが実行された回数。

LASTUSE

DATE

NO

問合せが最後に実行された日付。

PRIORITY

NUMBER

NO

ユーザーが指定する問合せのランキング。

RESPONSETIME

NUMBER

NO

問合せの処理時間(秒単位)。

RESULTSIZE

NUMBER

NO

問合せが選択した合計バイト数。

SQL_ADDR

NUMBER

NO

問合せのキャッシュ・アドレス

SQL_HASH

NUMBER

NO

問合せのキャッシュ・ハッシュ値。

マテリアライズド・ビューの作成

問合せワークロード表への移入後は、Oracle Databaseのバージョンに応じたツールを使用してマテリアライズド・ビューを作成します。

SQLアクセス・アドバイザは、指定したファクト表のパフォーマンス向上に関する推奨事項を生成します。また、SQLアクセス・アドバイザは適切な索引付けスキームの決定にも役立ちます。SQLアクセス・アドバイザに適切なマテリアライズド・ビューを作成するSQLコードが表示されます。SQLアクセス・アドバイザでマテリアライズド・ビューを作成する前に、次を確認してください。

  • SQLコードにCAST文が含まれていると、マテリアライズド・ビューの作成が失敗する場合があります。

  • CREATE MATERIALIZED VIEW文でワークロード表として指定した問合せと同じものを指定しないでください。この文で同じ問合せを指定すると、マテリアライズド・ビューに実際のパフォーマンス向上が反映されない可能性があります。ただし、問合せの実行頻度が高い場合はマテリアライズド・ビューの作成が無駄にならない場合もあります。

  • SQL文の後のCREATE MATERIALIZED VIEW文の最後にスラッシュを追加します。フォワード・スラッシュが含まれていない場合は、SQL*Plusワークシートで有効な文であると認識されません。