13 データ・アクセス・パスの最適化

データ集中型問合せで最適なパフォーマンスを実現するには、SQL文に対するマテリアライズド・ビューおよび索引が重要です。ただし、これらのオブジェクトの実装にはコストがかかります。これらのオブジェクトの作成およびメンテナンスには時間がかかります。また、多くの領域が必要になります。SQLアクセス・アドバイザを使用すると、特定のワークロードに対してマテリアライズド・ビューとビュー・ログ、索引、SQLプロファイルおよびパーティションが推奨され、問合せアクセス・パスを最適化できます。

マテリアライズド・ビューにより問合せの結果を別々のスキーマ・オブジェクトに格納することで表データにアクセスできます。記憶領域を占有せず、データが含まれない通常のビューとは異なり、マテリアライズド・ビューには1つ以上の実表またはビューの問合せの行が含まれます。マテリアライズド・ビュー・ログは、マスター表で定義されたマテリアライズド・ビューを増分的にリフレッシュするため、マスター表のデータに変更を記録するスキーマ・オブジェクトです。SQLアクセス・アドバイザにより、マテリアライズド・ビューを迅速にリフレッシュし、クエリー・リライト機能を使用するためには、マテリアライズド・ビューをどのように最適化すればよいかが推奨されます。

SQLアクセス・アドバイザの推奨事項にはビットマップ索引、ファンクション・ベース索引およびBツリー索引も含まれます。ビットマップ索引では、他の索引の方法と比較すると、多くのタイプの非定型問合せでレスポンス時間を削減し、記憶域要件が減少します。ファンクション索引では、1つ以上の列を含むファンクションや式の値が計算され、索引に格納されます。Bツリー索引は、通常、一意キーまたはほぼ一意なキーの索引付けに使用されます。

SQLアクセス・アドバイザの使用には、次のタスクが含まれます。

参照:

13.1 SQLアクセス・アドバイザの実行

この項ではSQLワークロードの推奨事項を作成するSQLアクセス・アドバイザを実行する方法について説明します。

SQLアクセス・アドバイザの実行手順:

  1. 初期オプションを選択します(初期オプションの選択を参照)。

  2. 分析に使用するワークロード・ソースを選択します(ワークロード・ソースの選択を参照)。

  3. フィルタ・オプションを定義します(フィルタ・オプションの適用を参照)。

  4. 推奨事項のタイプを選択します(推奨オプションの指定を参照)。

  5. SQLアクセス・アドバイザのタスクのスケジュールを調整します(タスクおよびスケジュール・オプションの指定を参照)。

13.1.1 初期オプションの選択

SQLアクセス・アドバイザを実行するには、最初に「SQLアクセス・アドバイザ: 初期オプション」ページの初期オプションを選択します。

初期オプションの選択手順:

  1. データベース・ホームページにアクセスします。

    詳細は、データベースのホームページのアクセスを参照してください。

  2. 「パフォーマンス」メニューから、「アドバイザ・ホーム」を選択します。

    「データベース・ログイン」ページが表示されたら、管理者権限のあるユーザーとしてログインします。「アドバイザ・セントラル」ページが表示されます。

  3. 「SQLアドバイザ」をクリックします。

    「SQLアドバイザ」ページが表示されます。

  4. 「SQLアクセス・アドバイザ」をクリックします。

    「SQLアクセス・アドバイザ: 初期オプション」ページが表示されます。

  5. 次のいずれかの操作を行います。

    • 「アクセス構造(索引、マテリアライズド・ビュー、パーティショニングなど)のみの使用の検証」を選択して既存の構造を検証します。

    • 「新規アクセス構造の推奨」を選択して、Oracle Enterprise Manager Cloud Control (Cloud Control)デフォルト・テンプレートで定義された推奨オプションを使用します。

      このオプションを選択する場合は、オプションで次の手順を完了します。

      • 「保存済のタスクまたはテンプレートからの継承オプション」を選択して既存のSQLアクセス・アドバイザ・タスクまたはその他のテンプレートで定義されたオプションを使用します。

      • 「タスクとテンプレート」で、使用するタスクまたはテンプレートを選択します。

    この例では、「新規アクセス構造の推奨」が選択されています。

  6. 「続行」をクリックします。

    「SQLアクセス・アドバイザ: ワークロード・ソース」ページが表示されます。

  7. 次の手順に進みます(ワークロード・ソースの選択を参照)。

13.1.2 ワークロード・ソースの選択

初期オプションがSQLアクセス・アドバイザで指定された後、次の項の説明に従って、分析に使用するワークロード・ソースを選択します。

13.1.2.1 キャッシュからのSQL文の使用

ワークロード・ソースとしてキャッシュのSQL文を使用できます。ただし、SQLキャッシュ内には現在および最近のSQL文しか格納されていないため、このワークロード・ソースはデータベースのワークロード全体とは異なる場合があります。

キャッシュからのSQL文をワークロード・ソースとして使用する手順:

  1. 初期オプションを選択します(初期オプションの選択を参照)。

  2. 「SQLアクセス・アドバイザ: ワークロード・ソース」ページで、「現在と最近のSQLアクティビティ」を選択します。

  3. 次の手順に進みます(フィルタ・オプションの適用を参照)。

