ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Business Intelligence Discoverer管理者ガイド
11gリリース1 (11.1.1)
E51906-01
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

20 クエリーのパフォーマンスの予測

この章では、Discoverer Administratorでのクエリー予測の使用方法について説明します。この章の内容は次のとおりです。

20.1 クエリーのパフォーマンスの予測について

Discovererには、Discovererクエリーによる情報の取得に必要な時間を予測する機能が備わっています。クエリーの開始前にクエリー予測が表示されるため、Discovererユーザーはクエリーを実行するかどうかを判断できます。この強力な機能により、Discovererユーザーはサイズの大きいレポートの待機に必要な時間を制御できます。

クエリー予測では、Oracle RDBMSでコストベースのオプティマイザ(CBO)が使用されます。このため、ルールベースのオプティマイザ(RBO)を使用して実行するデータベースに対して実行されているときは、クエリー予測を使用できません。

20.2 Discoverer Plusでのクエリー予測の機能

Discovererエンド・ユーザーは、クエリーが設定した時間を超えると予測される場合にそのことを通知するように指定できます。ダイアログに、クエリー予測の詳細とクエリーをキャンセルするオプションが表示されます。

図qp.gifの説明は前後にあります。

クエリーを取り消す場合、ユーザーはそのクエリーが後で(深夜などに)実行されるようにワークブックをスケジュールできます。深夜に実行すると、翌朝にワークシートを開くことができます(Discoverer Plusでのワークブックのスケジュール方法の詳細は、『Oracle Fusion Middleware Oracle Business Intelligence Discoverer Plusユーザーズ・ガイド』を参照)。Discoverer Administratorを使用したエンド・ユーザーによるワークブックのスケジュールを可能にする方法の詳細は、第8章「ワークブックのスケジュール」を参照してください。

20.3 クエリー予測が使用できなくなる理由

Discovererエンド・ユーザーが、ワークシートの実行時にクエリー予測を使用できない場合があります。この理由を参照するには、Discoverer Administratorで「ヘルプ」→「データベース情報」を選択して、「データベース情報」ダイアログを表示します。クエリー予測が使用できなくなる理由は次のとおりです。

理由 解決策
クエリー予測をサポートしていないデータベース(Oracle 7.1.xなど)に接続している。 データベースをアップグレードしてください。
クエリー予測に必要なビューが使用できない。 「クエリー予測に必要なデータベース・ビューを使用できるようにする方法」を参照してください。
init<sid>.oraのtimed_statisticsパラメータがFALSE (デフォルト値)に設定されている。 「クエリー予測のためのtimed_statisticsパラメータの確認および変更方法」を参照してください。
データ・テーブルが分析されていない。 「データ・テーブルの分析方法」を参照してください。
init<sid>.oraのoptimizer_modeパラメータがCHOOSEではなくRULEに設定されている。 「クエリー予測のためのoptimizer_modeパラメータの確認および変更方法」を参照してください。

20.4 クエリー予測の速度と精度を向上する方法

クエリー予測の速度と精度に信頼性がある場合、ユーザーは実行に時間がかかるクエリーを後で実行するようにスケジュールする傾向があります。クエリー予測が正確であれば、一般にサーバーへの負荷が軽減されるため、すべてのユーザーにとってクエリーのパフォーマンスが向上します。

クエリー予測を効果的に実装する手順は次のとおりです。

20.5 クエリー予測に必要なデータベース・ビューを使用できるようにする方法

Discovererでクエリー予測を有効にする前に、様々なデータベース・ビューでパブリック・ユーザーにSELECT権限を付与する必要があります。詳細は、Oracle10gデータベースのドキュメントを参照してください。

