0) { obj.className = "imgborder_on"; } } } function hideImage(obj) { if (obj.className.substr(0, 10) == "imgborder_") { obj.src = eyeglass.src; obj.className = "imgborder_off"; } } function showAllImages() { imgs = document.images; for (i=0; i < imgs.length; i++) { showImage(imgs[i]); } } function hideAllImages() { imgs = document.images; for (i=0; i < imgs.length; i++) { hideImage(imgs[i]); } } //-->

SQL Performance Analyzerを使用したワークロードの変更による影響の評価

目的

このチュートリアルでは、SQL Performance Analyzerを使用して予防的にチューニングする方法を説明します。

所要時間

約30分

トピック

このチュートリアルでは、以下について説明します。

 概要
 前提条件
 環境のセットアップ
 Guided Workflowの実行
 SQL Tuning Advisorの実行
 リプレイ・トライアルとチューニング済みSQLとの比較
 クリーンアップ
 まとめ

スクリーンショットの表示

 このアイコンの上にカーソルを置くと、 すべてのスクリーンショットがロードし、表示されます。 (警告:すべてのスクリーンショットが同時にロードされるため、ご使用のインターネット接続によってはレスポンス・タイムが遅くなる場合があります。)

注: 各手順に関連したスクリーンショットのみを表示する場合は、それぞれの手順にあるアイコンの上にカーソルを置いてください。 スクリーンショットをクリックすると、非表示になります。

概要

SQL Performance Analyzerは、SQL実行計画の構造に影響を与えるデータベース環境変更すべての潜在的なパフォーマンス問題を予測および防止できます。 変更には、以下のいずれか(ただし制限されません)が含まれます。

  • データベースのアップグレード
  • チューニングの推奨事項の実装
  • スキーマの変更
  • 統計情報の収集
  • データベース・パラメータの変更
  • OS/ハードウェアの変更

DBAはSQL Performance Analyzerを使用して、もっとも複雑な環境でも、上述の変更によって引き起こされるSQLパフォーマンスの変更(実行計画、統計情報)を予知できます。 開発のライフサイクルを通じて進化するアプリケーションに対し、データベース・アプリケーション開発者は、たとえばスキーマ、データベース・オブジェクト、再記述されたアプリケーションなどの変更をテストして、潜在的なパフォーマンスへの影響を抑えることができます。

また、SQL Performance AnalyzerはSQLパフォーマンス統計情報との比較もできます。

このチュートリアルでは、パッチの適用前後でSQLワークロードのパフォーマンスを比較するタスクを作成します。 アプリケーションへのパッチ適用により生じるあらゆるSQLリグレッションは、SQL Tuning Advisorでチューニングできます。これにより、システムのSQLワークロードに対して実質的な改善が施されたことを確認できます。

トピック・リストに戻る

前提条件

このチュートリアルを始める前に、次の手順を完了している必要があります。

1.

Oracle Database 11g がインストールされていること。

2.

spa.zipファイルをダウンロードし、作業ディレクトリに解凍すること。

トピック・リストに戻る

環境のセットアップ

最初に、SQL Performance Analyzerが使用する環境をセットアップする必要があります。 以下の手順を実行します。

1.

端末ウィンドウを開き、SQLファイルが含まれるディレクトリで次のコマンドを入力します。 setup_demo.shスクリプトは適切なデータベース・オブジェクトを作成し、このチュートリアルを通して使用するデータをロードします。 このスクリプトは、数分かかる場合があります。

                                           
cd /home/oracle/spa/sql_replay_100q
./setup_demo.sh
                                        

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

2.

これで、run_workload_50q.shスクリプトを実行し、ロードしたばかりのデータに対してワークロードを生成できるようになりました。 以下のスクリプトを実行します。

                                           
./run_workload_50q.sh 2
                                        

注:'2'は、スクリプト内のクエリーが実行される回数を示します。 このスクリプトは、数分かかる場合があります。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

3.

このほか、create_sts.sqlスクリプトを実行し、実行したばかりのワークロードのSQL Tuning Setを作成する必要があります。 以下のコマンドを実行します。

                                           
cd other_scripts
sqlplus apps/apps
@create_sts
                                        

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

トピック・リストに戻る

Guided Workflowの実行