13.1.2.2 既存のSQLチューニング・セットの使用

SQLチューニング・セットをワークロード・ソースとして使用できます。SQLアクセス・アドバイザおよびSQLチューニング・アドバイザのワークロード・ソースとしてSQLチューニング・セットを繰り返し使用できるので、このオプションは便利です。

SQLチューニング・セットをワークロード・ソースとして使用する手順:

  1. 初期オプションを選択します(初期オプションの選択を参照)。

  2. 「SQLアクセス・アドバイザ: ワークロード・ソース」ページで、「既存のSQLチューニング・セットを使用します。」を選択します。

  3. 「SQLチューニング・セット」検索アイコンをクリックして、既存のSQLチューニング・セットを使用します。

    「検索と選択: SQLチューニング・セット」ダイアログ・ボックスが表示されます。

  4. 「スキーマ」フィールドで、使用するSQLチューニング・セットを含むスキーマ名を入力し、「実行」をクリックします。

    選択したスキーマに含まれるSQLチューニング・セットのリストが表示されます。

  5. ワークロード・ソースに使用されるSQLチューニング・セットを選択して「選択」をクリックします。

    「検索と選択: SQLチューニング・セット」ダイアログ・ボックスが閉じ、選択したSQLチューニング・セットが「SQLチューニング・セット」フィールドに表示されます。

  6. 次の手順に進みます(フィルタ・オプションの適用を参照)。

13.1.2.3 仮説ワークロードの使用

ディメンション表では、スター・スキーマまたはスノーフレーク・スキーマに、論理ディメンションのすべての値または一部の値を格納します。主キーまたは外部キー制約を含むディメンション表から仮説ワークロードを作成できます。これは、分析するワークロードが存在しない場合に役立ちます。この場合、SQLアクセス・アドバイザでは現行の論理的なスキーマ設計が調査され、表間で定義された関係に基づいて推奨事項が提供されます。

仮説ワークロードをワークロード・ソースとして使用する手順:

  1. 初期オプションを選択します(初期オプションの選択を参照)。

  2. 「SQLアクセス・アドバイザ: ワークロード・ソース」ページで、「次のスキーマと表から仮想ワークロードを作成」を選択します。

  3. 「スキーマと表」を空のままにし、「追加」をクリックして表を検索します。

    「ワークロード・ソース: スキーマおよび表の検索と選択」ページが表示されます。

  4. 「表」セクションで、「スキーマ」フィールドにスキーマ名を入力して「検索」をクリックします。

    選択したスキーマの表のリストが表示されます。

  5. 仮想ワークロードの作成に使用する表を選択し、「表の追加」をクリックします。

    「スキーマと表」フィールドに選択した表が表示されます。

  6. 「OK」をクリックします。

    選択した表とともに「SQLアクセス・アドバイザ: ワークロード・ソース」ページが表示されます。

  7. 次の手順に進みます(フィルタ・オプションの適用を参照)。

参照:

13.1.3 フィルタ・オプションの適用

ワークロード・ソースを選択したら、オプションで、フィルタを適用しワークロードで検出されたSQL文の範囲を削減できます。フィルタには次の利点があります。

  • フィルタを使用することによりSQLアクセス・アドバイザがワークロードからのSQL文の特定のサブセットに基づいて推奨事項を生成するため、よりよい推奨事項を生成できる可能性があります。

  • ワークロードから不要なSQL文を削除するフィルタを使用して、処理時間を大幅に削減できます。

ワークロード・ソースへのフィルタの適用手順:

  1. 初期オプションを選択します(初期オプションの選択を参照)。

  2. ワークロード・ソースを選択します(ワークロード・ソースの選択を参照)。

  3. 「SQLアクセス・アドバイザ: ワークロード・ソース」ページで、「フィルタ・オプション」をクリックします。

    「フィルタ・オプション」セクションを開きます。

  4. 「これらのオプションに基づいてワークロードをフィルタ処理します。」を選択します。

    「フィルタ・オプション」セクションを有効にします。

  5. 次の項の説明に従って、適用するフィルタを定義します。

  6. 「次へ」をクリックします。

    「推奨オプション」ページが表示されます。

  7. 次の手順に進みます(推奨オプションの指定を参照)。

13.1.3.1 リソース使用量のフィルタの定義

リソース使用量のフィルタでは、指定した数の高負荷SQL文のみが含まれるようにワークロードを制限します。

リソース使用量のフィルタの定義手順:

  1. 「SQLアクセス・アドバイザ: ワークロード・ソース」ページのユーザーのリソース使用量の下で、「文の数」フィールドに高負荷SQL文の数を入力します。

  2. 「ソート順」リストから、SQL文を順序付ける方法を1つ選択します。

13.1.3.2 ユーザーのフィルタの定義

ユーザー・フィルタで、指定したユーザーによって実行されたSQL文を含めるか除外してワークロードを制限します。

