Oracle Business Intelligence Discoverer 管理ガイド 10gリリース2(10.1.2.0.0) B15623-01 |
|
この章では、Discoverer Administratorでのクエリー予測の使用方法について説明します。項目は次のとおりです。
Discovererには、Discovererクエリーによる情報の取得に必要な時間を予測する機能が備わっています。クエリーの開始前にクエリー予測が表示されるため、Discovererユーザーはクエリーを実行するかどうかを判断できます。この強力な機能により、Discovererユーザーはサイズの大きいレポートの待機に必要な時間を制御できます。
クエリー予測では、Oracleデータベースでコストベースのオプティマイザ(CBO)が使用されます。 このため、ルールベースのオプティマイザ(RBO)を使用して実行するデータベースに対して実行されているときは、クエリー予測を使用できません。
Discovererエンド・ユーザーは、クエリーが設定した時間を超えると予測される場合にそのことを通知するように指定できます。ダイアログに、クエリー予測の詳細とクエリーをキャンセルするオプションが表示されます。
クエリーを取り消す場合、ユーザーはそのクエリーが後で(深夜などに)実行されるようにワークブックをスケジュールできます。深夜に実行すると、翌朝にワークシートを開くことができます(Discoverer Plusでのワークブックのスケジュール方法の詳細は『Oracle Business Intelligence Discoverer Plusユーザーズ・ガイド』を参照)。Discoverer Administratorを使用したエンド・ユーザーによるワークブックのスケジュールを可能にする方法の詳細は第8章「ワークブックのスケジュール」を参照してください。
Discovererエンド・ユーザーが、ワークシートの実行時にクエリー予測を使用できない場合があります。この理由を参照するには、Discoverer Administratorで「ヘルプ」→「データベース情報」を選択して、「データベース情報」ダイアログを表示します。クエリー予測が使用できなくなる理由は、次のとおりです。
理由 | 解決策 |
---|---|
クエリー予測をサポートしていないデータベース(Oracle 7.1.xなど)に接続している。 |
データベースをアップグレードしてください。 |
クエリー予測に必要なビューが使用できない。 |
「クエリー予測に必要なデータベース・ビューを使用できるようにする方法」を参照してください。 |
init<sid>.oraのtimed_statisticsパラメータがFALSE(デフォルト値)に設定されている。 |
|
データ・テーブルが分析されていない。 |
「データ・テーブルの分析方法」を参照してください。 |
init<sid>.oraのoptimizer_modeパラメータがCHOOSEではなくRULEに設定されている。 |
クエリー予測の速度と精度に信頼性がある場合、ユーザーは実行に時間がかかるクエリーを後で実行するようにスケジュールする傾向があります。クエリー予測が正確であれば、一般にサーバーへの負荷が軽減されるため、すべてのユーザーにとってクエリーのパフォーマンスが向上します。
クエリー予測を効果的に実装する手順は、次のとおりです。
Discovererでクエリー予測を有効にする前に、様々なデータベース・ビューでパブリック・ユーザーにSELECT権限を付与する必要があります。 詳細は、Oracle10gデータベースのドキュメントを参照してください。
クエリー予測に必要なビューを使用できるようにする手順は、次のとおりです(Oracle9i以上のデータベースの場合)。
SQL*Plusがすでに実行されている場合は、コマンド・プロンプトで次のように入力します。
SQL> CONNECT sys/sys_pw@database AS SYSDBA;
sysはSYSユーザー、sys_pwはSYSユーザーのパスワードです。
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のユーザー名とパスワードが不明な場合は、データベース管理者に問い合せてください。
Discovererでクエリー予測を有効にするには、データベース・ビューv_$parameterにあるtimed_statisticsパラメータをTRUEに設定する必要があります。
timed_statisticsがTRUEに設定されていることを確認する手順は、次のとおりです。
SQL*Plusがすでに実行されている場合は、コマンド・プロンプトで次のように入力します。
SQL> CONNECT dba_user/dba_pw@database;
dba_userはデータベース管理者、dba_pwはデータベース管理者のパスワードです。
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ファイルを編集する手順は、次のとおりです。
INIT<SID>.ORAファイルは、<ORACLE_HOME>¥dbsにあります。このファイルのデフォルト名はINITORCL.ORAです。ORCLは<SID>名を表します。
timed_statistics = TRUE
Discovererでは、クエリー予測にデータ・テーブルの分析結果が使用されます。データ・テーブル分析により、データベース・テーブルに関する情報(テーブルのサイズなど)が生成されます。詳細は、Oracle10gデータベースのドキュメントを参照してください。
データ・テーブルを分析する手順は、次のとおりです。
SQL*Plusがすでに実行されている場合は、コマンド・プロンプトで次のように入力します。
SQL> connect tab_owner/tab_pw@database;
tab_ownerはデータ・テーブルの所有者のユーザー名、tab_pwはそのパスワードです。
SQL> analyze table <tabowner.tablename> compute statistics for all columns;
optimizer_modeパラメータがCHOOSEに設定されていることを確認する手順は、次のとおりです。
SQL*Plusがすでに実行されている場合は、コマンド・プロンプトで次のように入力します。
SQL> CONNECT dba_user/dba_pw@database;
dba_userはデータベース管理者、dba_pwはデータベース管理者のパスワードです。
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ファイルを編集する手順は、次のとおりです。
INIT<SID>.ORAファイルは、<ORACLE_HOME>¥dbsにあります。このファイルのデフォルト名はINITORCL.ORAです。ORCLは<SID>名を表します。
optimizer_mode = CHOOSE
Discovererでは、クエリー予測の処理中にコストベースのオプティマイザが使用されます。コストベースのオプティマイザではクエリー文のみが解析され、クエリーの実行は通常、サーバーのデフォルト・オプティマイザ・モードで管理されることに注意してください。
スキーマが大きい環境(Oracle Applicationsなど)では、コストベースのオプティマイザを使用したデータベースによる文の解析に時間がかかることがあります。この場合、クエリー予測処理が完了するまで数分かかることがあります。
クエリー予測の処理が完了するまでユーザーが長い時間待機する必要がある場合は、次の解決策を検討してください。
Windowsレジストリで、HKEY_CURRENT_USER¥Software¥Oracle¥Discoverer 10¥Database¥QPPEnable
レジストリ・キーのDWORD値を0(ゼロ)に設定します。
クエリー予測を再度有効にする場合は、このレジストリ・キーを削除するか、値を1に設定します。
Windowsレジストリに格納されているDiscovererのレジストリ設定の詳細は、「Discoverer AdministratorおよびDiscoverer Desktopのレジストリ設定」を参照してください。
Discovererのレジストリ・ファイル.reg_key.dcのQPPEnableレジストリ設定の値を変更します。QPPEnableを01 00 00 00に設定すると、クエリー予測が有効になります。クエリー予測を無効にするには、QPPEnableを00 00 00 00に設定します。
.reg_key.dcファイルに格納されているDiscovererのレジストリ設定の詳細は、「Discoverer PlusおよびDiscoverer Viewerのレジストリ設定」を参照してください。
Windowsレジストリで、HKEY_CURRENT_USER¥Software¥Oracle¥Discoverer 10¥Database¥QPPCBOEnforced
レジストリ・キーのDWORD値を0(ゼロ)に設定します。
このレジストリ・キーを0に設定すると、コストベースのオプティマイザ(CBO)が強制的に使用されず、データベース・サーバーの通常のルールが適用されます。
クエリー予測で再度コストベースのオプティマイザが強制的に使用されるようにする場合は、このレジストリ・キーを削除するか、値を1に設定します。
Windowsレジストリに格納されているDiscovererのレジストリ設定の詳細は、「Discoverer AdministratorおよびDiscoverer Desktopのレジストリ設定」を参照してください。
Discovererのレジストリ・ファイル.reg_key.dcのQPPCBOEnforcedレジストリ設定の値を変更します。 QPPCBOEnforcedを01 00 00 00に設定すると、クエリー予測でコストベースのオプティマイザが強制的に使用されます。 クエリー予測でデフォルトのオプティマイザを使用するように指定するには、QPPCBOEnforcedを00 00 00 00に設定します。
.reg_key.dcファイルに格納されているDiscovererのレジストリ設定の詳細は、「Discoverer PlusおよびDiscoverer Viewerのレジストリ設定」を参照してください。
データベース・パラメータの詳細は、Oracle10g データベースのドキュメントを参照してください。
詳細は、「古いクエリー予測統計の削除方法」を参照してください。
Discovererのクエリー予測機能では、EXPLAIN PLAN文を使用してクエリーが分析されます。ただし、EXPLAIN PLAN文ではSecure Viewsに対するクエリーの分析ができません。このため、Secure Viewsに対するクエリーを行う場合はクエリー予測が正常に機能できなくなります。 この制限を回避するには、システム・ビューV_$SQLへのアクセス権限をユーザーに付与してください。
システム・ビューV_$SQLへのアクセス権限をユーザーに付与する手順は、次のとおりです(Oracle9i以上のデータベースの場合)。
SQL*Plusがすでに実行されている場合は、コマンド・プロンプトで次のように入力します。
SQL> CONNECT sys/sys_pw@database AS SYSDBA;
sysはSYSユーザー、sys_pwはSYSユーザーのパスワードです。
SQL> grant select on v_$sql to public;
注意: SELECT ON V_$SQLを付与するには、SYSユーザーとしてログインする必要があります。 SYSユーザーとしてログインできない場合、またはSYSのユーザー名とパスワードが不明な場合は、データベース管理者に問い合せてください。
<ORACLE_HOME>¥discoverer¥util¥eulsuqpp.sql
このスクリプトを使用するには、SYSTEMパスワードを知っている必要があります。
様々な理由により、クエリー予測統計が不要になる場合があります。指定した日付より前に作成されたクエリー予測統計をすべて削除できます。
データベースから古いクエリー予測を削除する手順は、次のとおりです。
SQL*Plusがすでに実行されている場合は、コマンド・プロンプトで次のように入力します。
SQL> connect jchan/tiger@database;
jchanとtigerはそれぞれEUL所有者のユーザー名とパスワードです。
たとえば、コマンド・プロンプトで次のように入力します。
SQL> start <ORACLE_ HOME>¥discoverer¥util¥eulstdel.sql
<ORACLE_HOME>はDiscoverer Administratorがインストールされている場所です。
データベースに格納されているクエリー統計のサマリーが表示されます。指定した日数を超える期間が経過したクエリー統計を削除するオプションがあります。
日数を指定しない場合、クエリー統計は削除されません。
|
Copyright © 2004 Oracle Corporation. All Rights Reserved. |
|