SQL Performance Analyzerを使用したワークロードの変更による影響の評価
このチュートリアルでは、SQL Performance Analyzerを使用して予防的にチューニングする方法を説明します。
約30分
このチュートリアルでは、以下について説明します。
このアイコンの上にカーソルを置くと、すべてのスクリーンショットがロードし、表示されます。 (警告:すべてのスクリーンショットが同時にロードされるため、ご使用のインターネット接続によってはレスポンス・タイムが遅くなる場合があります。)
注: 各手順に関連したスクリーンショットのみを表示する場合は、それぞれの手順にあるアイコンの上にカーソルを置いてください。 スクリーンショットをクリックすると、非表示になります。
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は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をチューニングし、発見されたリグレッションが解消可能かどうかを判別できます。

|
トピック・リストに戻る
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に対してリプレイ・トライアルを比較し、リグレッションがないかどうかを確認できます。 以下の手順を実行します。
| 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に対するリプレイ・トライアルの比較によるリグレッションが残っていないかどうかの確認 |
トピック・リストに戻る
このアイコンの上にカーソルを置くと、すべてのスクリーンショットが非表示になります。
|