ユーザーのフィルタの定義手順:

  1. 「SQLアクセス・アドバイザ: ワークロード・ソース」ページの「ユーザー」の下で、「これらのユーザーによって実行されるSQL文のみを含める」または「これらのユーザーによって実行されるすべてのSQL文を除外する」を選択します。

  2. 使用可能なユーザーを検索するには、「ユーザー」検索アイコンをクリックします。

    「検索と選択: ユーザー」ダイアログ・ボックスが表示されます。

  3. ユーザーを選択し、「選択」をクリックします。選択したユーザーのSQL文が含まれるか除外されます。

    「検索と選択: ユーザー」ダイアログ・ボックスが閉じ、選択した表が「ユーザー」フィールドに表示されます。

    この例では、ユーザーSHが実行したSQL文のみを含むようにフィルタが定義されています。

13.1.3.3 表のフィルタの定義

表のフィルタによって、指定する表のリストにアクセスするSQL文を含めたり除外したりするためにワークロードが制限されます。仮説ワークロードの使用に説明されているとおり、「次のスキーマと表から仮想ワークロードを作成」オプションを選択した場合は、表のフィルタは許可されません。

表のフィルタの定義手順:

  1. 表の特定のリストにアクセスするSQL文のみを含むようにするには、「次のいずれかの表にアクセスするSQL文のみを含める」フィールドに表名を入力します。

  2. 表の特定のリストにアクセスするすべてのSQL文を除外するには、「これらの表のいずれかにアクセスするすべてのSQL文を除外する」フィールドに表名を入力します。

  3. 使用可能な表を検索するには、「表」検索アイコンをクリックします。

    「検索と選択: スキーマと表」ダイアログ・ボックスが表示されます。

  4. 表を選択し、「選択」をクリックします。選択した表のSQL文が含まれるか除外されます。

    「検索と選択: スキーマと表」ダイアログ・ボックスが閉じ、選択した表が対応する「表」フィールドに表示されます。

13.1.3.4 SQLテキストのフィルタの定義

SQLテキスト・フィルタで、指定したSQLテキストのサブストリングのあるSQL文を含めるか除外してワークロードを制限します。

SQLテキストのフィルタの定義手順:

  1. 特定のSQLテキストが含まれているSQL文のみを含むようにするには、「これらのSQLテキスト・サブストリングを含むSQL文のみを含める」フィールドに挿入するSQLテキストを入力します。

  2. 特定のSQLテキストを含むすべてのSQL文を除外するには、除外するSQLテキストを「これらのSQLテキスト・サブストリングを含むすべてのSQL文を除外する」フィールドに入力します。

13.1.3.5 モジュールのフィルタの定義

指定したモジュールに関連するSQL文を含めるか除外するためにモジュールのフィルタによりワークロードが制限されます。

モジュールIDのフィルタの定義手順:

  1. 次のいずれかの操作を行います。

    • ワークロード内の特定のモジュールIDに関連するSQL文のみを含めるには、「これらのモジュールに関連付けられたSQL文のみを含める」を選択します。

    • ワークロードからの特定のモジュールIDに関連するすべてのSQL文を除外するには、「これらのモジュールに関連付けられているすべてのSQL文を除外する」を選択します。

  2. 「モジュール」フィールドに関連するSQL文が含まれるか除外されるモジュールの名前を入力します。

13.1.3.6 アクションのフィルタの定義

アクション・フィルタで、指定したアクションに関連するSQL文を含めるか除外してワークロードを制限します。

アクションのフィルタの定義手順:

  1. 次のいずれかの操作を行います。

    • ワークロードの特定のアクションに関連するSQL文のみを含めるには、「これらのアクションに関連付けられているSQL文のみを含める」を選択します。

    • ワークロードの特定のアクションに関連するすべてのSQL文を除外するには、「これらの操作に関連付けられているすべてのSQL文を除外する」を選択します。

  2. 「アクション」フィールドでアクションを入力します。このアクションに関連するSQL文が含まれるか除外されます。

13.1.4 推奨オプションの指定

ワークロードに対してオプティマイザにより選択された基礎となるデータ・アクセス・メソッドを改善するために、SQLアクセス・アドバイザにより索引、マテリアライズド・ビューおよびパーティションに対する推奨事項が提供されます。これらのアクセス構造を使用すると、データベースからのデータの読取りに要する時間が削減され、ワークロードのパフォーマンスを大幅に改善できます。ただし、これらのアクセス構造を使用する利点とこれらを維持するコストのバランスを考慮する必要があります。

