Administratorでのクエリー予測の使用方法について説明します。この章の内容は次のとおりです。クエリーのパフォーマンスの予測についてDiscovererには、Discovererクエリーによる情報の取得に必要な時間を予測する機能が備わっています。クエリーの開始前にクエリー予測が表示されるため、Discovererユーザーはクエリーを実行するかどうかを判断できます。この強力な機能により、Discovererユーザーはサイズの大きいレポートの待機に必要な時間を制御できます。RDBMSでコストベースのオプティマイザ(CBO)が使用されます。このため、ルールベースのオプティマイザ(RBO)を使用して実行するデータベースに対して実行されているときは、クエリー予測を使用できません。Plusでのクエリー予測の機能Discovererエンド・ユーザーは、クエリーが設定した時間を超えると予測される場合にそのことを通知するように指定できます。ダイアログに、クエリー予測の詳細とクエリーをキャンセルするオプションが表示されます。クエリーを取り消す場合、ユーザーはそのクエリーが後で(深夜などに)実行されるようにワークブックをスケジュールできます。Plusユーザーズ・ガイド』を参照)。Administratorを使用したエンド・ユーザーによるワークブックのスケジュールを可能にする方法の詳細は、第8章「ワークブックのスケジュール」を参照してください。クエリー予測が使用できなくなる理由Discovererエンド・ユーザーが、ワークシートの実行時にクエリー予測を使用できない場合があります。Administratorで「ヘルプ」→「データベース情報」を選択して、「データベース情報」ダイアログを表示します。クエリー予測が使用できなくなる理由は次のとおりです。7.1.xなど)に接続している。データベースをアップグレードしてください。クエリー予測に必要なビューが使用できない。「クエリー予測に必要なデータベース・ビューを使用できるようにする方法」を参照してください。(デフォルト値)に設定されている。「クエリー予測のためのtimed_statisticsパラメータの確認および変更方法」を参照してください。データ・テーブルが分析されていない。「データ・テーブルの分析方法」を参照してください。init<sid>.oraのoptimizer_modeパラメータがCHOOSEではなくRULEに設定されている。「クエリー予測のためのoptimizer_modeパラメータの確認および変更方法」を参照してください。クエリー予測の速度と精度を向上する方法クエリー予測の速度と精度に信頼性がある場合、ユーザーは実行に時間がかかるクエリーを後で実行するようにスケジュールする傾向があります。クエリー予測が正確であれば、一般にサーバーへの負荷が軽減されるため、すべてのユーザーにとってクエリーのパフォーマンスが向上します。クエリー予測を効果的に実装する手順は次のとおりです。TABLEコマンドを使用して、ユーザーがクエリーを行うテーブルを分析します。EULデータ定義ワークブックの「ビジネスエリアおよびフォルダ」ワークシートを使用して、EULのフォルダがいつ分析されたかを表示します。データ・テーブルの分析方法の詳細は、「データ・テーブルの分析方法」を参照してください。Viewsでクエリー予測を使用する方法」を参照)。クエリー予測に必要なデータベース・ビューを使用できるようにする方法Discovererでクエリー予測を有効にする前に、様々なデータベース・ビューでパブリック・ユーザーにSELECT権限を付与する必要があります。詳細は、Oracle10gデータベースのドキュメントを参照してください。クエリー予測に必要なビューを使用できるようにする手順は次のとおりです(9.2.0.7以降のOracleデータベースの場合)。SQL*Plusを起動し(まだ実行されていない場合)、SYSユーザーあるいはSYSDBA権限を付与されたユーザーとして接続します。SQL*Plusがすでに実行されている場合は、コマンド・プロンプトで次のように入力します。SYSDBA;sysはSYSユーザー、sys_pwはSYSユーザーのパスワードです。コマンド・プロンプトで次のように入力して、クエリー予測に必要なビューでのSELECTアクセス権限を付与します。v_$parameterを付与するには、SYSユーザーとしてログインする必要があります。SYSユーザーとしてログインできない場合、またはSYSのユーザー名とパスワードが不明な場合は、データベース管理者に問い合せてください。クエリー予測のためのtimed_statisticsパラメータの確認および変更方法Discovererでクエリー予測を有効にするには、データベース・ビューv_$parameterにあるtimed_statisticsパラメータをTRUEに設定する必要があります。timed_statisticsがTRUEに設定されていることを確認する手順は次のとおりです。SQL*Plusを起動し(まだ実行されていない場合)、データベース管理者として接続します。SQL*Plusがすでに実行されている場合は、コマンド・プロンプトで次のように入力します。dba_user/dba_pw@database;dba_userはデータベース管理者、dba_pwはデータベース管理者のパスワードです。コマンド・プロンプトで次のように入力します。'timed_statistics';クエリーにより値TRUEが返された場合、timed_statisticsパラメータはクエリー予測が使用できるように正しく設定されています。値FALSEが返された場合、init<sid>.oraファイルのtimed_statisticsパラメータの値を変更するまでクエリー予測を使用できません。v$parameterは、ビューv_$parameterのシノニム(ポインタ)です。init<sid>.oraファイルを編集する手順は次のとおりです。INIT<SID>.ORAファイルを検索します。INIT<SID>.ORAファイルは、<ORACLE_HOME>\databaseにあります。このファイルのデフォルト名はINITORCL.ORAです。ORCLは<SID>名を表します。次の行が含まれるようにファイルを編集します。TRUE変更を有効にするには、データベースをシャットダウンしてから再起動します。データ・テーブルの分析方法Discovererでは、クエリー予測にデータ・テーブルの分析結果が使用されます。データ・テーブル分析により、データベース・テーブルに関する情報(テーブルのサイズなど)が生成されます。詳細は、Oracle10gデータベースのドキュメントを参照してください。データ・テーブルを分析する手順は次のとおりです。SQL*Plusを起動し(まだ実行されていない場合)、分析するデータ・テーブルの所有者として接続します。SQL*Plusがすでに実行されている場合は、コマンド・プロンプトで次のように入力します。tab_owner/tab_pw@database;tab_ownerはデータ・テーブルの所有者のユーザー名、tab_pwはそのパスワードです。次のクエリーを入力します。時間の経過に伴ってテーブルの内容が大幅に変更されると予想される場合は、データ・テーブルを定期的に分析してください。クエリー予測に時間がかかる(10秒を超える)場合は、テーブルが分析されていません。Discovererでのクエリー予測の表示に25秒程度かかっても、クエリーが2秒未満で実行される場合などがあります。クエリー予測のためのoptimizer_modeパラメータの確認および変更方法optimizer_modeパラメータがCHOOSEに設定されていることを確認する手順は次のとおりです。SQL*Plusを起動し(まだ実行されていない場合)、データベース管理者として接続します。SQL*Plusがすでに実行されている場合は、コマンド・プロンプトで次のように入力します。dba_user/dba_pw@database;dba_userはデータベース管理者、dba_pwはデータベース管理者のパスワードです。コマンド・プロンプトで次のように入力します。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を検索します。INIT<SID>.ORAファイルは、<ORACLE_HOME>\databaseにあります。このファイルのデフォルト名はINITORCL.ORAです。ORCLは<SID>名を表します。次の行が含まれるようにファイルを編集します。CHOOSE変更を有効にするには、データベースをシャットダウンしてから再起動します。クエリー予測にかかる時間を短縮する方法クエリー予測の処理にかかる時間は短縮できます。Discovererでは、クエリー予測の処理中にコストベースのオプティマイザが使用されます。コストベースのオプティマイザではクエリー文のみが解析され、クエリーの実行は通常、サーバーのデフォルト・オプティマイザ・モードで管理されることに注意してください。Applicationsなど)では、コストベースのオプティマイザを使用したデータベースによる文の解析に時間がかかることがあります。この場合、クエリー予測処理が完了するまで数分かかることがあります。クエリー予測の処理が完了するまでユーザーが長い時間待機する必要がある場合は、次の解決策を検討してください。Discovererの適切なレジストリ設定を使用して、クエリー予測を無効にできます。(ゼロ)に設定します。クエリー予測を再度有効にする場合は、このレジストリ・キーを削除するか、値を1に設定します。Desktopのレジストリ設定」を参照してください。Viewerの場合pref.txtファイルのQPPEnableレジストリ設定の値を変更します。変更を有効にするには、プリファレンスを適用する必要があります。Discoverer構成ガイド』を参照)。QPPEnableを1に設定すると、クエリー予測が有効になります。クエリー予測を無効にするには、QPPEnableを0に設定します。Viewerのレジストリ設定」を参照してください。Discovererの適切なレジストリ設定を使用して、クエリー予測でコストベースのオプティマイザが強制的に使用されないようにできます。(ゼロ)に設定します。このレジストリ・キーを0に設定すると、コストベースのオプティマイザ(CBO)が強制的に使用されず、データベース・サーバーの通常のルールが適用されます。クエリー予測で再度コストベースのオプティマイザが強制的に使用されるようにする場合は、このレジストリ・キーを削除するか、値を1に設定します。Desktopのレジストリ設定」を参照してください。Viewerの場合pref.txtファイルのQPPCBOEnforcedレジストリ設定の値を変更します。変更を有効にするには、プリファレンスを適用する必要があります。Discoverer構成ガイド』を参照)。QPPCBOEnforcedを1に設定すると、クエリー予測でコストベースのオプティマイザが強制的に使用されます。クエリー予測でデフォルトのオプティマイザを使用するように指定するには、QPPCBOEnforcedを0に設定します。Viewerのレジストリ設定」を参照してください。コストベースのオプティマイザにおける索引の使用方法を調整できます。次のデータベース・パラメータを調整できます。optimizer_index_cost_adjoptimizer_index_cachingデータベース・パラメータの詳細は、Oracle11gデータベースのドキュメントを参照してください。統計テーブルから既存の統計を削除できます。詳細は、「古いクエリー予測統計の削除方法」を参照してください。PLAN文を使用してクエリーが分析されます。Viewsに対するクエリーの分析ができません。Viewsに対するクエリーを行う場合はクエリー予測が正常に機能できなくなります。この制限を回避するには、システム・ビューV_$SQLへのアクセス権限をユーザーに付与してください。システム・ビューV_$SQLへのアクセス権限をユーザーに付与する手順は次のとおりです(リリース9.2.0.7以降のOracleデータベースの場合)。SQL*Plusを起動し(まだ実行されていない場合)、SYSユーザーあるいはSYSDBA権限を付与されたユーザーとして接続します。SQL*Plusがすでに実行されている場合は、コマンド・プロンプトで次のように入力します。SYSDBA;sysはSYSユーザー、sys_pwはSYSユーザーのパスワードです。コマンド・プロンプトで次のように入力して、クエリー予測に必要なビューでのSELECTアクセス権限を付与します。V_$SQLを付与するには、SYSユーザーとしてログインする必要があります。SYSユーザーとしてログインできない場合、またはSYSのユーザー名とパスワードが不明な場合は、データベース管理者に問い合せてください。SQL*Plusで次のスクリプトを実行しても、システム・ビューV_$SQLへのアクセス権限をユーザーに付与できます。<ORACLE_HOME>\discoverer\util\eulsuqpp.sqlこのスクリプトを使用するには、SYSTEMパスワードを知っている必要があります。様々な理由により、クエリー予測統計が不要になる場合があります。指定した日付より前に作成されたクエリー予測統計をすべて削除できます。データベースから古いクエリー予測を削除する手順は次のとおりです。SQL*Plusを起動し(まだ実行されていない場合)、EUL所有者として接続します。SQL*Plusがすでに実行されている場合は、コマンド・プロンプトで次のように入力します。jchan/tiger@database;jchanとtigerはそれぞれEUL所有者のユーザー名とパスワードです。SQLファイルeulstdel.sqlを実行します。コマンド・プロンプトで次のように入力します。Administratorがインストールされている場所です。データベースに格納されているクエリー統計のサマリーが表示されます。指定した日数を超える期間が経過したクエリー統計を削除するオプションがあります。(オプション)何日後にクエリー統計を削除するかを入力します(統計を削除しない場合は空白のままにしておきます)。日数を指定しない場合、クエリー統計は削除されません。reserved.法律上の。