クエリー予測に必要なビューを使用できるようにする手順は次のとおりです(9.2.0.7以降のOracleデータベースの場合)。

  1. SQL*Plusを起動し(まだ実行されていない場合)、SYSユーザーあるいはSYSDBA権限を付与されたユーザーとして接続します。

    SQL*Plusがすでに実行されている場合は、コマンド・プロンプトで次のように入力します。

    SQL> CONNECT sys/sys_pw@database AS SYSDBA;
    

    sysはSYSユーザー、sys_pwはSYSユーザーのパスワードです。

  2. コマンド・プロンプトで次のように入力して、クエリー予測に必要なビューでのSELECTアクセス権限を付与します。

    SQL> grant select on v_$session to public;
    SQL> grant select on v_$sesstat to public; 
    SQL> grant select on v_$parameter to public; 
    

    注意: SELECT ON v_$parameterを付与するには、SYSユーザーとしてログインする必要があります。SYSユーザーとしてログインできない場合、またはSYSのユーザー名とパスワードが不明な場合は、データベース管理者に問い合せてください。

20.6 クエリー予測のためのtimed_statisticsパラメータの確認および変更方法

Discovererでクエリー予測を有効にするには、データベース・ビューv_$parameterにあるtimed_statisticsパラメータをTRUEに設定する必要があります。

timed_statisticsがTRUEに設定されていることを確認する手順は次のとおりです。

  1. SQL*Plusを起動し(まだ実行されていない場合)、データベース管理者として接続します。

    SQL*Plusがすでに実行されている場合は、コマンド・プロンプトで次のように入力します。

    SQL> CONNECT dba_user/dba_pw@database;
    

    dba_userはデータベース管理者、dba_pwはデータベース管理者のパスワードです。

  2. コマンド・プロンプトで次のように入力します。

    SQL> select value from v$parameter where name = 'timed_statistics';
    

    クエリーにより値TRUEが返された場合、timed_statisticsパラメータはクエリー予測が使用できるように正しく設定されています。値FALSEが返された場合、init<sid>.oraファイルのtimed_statisticsパラメータの値を変更するまでクエリー予測を使用できません。

    注意: v$parameterは、ビューv_$parameterのシノニム(ポインタ)です。

init<sid>.oraファイルを編集する手順は次のとおりです。

  1. INIT<SID>.ORAファイルを検索します。

    INIT<SID>.ORAファイルは、<ORACLE_HOME>\databaseにあります。このファイルのデフォルト名はINITORCL.ORAです。ORCLは<SID>名を表します。

  2. 次の行が含まれるようにファイルを編集します。

    timed_statistics = TRUE
    
  3. 変更を有効にするには、データベースをシャットダウンしてから再起動します。

20.7 データ・テーブルの分析方法

Discovererでは、クエリー予測にデータ・テーブルの分析結果が使用されます。データ・テーブル分析により、データベース・テーブルに関する情報(テーブルのサイズなど)が生成されます。詳細は、Oracle10gデータベースのドキュメントを参照してください。

データ・テーブルを分析する手順は次のとおりです。

  1. SQL*Plusを起動し(まだ実行されていない場合)、分析するデータ・テーブルの所有者として接続します。

    SQL*Plusがすでに実行されている場合は、コマンド・プロンプトで次のように入力します。

    SQL> connect tab_owner/tab_pw@database;
    

    tab_ownerはデータ・テーブルの所有者のユーザー名、tab_pwはそのパスワードです。

  2. 次のクエリーを入力します。

    SQL> analyze table <tabowner.tablename> compute statistics for all columns;
    

注意

20.8 クエリー予測のためのoptimizer_modeパラメータの確認および変更方法

optimizer_modeパラメータがCHOOSEに設定されていることを確認する手順は次のとおりです。

  1. SQL*Plusを起動し(まだ実行されていない場合)、データベース管理者として接続します。

    SQL*Plusがすでに実行されている場合は、コマンド・プロンプトで次のように入力します。

    SQL> CONNECT dba_user/dba_pw@database;
    

    dba_userはデータベース管理者、dba_pwはデータベース管理者のパスワードです。

  2. コマンド・プロンプトで次のように入力します。

    SQL> select value from v$parameter where name = 'optimizer_mode'; 
    

注意: v$parameterは、ビューv_$parameterのシノニム(ポインタ)です。

クエリーにより値CHOOSEが返された場合、optimizer_modeパラメータはクエリー予測が使用できるように正しく設定されています。テーブルが分析されている場合はシステムでコストベースのオプティマイザが使用され、テーブルが分析されていない場合はルールベースのオプティマイザが使用されます。