推奨オプションの指定手順:

  1. 初期オプションを選択します(初期オプションの選択を参照)。

  2. ワークロード・ソースを選択します(ワークロード・ソースの選択を参照)。

  3. フィルタ・オプションを定義します(フィルタ・オプションの適用を参照)。

  4. 「SQLアクセス・アドバイザ: 推奨オプション」ページの「推奨するアクセス構造」の下で、SQLアクセス・アドバイザにより推奨されたアクセス構造のタイプを選択します。

    • 索引

    • マテリアライズド・ビュー

    • パーティショニング

    この例では、前述のすべてのアクセス・タイプが選択されています。

  5. 「有効範囲」で、SQLアクセス・アドバイザを実行するモードを選択します。次のいずれかの操作を行います。

    • 「制限」を選択します。

      制限モードでは、SQLアクセス・アドバイザはワークロードで最もコストの高いSQL文に焦点を当てます。分析は早いですが、推奨事項は制限されます。

    • 「包括」を選択します。

      包括モードではSQLアクセス・アドバイザによりワークロードのすべてのSQL文が分析されます。分析には時間がかかりますが詳細な推奨事項が提示されます。

    この例では、「制限モード」が選択されています。

  6. オプションで、「拡張オプション」をクリックします。

    「拡張オプション」セクションを開きます。この項には次のサブセクションが含まれます:

    • ワークロードの分類

      このセクションでは、推奨事項が必要なワークロードのタイプを指定できます。次のカテゴリが使用可能です。

      • ワークロードの不安定性

        データ・ウェアハウスのように、主に読取り専用操作がワークロードに含まれる場合は、「問合せのみを考慮」を選択します。不安定なデータは、INSERTUPDATEおよびDELETEの各操作のパフォーマンスが重要であるオンライン・トランザクション処理(OLTP)システムで役立ちます。

      • ワークロード有効範囲

        ワークロードがすべてのアクセス構造のユースケースを表す場合は、「未使用のアクセス構造の削除を推奨」を選択します。

    • 領域制限

      索引およびマテリアライズド・ビューにより領域を多く使用するパフォーマンスが増加します。次のいずれかの操作を行います。

      • 「いいえ、すべての推奨を表示してください(領域制限なし)」を選択して領域制限をなくします。領域制限のない状態でSQLアクセス・アドバイザが起動されると、最善の可能なパフォーマンス推奨事項が作成されます。

      • 「はい、追加領域を次の値に制限します」を選択し、次に領域制限をMB、GBまたはTB単位で入力します。領域制限のない状態でSQLアクセス・アドバイザが起動されると、指定された制限を超えない領域要件のある推奨事項のみが作成されます。

    • チューニングの優先度付け

      このセクションにより、SQL文をチューニングする方法を指定できます。手順は次のとおりです。

      • 「SQL文のチューニングを優先させる条件」リストから、SQL文をチューニングする方法を選択し、「追加」をクリックします。

      • オプションで、「アクセス構造の作成コスト推奨の考慮」を選択し、頻度に対するアクセス構造の作成コストとSQL文の実行時間における改善の可能性を比較します。それ以外の場合は、作成コストは無視されます。頻繁に実行されるSQL文のために生成された特定の推奨事項が必要な場合は、このオプションを選択する必要があります。

    • デフォルトの記憶域の場所

      このセクションを使用してスキーマおよび表領域の場所が定義されたデフォルトの設定を上書きします。デフォルトでは、索引は参照する表のスキーマおよび表領域に置かれています。マテリアライズド・ビューは問合せで参照する最初の表のスキーマおよび表領域に置かれています。マテリアライズド・ビュー・ログは参照する表のスキーマのデフォルト表領域に置かれています。

  7. 「次へ」をクリックします。

    「SQLアクセス・アドバイザ: スケジュール」ページが表示されます。

  8. 次の手順に進みます(タスクおよびスケジュール・オプションの指定を参照)。

13.1.5 タスクおよびスケジュール・オプションの指定

SQLアクセス・アドバイザをスケジュールするページを使用して、SQLアクセス・アドバイザ・タスクのスケジュール・パラメータを設定または変更します。

図13-1 SQLアクセス・アドバイザ・タスクのスケジュール

図13-1の説明が続きます
「図13-1 SQLアクセス・アドバイザ・タスクのスケジュール」の説明