Guided WorkflowはSQL Performance Analyzer Taskを作成し、手動で作成したリプレイ・トライアルを使用して、いくつかのカスタムの試験を実行します。 ここでは、新しいパッチセットをインストールしたばかりなので、いずれかのSQLの効率が低下しているかどうか確認します。 以下の手順を実行します。

1.

ブラウザを開き、次のURLを入力します。

                                           
http://<hostname>:1158/em
                                        

ユーザー名に systemを、パスワードに oracleを指定し、「 Login」をクリックします。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

2.

Software and Support」タブをクリックします。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

3.

Oracle Real Application Testingの下の「 SQL Performance Analyzer」を選択します。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

4.

SQL Performance Analyzer Workflowsの下の「 Guided Workflow」を選択します。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

5.

最初に実行するタスクは、SQL Tuning Setに基づいたSQL Performance Analyzerタスクの作成です。 このタスクの「Execute」アイコンをクリックします。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

6.

Nameに OBE1を入力し、SQL Tuning Setで懐中電灯型のアイコンをクリックします。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

7.

SQL Tuning Setで「 HR_WORKLOAD」を選択し、「 Select」をクリックします。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

8.

Create」をクリックして、SQL Performance Analyzeタスクを作成します。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

9.

これで初期の環境のSQL Tuning Setを作成およびリプレイでき、変更を加えた後に比較するための基準を作成できます。 Guided Workflowの2番目の手順で、「Execute」アイコンをクリックします。 SQL Tuning Setをリプレイすると、SQL Tuning Set内のSQLはアプリケーションを再起動することなく、環境に対して1つずつテストを実行します。

このアイコンの上にカーソルを置くと、イメージが表示されます。

10.

Nameに OBE_BEFORE_CHANGEを入力し、「 Trial environment established」のチェックボックスにチェックを入れて、「 Submit」をクリックします。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

11.

ジョブが実行されます。 ジョブが完了するまで、「 Refresh」を数回クリックします。 ジョブの実行には数分かかる場合があります。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

12.

緑色のチェックが表示されたら、ジョブは完了です。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

13.

次に、変更を実行する必要があります。 このシナリオでは、ここでパッチセットを適用します。 端末ウィンドウに戻り、 make_changes.shスクリプトを実行します。

                                           
cd ..
./make_changes.sh
                                        

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

14.

これで、パッチセットを適用したSQL Tuning Setをリプレイし、比較を実行できるようになりました。 Guided Workflowの3番目の手順で、「Execute」アイコンをクリックします。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

15.

Nameに OBE_AFTER_CHANGEを入力し、「 Trial environment established」のチェックボックスにチェックを入れて、「 Submit」をクリックします。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

16.

ジョブが実行されます。 ジョブが完了するまで、「 Refresh」を数回クリックします。 これで、2つのリプレイ・ジョブを比較できる状態になりました。 Guided Workflowの4番目の手順で、「Execute」アイコンをクリックします。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

17 .

Trial Name 1に「 OBE_BEFORE_CHANGE」が選択されており、またTrial Name 2に「 OBE_AFTER_CHANGE」が選択されていることを確認します。 Comparison Metricのデフォルト値「 Buffer Gets」を受け入れて、「 Submit」をクリックします。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

18 .

4番目のタスクが完了したら、5番目の手順の「Execute」アイコンをクリックして、比較レポートを表示します。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

19 .

パッチセットを適用すると、多くのSQLは改善されますが、ここでは小さなリグレッションが発生しています。 Regressionの棒グラフをクリックします。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

20 .

詳細を検証する必要のあるSQL文が4つあります。 ブレッドクラムをクリックして、前のウィンドウに戻ります。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

21 .

これで、SQL Tuning Advisorを実行してSQLをチューニングし、発見されたリグレッションが解消可能かどうかを判別できます。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

トピック・リストに戻る

SQL Tuning Advisorの実行

Guided Workflow時に効率の低下したSQLに対し、SQL Tuning Advisorを実行できます。 以下の手順を実行します。

1.

SQL Performance Analyzer Task Resultページで、「 Schedule SQL Tuning Advisor」をクリックします。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

2.

Tuning Task Nameに OBE_TUNE_REGRESSED_SQLと入力し、「 OK」をクリックします。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

3.