クエリーにより値FIRSTROWSまたはALLROWSが返された場合も、optimizer_modeパラメータはクエリー予測が使用できるように正しく設定されています。

テーブルが分析されていない場合でも、FIRSTROWSおよびALLROWSの両方が返されると、コストベースのオプティマイザが使用されます。

値RULEが返された場合、init<sid>.oraファイルのoptimizer_modeパラメータの値を変更するまでクエリー予測を使用できません。

init<sid>.oraファイルを編集する手順は次のとおりです。

  1. INIT<SID>.ORAを検索します。

    INIT<SID>.ORAファイルは、<ORACLE_HOME>\databaseにあります。このファイルのデフォルト名はINITORCL.ORAです。ORCLは<SID>名を表します。

  2. 次の行が含まれるようにファイルを編集します。

    optimizer_mode = CHOOSE
    
  3. 変更を有効にするには、データベースをシャットダウンしてから再起動します。

20.9 クエリー予測にかかる時間を短縮する方法

クエリー予測の処理にかかる時間は短縮できます。

Discovererでは、クエリー予測の処理中にコストベースのオプティマイザが使用されます。コストベースのオプティマイザではクエリー文のみが解析され、クエリーの実行は通常、サーバーのデフォルト・オプティマイザ・モードで管理されることに注意してください。

スキーマが大きい環境(Oracle Applicationsなど)では、コストベースのオプティマイザを使用したデータベースによる文の解析に時間がかかることがあります。この場合、クエリー予測処理が完了するまで数分かかることがあります。

クエリー予測の処理が完了するまでユーザーが長い時間待機する必要がある場合は、次の解決策を検討してください。

20.10 Secure Viewsでクエリー予測を使用する方法

Discovererのクエリー予測機能では、EXPLAIN PLAN文を使用してクエリーが分析されます。ただし、EXPLAIN PLAN文ではSecure Viewsに対するクエリーの分析ができません。このため、Secure Viewsに対するクエリーを行う場合はクエリー予測が正常に機能できなくなります。この制限を回避するには、システム・ビューV_$SQLへのアクセス権限をユーザーに付与してください。

システム・ビューV_$SQLへのアクセス権限をユーザーに付与する手順は次のとおりです(リリース9.2.0.7以降のOracleデータベースの場合)。

  1. SQL*Plusを起動し(まだ実行されていない場合)、SYSユーザーあるいはSYSDBA権限を付与されたユーザーとして接続します。

    SQL*Plusがすでに実行されている場合は、コマンド・プロンプトで次のように入力します。

    SQL> CONNECT sys/sys_pw@database AS SYSDBA;
    

    sysはSYSユーザー、sys_pwはSYSユーザーのパスワードです。

  2. コマンド・プロンプトで次のように入力して、クエリー予測に必要なビューでのSELECTアクセス権限を付与します。

    SQL> grant select on v_$sql to public;
    

注意

20.11 古いクエリー予測統計の削除方法

様々な理由により、クエリー予測統計が不要になる場合があります。指定した日付より前に作成されたクエリー予測統計をすべて削除できます。

データベースから古いクエリー予測を削除する手順は次のとおりです。

  1. SQL*Plusを起動し(まだ実行されていない場合)、EUL所有者として接続します。

    SQL*Plusがすでに実行されている場合は、コマンド・プロンプトで次のように入力します。

    SQL> connect jchan/tiger@database;
    

    jchanとtigerはそれぞれEUL所有者のユーザー名とパスワードです。

  2. SQLファイルeulstdel.sqlを実行します。

    たとえば、コマンド・プロンプトで次のように入力します。

    SQL> start <ORACLE_ HOME>\discoverer\util\eulstdel.sql
    

    <ORACLE_HOME>はDiscoverer Administratorがインストールされている場所です。

    データベースに格納されているクエリー統計のサマリーが表示されます。指定した日数を超える期間が経過したクエリー統計を削除するオプションがあります。

  3. (オプション)何日後にクエリー統計を削除するかを入力します(統計を削除しない場合は空白のままにしておきます)。

    日数を指定しない場合、クエリー統計は削除されません。