SQLアクセス・アドバイザ・タスクのスケジュール手順:

  1. 初期オプションを選択します(初期オプションの選択を参照)。

  2. ワークロード・ソースを選択します(ワークロード・ソースの選択を参照)。

  3. フィルタ・オプションを定義します(フィルタ・オプションの適用を参照)。

  4. 推奨オプションを指定します(推奨オプションの指定を参照)。

  5. システムで生成されたタスク名を使用しない場合は、「SQLアクセス・アドバイザ: スケジュール」ページの「アドバイザ・タスク情報」で、「タスク名」フィールドに名前を入力します。

    図13-1の例では、SQLACCESS8895797が入力されています。

  6. 「タスクの説明」フィールドに、タスクの説明を入力します。

    図13-1の例では、SQL Access Advisorが入力されています。

  7. 「ジャーナル・レベル」リストで、タスクのジャーナル・レベルを選択します。

    ジャーナル・レベルにより、タスク実行時にSQLアクセス・アドバイザのジャーナルに記録される情報量が制御されます。タスクの結果を表示する場合、この情報は「詳細」サブページに表示されます。

    図13-1の例では、「基本」が選択されています。

  8. 「タスクの有効期限(日)」フィールドに、タスクを削除する前にデータベース内で保持する日数を入力します。

    図13-1の例では、30が入力されています。

  9. 「合計時間の制限(分)」フィールドに、ジョブの実行が許可される最大の分数を入力します。

    このフィールドには、デフォルトを使用するかわりに時間を入力する必要があります。

  10. 「スケジュール・オプション」の下の「スケジュール・タイプ」リストで、タスクのスケジュール・タイプおよびタスクを実行するメンテナンス・ウィンドウを選択します。次のいずれかの操作を行います。

    • 「標準」をクリックします。

      このスケジュール・タイプにより、タスクの繰返し間隔および開始時間を選択できます。手順は次のとおりです。

      • 「タイムゾーン」フィールドにタイムゾーンのコードを入力するか、または検索アイコンをクリックしてコードを領域に移動します。

      • 「繰返し」リストで、「繰返しなし」を選択してタスクを1回のみ実行するか、または時間の単位を選択して「間隔」フィールドに単位数を入力します。

      • 「開始」の下にある「即時」を選択してすぐにタスクを開始するか、または「後で」を選択して「日付」および「時間」のフィールドを使用して指定した時刻に開始するタスクをスケジュールします。

    • 「事前定義されたスケジュールの使用」をクリックします。

      このスケジュール・タイプにより、既存のスケジュールを選択できます。次のいずれかの操作を行います。

      • 「スケジュール」フィールドに、タスクに使用されるスケジュールの名前を入力します。

      • スケジュールを検索するには、検索のアイコンをクリックします。

        「検索と選択: スケジュール」ダイアログ・ボックスが表示されます。

        必要なスケジュールを選択し、「選択」をクリックします。「スケジュール」フィールドに選択したスケジュールが表示されます。

    • 「繰返し間隔にPL/SQLを使用する標準」をクリックします。

      このスケジュール・タイプにより、タスクの繰返し間隔および実行期間(ウィンドウ)を選択できます。手順は次のとおりです。

      • 「タイムゾーン」フィールドにタイムゾーンのコードを入力するか、または検索アイコンをクリックしてコードを領域に移動します。

      • 「開始可能時間」の下にある「即時」を選択してすぐにタスクを開始するか、または「後で」を選択して「日付」および「時間」のフィールドを使用して指定した時刻に開始するタスクをスケジュールします。

      • 「繰返し間隔」フィールドに、SYSDATE+1などのPL/SQLのスケジュール式を入力します。

      • 実行画面の終了日がないことを示す場合は、「終了期限」で「終了日なし」を選択するか、または「指定された終了日」を選択して「日付」および「時間」のフィールドを使用して終了日を指定します。

    • 「事前定義されたウィンドウの使用」をクリックします。

      このスケジュール・タイプにより、既存のウィンドウを選択できます。「ウィンドウを閉じる際の停止」を選択してウィンドウを閉じるときにジョブを停止します。次のいずれかの操作を行います。

      • 「ウィンドウ」フィールドに、タスクに使用されるウィンドウの名前を入力します。

      • ウィンドウを検索するには、検索のアイコンをクリックします。

        「検索と選択: ウィンドウとウィンドウ・グループ」ダイアログ・ボックスが表示されます。

        目的のウィンドウを選択し、「選択」をクリックします。「スケジュール」フィールドに選択したウィンドウが表示されます。

    • 「イベント」をクリックします。

      手順は次のとおりです。

      • 「タイムゾーン」フィールドにタイムゾーンのコードを入力するか、または検索アイコンをクリックしてコードを領域に移動します。

      • 「イベント・パラメータ」で、「キュー名」および「条件」に値を入力します。

      • 「開始」の下にある「即時」を選択してすぐにタスクを開始するか、または「後で」を選択して「日付」および「時間」のフィールドを使用して指定した時刻に開始するタスクをスケジュールします。

      • 実行画面の終了日がないことを示す場合は、「終了期限」で「終了日指定なし」を選択するか、または「終了日指定」を選択して「日付」および「時間」のフィールドを使用して終了日を指定します。

    • 「カレンダ」をクリックします。

      手順は次のとおりです。

      • 「タイムゾーン」フィールドにタイムゾーンのコードを入力するか、または検索アイコンをクリックしてコードを領域に移動します。

      • 「カレンダ式」に、カレンダ式を入力します。

      • 「開始」の下にある「即時」を選択してすぐにタスクを開始するか、または「後で」を選択して「日付」および「時間」のフィールドを使用して指定した時刻に開始するタスクをスケジュールします。

      • 実行画面の終了日がないことを示す場合は、「終了期限」で「終了日なし」を選択するか、または「指定された終了日」を選択して「日付」および「時間」のフィールドを使用して終了日を指定します。

    図13-1の例では、スケジュール・タイプに「標準」が選択されています。このタスクは繰り返されず、すぐに開始するようにスケジュールされます。

  11. 「次へ」をクリックします。

    「SQLアクセス・アドバイザ: 確認」ページが表示されます。

    「オプション」の下に、SQLアクセス・アドバイザ・タスクの変更済のオプションのリストがあります。変更済および未変更の両方のオプションを表示するには、「すべてのオプションの表示」をクリックします。タスクのSQLテキストを表示するには、「SQL表示」をクリックします。

  12. 「発行」をクリックします。

    「アドバイザ・セントラル」ページが表示されます。メッセージでタスクが正常に作成されたことが通知されます。

13.2 SQLアクセス・アドバイザ推奨事項の確認