チューニング・タスクの作成に成功しました。 「 Advisor Central」ブレッドクラムをクリックします。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

4.

ジョブが完了するまで、「 Refresh」をクリックします。 これには、数分かかる場合があります。 ジョブが完了したら、「 OBE_TUNE_REGRESSED_SQL」リンクをクリックします。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

5.

各SQL文に対し、SQL Profileが推奨されたことが確認できます。 「 Implement All Profiles」をクリックします。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

6.

実装を確認するため、「 Yes」をクリックします。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

7.

SQL Profileが作成されました。 「 Advisor Central」ブレッドクラムをクリックします。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

トピック・リストに戻る

リプレイ・トライアルとチューニング済みSQLとの比較

これで、チューニングされたSQLに対してリプレイ・トライアルを比較し、リグレッションがないかどうかを確認できます。 以下の手順を実行します。

1.

SQL Performance Analyzer」リンクを選択します。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

2.

SQL Performance Analyzer Tasksで、「 OBE1」リンクを選択します。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

3.

Replay Trialsで、「 Create Replay Trial」をクリックします。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

4.

Nameに OBE_AFTER_TUNE_REGRESSED_SQLを入力し、「 Trial environment established」のチェックボックスにチェックを入れて、「 Submit」をクリックします。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

5.

SQLリプレイ・ジョブの作成に成功しました。 ジョブが完了するまで、「 Refresh」をクリックします。 これで、OBE_BEFORE_CHANGEリプレイとOBE_AFTER_TUNE_REGRESSED_SQLリプレイの比較レポートを実行できるようになりました。 「 Run Replay Trial Comparison」をクリックします。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

6.

Trial Name 1で「 OBE_BEFORE_CHANGE」を選択し、Trial Name 2で「 OBE_AFTER_TUNE_REGRESSED_SQL」を選択します。Comparison Metricで「 Buffer Gets」を選択し、「 Submit」をクリックします。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

7.

比較が作成されました。 作成したばかりのComparison Reportのサングラス型のアイコンをクリックします。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

8.

この時点で何もリグレッションがないことを確認します。 また、パフォーマンスが87%改善されるため、チューニング済みSQLを使用してパッチセットを安全に適用できます。

このアイコンの上にカーソルを置くと、イメージが表示されます。

 

トピック・リストに戻る

クリーンアップ

次の手順を実行して、環境をクリーンアップします。

1.

端末ウィンドウに戻り、 reset_demo.shスクリプトを実行します。

                                           
./reset_demo.sh
                                        

 

2.

以下のコマンドを実行し、shared_poolおよびバッファ・キャッシュをフラッシュします。

                                           
sqlplus / as sysdba
alter system flush shared_pool;
alter system flush buffer_cache;
                                        

 

3.

この時点で、このOBEチュートリアルを再度実行できます。 ただし、その際には、環境のセットアップのトピックにある手順1を実行する必要はありません。 ワークロードを実行する手順2から開始できます。

 

トピック・リストに戻る

まとめ

このチュートリアルで学習した内容は、次のとおりです。

 Guided Workflowの実行
 初期の環境を使用したSQL Tuning Setのリプレイ
 パッチを適用し、変更された環境を使用したSQL Tuning Setのリプレイ
 リプレイを比較したリグレッションの有無の確認
 SQL Tuning Advisorの実行によるリグレッションの原因であるSQLのチューニング
 チューニング済みSQLに対するリプレイ・トライアルの比較によるリグレッションが残っていないかどうかの確認

トピック・リストに戻る

 このアイコンの上にカーソルを置くと、すべてのスクリーンショットが非表示になります。


Copyright (c) Oracle Corporation 2007 All Rights Reserved
Oracle Corporation発行の「Assessing Impact of Change on Workload Using SQL Performance Analyzer」の翻訳版です。

この文書はあくまで参考資料であり、 掲載されている情報は予告なしに変更されることがあります。 万一、誤植などにお気づきの場合は、オラクル社までお知らせください。 オラクル社は本書の内容に関していかなる保証もしません。 また、本書の内容に関連したいかなる損害についても責任を負いかねます。

Oracleはオラクル社の登録商標です。
その他の会社名および製品名は、 あくまでその製品および会社を識別する目的にのみ使用されており、 それぞれの所有者の商標または登録商標です。