SQLアクセス・アドバイザには推奨事項がグラフィカルに表示され、リンクが示されるので、推奨事項によって改善されるSQL文を簡単に確認することができます。SQLアクセス・アドバイザによって作成された各推奨事項は、その利点を得るSQL文にリンクされます。

SQLアクセス・アドバイザの推奨事項の確認手順:

  1. SQLアクセス・アドバイザを実行して推奨事項を作成します(SQLアクセス・アドバイザの実行を参照)。

  2. データベース・ホームページにアクセスします。

    詳細は、データベースのホームページのアクセスを参照してください。

  3. 「パフォーマンス」メニューから、「アドバイザ・ホーム」を選択します。

    「データベース・ログイン」ページが表示されたら、管理者権限のあるユーザーとしてログインします。「アドバイザ・セントラル」ページが表示されます。

  4. 確認するSQLアクセス・アドバイザ・タスクを選択し、「結果の表示」をクリックします。

    タスクが表示されない場合、画面をリフレッシュする必要がある場合があります。「タスクの結果」ページが表示されます。

  5. 「サマリー」サブページを確認します。このページには、SQLアクセス・アドバイザの分析結果の概要が表示されます(SQLアクセス・アドバイザ推奨事項の確認: サマリーを参照)。

  6. 「推奨」サブページを確認します。このページには、コスト改善の順に推奨事項が表示されます(SQLアクセス・アドバイザ推奨事項の確認: 推奨事項を参照)。

  7. ワークロードで分析されたSQL文を確認します(SQLアクセス・アドバイザ推奨事項の確認: SQL文を参照)。

  8. ワークロード、タスク・オプションおよびSQLアクセス・アドバイザ・タスクの詳細を確認します(SQLアクセス・アドバイザ推奨事項の確認: 詳細を参照)。

13.2.1 SQLアクセス・アドバイザ推奨事項の確認: サマリー

「サマリー」サブページにはSQLアクセス・アドバイザによる分析の概要が表示されます。

サマリーの詳細の確認手順:

  1. 「タスクの結果」ページにアクセスします。(SQLアクセス・アドバイザ推奨事項の確認を参照)。

  2. 「サマリー」をクリックします。

    「タスクの結果」ページの「サマリー」サブページが表示されます。

    この例では「制限モード」が選択されているため、SQLアクセス・アドバイザは、すべてのSQL文ではなく最もコストの大きいSQL文を分析します。

  3. 「ワークロードの全体的なパフォーマンス」で、推奨事項の実装における向上の可能性を評価します。

  4. 「ワークロードのI/Oコスト」グラフを使用して元のワークロードのI/Oコストを新しいコストと比較します。

    この例では、推奨事項の実装によりワークロードのI/Oコストが1億710万から4310万に削減されました。

  5. 「問合せ実行時間の向上」グラフを使用して問合せ実行時間の向上を比較します。

    このグラフには、ワークロード内で推奨事項の使用により実行時間が短縮されるSQL文の割合が表示されます。SQL文は反映される向上の係数によりグラフの横軸(1倍から10倍)に沿って分類されます。反映される向上の係数に対して、向上するSQL文の割合は縦軸(0%から100%)に沿って計算されます。

    この例では、ワークロード内の約62%のSQL文では、実行時間は改善されませんが、残りの約25%では4倍以上の改善の可能性があります。

  6. 「推奨」で、「推奨操作の数を表示」をクリックします。

    次の例では、索引を2つ、マテリアライズド・ビューを4つ、マテリアライズド・ビュー・ログを4つ作成することを推奨しています。

  7. 「SQL文」で、「文の数を表示」をクリックしてSQL文のタイプを表示します。

    次の例では、25のSELECT文が分析されています。

13.2.2 SQLアクセス・アドバイザ推奨事項の確認: 推奨事項

「推奨」サブページはコストの改善幅順によりSQLアクセス・アドバイザの推奨事項をランク付けします。各推奨事項の詳細も確認できます。

推奨事項の詳細の確認手順:

  1. 「タスクの結果」ページにアクセスします。(SQLアクセス・アドバイザ推奨事項の確認を参照)。

  2. 「推奨」をクリックします。

    「推奨」サブページが表示されます。

  3. 「コスト改善順の推奨事項」グラフを使用してコストの改善幅順に推奨事項を表示します。

    「実装用の推奨の選択」で、実装ステータス、推奨事項ID、コスト改善、領域消費および各推奨事項の影響を受けたSQL文の数とともに各推奨事項がリストされます。上位推奨事項の実装により、ワークロードのパフォーマンス全体に最大限の利点が与えられます。

  4. 特定の推奨事項の詳細を表示するには、推奨事項を選択して「推奨事項の詳細」をクリックします。

    「推奨事項の詳細」ページが表示されます。スペースの都合のため、次のスクリーンショットは「アクション」表の右端の列を表示していません。表示されない列は、「表領域」および「推定使用済領域(MB)」です。

    「推奨事項の詳細」ページには特定の推奨事項に対するすべてのアクションが表示されます。

    「アクション」の下で、すべてのアクションのスキーマまたは表領域の指定を選択できます。一部のアクションで、オブジェクト名、表領域およびスキーマを変更できます。アクションのSQLテキストを表示するには、指定されたアクションの「アクション」列のリンクをクリックします。

    「推奨の影響を受けるSQL」で、SQL文のSQLテキストおよびコスト改善情報が表示されます。

  5. 「OK」をクリックします。

    「推奨」サブページが表示されます。

  6. 推奨事項のSQLテキストを表示するには、推奨事項を選択し「SQL表示」をクリックします。

    選択した推奨事項で「SQL表示」ページが表示されます。

13.2.3 SQLアクセス・アドバイザ推奨事項の確認: SQL文

「SQL文」サブページはコストの改善幅順によりワークロードにあるSQL文をランク付けします。このページを使用して、ワークロードで分析したSQL文の詳細を表示できます。

SQL文の確認手順:

  1. 「タスクの結果」ページにアクセスします。(SQLアクセス・アドバイザ推奨事項の確認を参照)。

  2. 「SQL文」をクリックします。

    「SQL文」サブページが表示されます。

  3. 「コスト改善順のSQL文」グラフを使用してワークロード内のコストの改善幅順にSQL文を表示します。

    「改善するSQL文の選択」で、各SQL文が文ID、SQLテキスト、関連する推奨事項、コスト改善および実行数とともにリストされます。

    上位SQL文に関連する推奨事項の実装にはワークロードのパフォーマンス全体に最も大きな利点があります。この例では、IDが3の推奨事項の実装により、IDが803のSQL文のコストが99.80%改善されるという大きな利点を得られます。

  4. 推奨事項のSQLテキストを表示するには、推奨事項を選択し「SQL表示」をクリックします。

    選択した推奨事項で「SQL表示」ページが表示されます。

13.2.4 SQLアクセス・アドバイザ推奨事項の確認: 詳細

「詳細」サブページには、分析に使用されるすべてのワークロード・オプションおよびタスク・オプションのリストが表示されています。また、このページを使用すると、タスクが作成されたときに使用されるジャーナル・レベルに基づいて、タスクのジャーナル・エントリのリストを参照できます。

ワークロードおよびタスクの詳細の確認手順:

  1. 「タスクの結果」ページにアクセスします。(SQLアクセス・アドバイザ推奨事項の確認を参照)。

  2. 「詳細」をクリックします。

    「詳細」サブページが表示されます。

    「ワークロードおよびタスクのオプション」で、アドバイザのタスクが作成されたときに選択されたオプションのリストが表示されます。

    「ジャーナル・エントリ」で、タスクが実行されている間にSQLアクセス・アドバイザのジャーナルに記録されたメッセージのリストが表示されます。

13.3 SQLアクセス・アドバイザ推奨事項の実装

SQLアクセス・アドバイザの推奨事項は、簡単な提案から、一連の既存の実表をパーティション化し、一連のデータベース・オブジェクト(索引、マテリアライズド・ビュー、マテリアライズド・ビュー・ログ)を実装するといった複雑なソリューションにまで及びます。実装する推奨事項を選択し、ジョブの実行がいつ必要とされるかをスケジュールできます。

SQLアクセス・アドバイザの推奨事項の実装手順:

  1. コスト・ベネフィットについてSQLアクセス・アドバイザ推奨事項を確認し、もしあればどれを実装するかを判断します。

    詳細は、SQLアクセス・アドバイザ推奨事項の確認を参照してください。

  2. 「タスクの結果」ページにアクセスします。(SQLアクセス・アドバイザ推奨事項の確認を参照)。

  3. 「推奨」をクリックします。

    「推奨」サブページが表示されます。

  4. 「実装用の推奨の選択」で、実装する推奨事項を選択して「スケジュール実装」をクリックします。

    次の例では、IDの値が1の推奨事項が選択されています。

    「スケジュール実装」ページが表示されます。

  5. システムで生成されたジョブ名を使用しない場合は、「ジョブ名」フィールドにジョブ名を入力します。

  6. エラーが発生した場合は、実装ジョブを停止する必要があるかどうかを判断します。次のいずれかの操作を行います。

    • エラーが発生した場合に処理を停止するには、「エラー時に停止」を選択します。

    • エラーが発生した場合に処理を続行するには、「エラー時に停止」の選択を解除します。

  7. 「スケジュール・オプション」の下の「スケジュール・タイプ」リストで、タスクのスケジュール・タイプおよびタスクを実行するメンテナンス・ウィンドウを選択します。次のいずれかの操作を行います。

    • 「標準」をクリックします。

      このスケジュール・タイプにより、タスクの繰返し間隔および開始時間を選択できます。手順は次のとおりです。

      • 「タイムゾーン」フィールドにタイムゾーンのコードを入力するか、または検索アイコンをクリックしてコードを領域に移動します。

      • 「繰返し」リストで、「繰返しなし」を選択してタスクを1回のみ実行するか、または時間の単位を選択して「間隔」フィールドに単位数を入力します。

      • 「開始」の下にある「即時」を選択してすぐにタスクを開始するか、または「後で」を選択して「日付」および「時間」のフィールドを使用して指定した時刻に開始するタスクをスケジュールします。

    • 「事前定義されたスケジュールの使用」をクリックします。

      このスケジュール・タイプにより、既存のスケジュールを選択できます。次のいずれかの操作を行います。

      • 「スケジュール」フィールドに、タスクに使用されるスケジュールの名前を入力します。

      • スケジュールを検索するには、検索のアイコンをクリックします。

        「検索と選択: スケジュール」ダイアログ・ボックスが表示されます。

        必要なスケジュールを選択し、「選択」をクリックします。「スケジュール」フィールドに選択したスケジュールが表示されます。

    • 「繰返し間隔にPL/SQLを使用する標準」をクリックします。

      このスケジュール・タイプにより、タスクの繰返し間隔および実行期間を選択できます。手順は次のとおりです。

      • 「タイムゾーン」フィールドにタイムゾーンのコードを入力するか、または検索アイコンをクリックしてコードを領域に移動します。

      • 「開始可能時間」の下にある「即時」を選択してすぐにタスクを開始するか、または「後で」を選択して「日付」および「時間」のフィールドを使用して指定した時刻に開始するタスクをスケジュールします。

      • 「繰返し間隔」フィールドに、SYSDATE+1などのPL/SQLのスケジュール式を入力します。

      • 実行画面の終了日がないことを示す場合は、「終了期限」で「終了日なし」を選択するか、または「指定された終了日」を選択して「日付」および「時間」のフィールドを使用して終了日を指定します。

    • 「事前定義されたウィンドウの使用」をクリックします。

      このスケジュール・タイプにより、既存のウィンドウを選択できます。「ウィンドウを閉じる際の停止」を選択してウィンドウを閉じるときにジョブを停止します。次のいずれかの操作を行います。

      • 「ウィンドウ」フィールドに、タスクに使用されるウィンドウの名前を入力します。

      • ウィンドウを検索するには、検索のアイコンをクリックします。

        「検索と選択: ウィンドウとウィンドウ・グループ」ダイアログ・ボックスが表示されます。

        目的のウィンドウを選択し、「選択」をクリックします。「スケジュール」フィールドに選択したウィンドウが表示されます。

    • 「イベント」をクリックします。

      手順は次のとおりです。

      • 「タイムゾーン」フィールドにタイムゾーンのコードを入力するか、または検索アイコンをクリックしてコードを領域に移動します。

      • 「イベント・パラメータ」で、「キュー名」および「条件」に値を入力します。

      • 「開始」の下にある「即時」を選択してすぐにタスクを開始するか、または「後で」を選択して「日付」および「時間」のフィールドを使用して指定した時刻に開始するタスクをスケジュールします。

      • 実行画面の終了日がないことを示す場合は、「終了期限」で「終了日なし」を選択するか、または「指定された終了日」を選択して「日付」および「時間」のフィールドを使用して終了日を指定します。

    • 「カレンダ」をクリックします。

      手順は次のとおりです。

      • 「タイムゾーン」フィールドにタイムゾーンのコードを入力するか、または検索アイコンをクリックしてコードを領域に移動します。

      • 「カレンダ式」に、カレンダ式を入力します。

      • 「開始」の下にある「即時」を選択してすぐにタスクを開始するか、または「後で」を選択して「日付」および「時間」のフィールドを使用して指定した時刻に開始するタスクをスケジュールします。

      • 実行画面の終了日がないことを示す場合は、「終了期限」で「終了日なし」を選択するか、または「指定された終了日」を選択して「日付」および「時間」のフィールドを使用して終了日を指定します。

    この例では、スケジュール・タイプに「標準」が選択されています。ジョブは繰り返されず、すぐに開始されるようにスケジュールされます。

  8. オプションで、「SQL表示」をクリックしてジョブのSQLテキストを表示します。

  9. 「発行」をクリックしてジョブを発行します。

  10. ジョブがすぐに開始するようにスケジュールされているか、または後で開始するようにスケジュールされているかによって、次のいずれかの操作を行います。

    • ジョブをすぐに送信した場合、およびタスクの結果ページが表示される場合は、「スケジューラのジョブ」フィールドのリンクをクリックしてジョブの表示ページを表示します。手順12に進みます。

    • ジョブが後で実行されるようにスケジュールされている場合は、手順11に進みます。

  11. 手順は次のとおりです。

    1. 「管理」メニューから、「Oracle Scheduler」を選択し、「ジョブ」を選択します。。

      「スケジューラのジョブ」ページが表示されます。

    2. 実装ジョブを選択し、「ジョブ定義の表示」をクリックします。

      選択したジョブに対する「ジョブの表示」ページが表示されます。

  12. 「ジョブの表示」ページの「操作の詳細」の下で、操作のステータスを確認します。

  13. オプションで、操作を選択して「表示」をクリックします。

    「操作の詳細」ページが表示されます。

    このページには、トラブルシューティングに使用できる情報(開始日および開始時間、実行期間、使用されるCPU時間、セッションIDなど)が含まれます。

  14. オプションとして、データベースのホームページから、「スキーマ」を選択し、次に作成されたオブジェクトのページを選択します。

    作成されるアクセス構造のタイプによって、Indexesページ、Materialized ViewsページまたはMaterialized View Logsページを使用してアクセス構造を表示できます。