SQLパフォーマンス・アナライザを実行するには、データベース管理SQLパフォーマンス・ウォッチでSQLパフォーマンス・アナライザ・タスクを作成します。
SQLパフォーマンス・アナライザの分析は、2つ以上のSQL試行と1つの比較で構成されています。SQL試行では、データベース・アップグレードなどの特定の環境条件下でSQLチューニング・セットの実行パフォーマンスが取得され、この分析では、2つの試行間の環境差の影響に基づいて比較が行われます。
SQLパフォーマンス・アナライザ・タスクを作成する前に、次のことを実行する必要があります。
- リモート・データベースへの接続を確立する場合は、必ずデータベース・リンクを作成してください。データベース・リンクの作成方法は、『Oracle Database SQL言語リファレンス』のデータベース・リンクの作成に関する項を参照してください。
- 本番システムから分離されたテスト・システムを使用する場合は、次のステップを実行します。
- テスト・システムを本番環境と可能なかぎり一致するように設定するようにします。
- SQLチューニング・セットをテスト・システムに転送します。
SQLパフォーマンス・アナライザ・タスクを作成するには:
- データベースのSQLパフォーマンス監視ホーム・ページに移動します。
- 「タスク」セクションで、「作成」をクリックします。
- 「SQLパフォーマンス・アナライザ・タスクの作成」パネルで、次の手順を実行します。
- 次の一般オプションを指定します。
- 名前: タスクの名前を入力します。
- SQLチューニング・セット: 「検索」アイコン(
)をクリックして、SQLチューニング・セットを選択します。SQLチューニング・セットが使用できない場合は、「作成」をクリックして、データベース管理の診断および管理の「SQLチューニング・セット」セクションに移動し、SQLチューニング・セットを作成します。データベースの診断および管理を有効にしていない場合でも、優先資格証明を設定できます。
SQLチューニング・セットは、SQLパフォーマンス・アナライザ・タスクの入力ソースです。分析するSQLワークロードを表す本番システム上のSQL文のセットは、取得してSQLチューニング・セットに格納する必要があります。詳細は、『Oracle Databaseテスト・ガイド』のSQLワークロードの取得に関する項を参照してください。
SQLパフォーマンス・アナライザ・タスクを作成する前に診断および管理またはOracle Enterprise ManagerでSQLチューニング・セットを作成するか、SQLパフォーマンス・アナライザ・タスクの作成時に診断および管理でSQLチューニング・セットを作成できます。SQLチューニング・セットの作成方法の詳細は、次を参照してください。
ノート SQLチューニング・セットの作成に使用したデータベース・ユーザーが、SQLパフォーマンス・アナライザ・タスクの作成に使用されていることを確認する必要があります。
- 説明: オプションで、タスクの説明を入力します。
- 変更タイプ: 次のいずれかの変更タイプ・オプションを選択して、SQLパフォーマンスへの影響を判断します:
- パラメータの変更: 初期化パラメータの値を変更した場合のSQLワークロードへのパフォーマンスの影響をテストできます。このオプションを選択した場合は、「パラメータの追加」をクリックして、値を変更する初期化パラメータを追加します。
- オプティマイザ統計: オプティマイザ統計の変更によるSQLワークロードのパフォーマンスに対する影響を分析できます。このオプションにより、次のことが確立されます。
- 変更前のSQL試行で現在の統計を使用
- 変更後のSQL試行で保留中の統計を使用
ノート 「オプティマイザ統計」オプションを選択した場合は、変更後の試行オプティマイザ統計が収集され、保留として保存されていることを確認する必要があります。
- オプティマイザ・ヒントの無視: SQLワークロードのパフォーマンスに対するオプティマイザ・ヒントの影響を分析できます。このオプションにより、次のことが確立されます。
- 変更前のSQL試行でオプティマイザ・ヒントを使用
- 変更後のSQL試行ではオプティマイザ・ヒントが無視されます。
- アップグレード: あるバージョンから別のバージョンへのデータベース・アップグレードの影響を分析できます。
- 移行: ソース・データベースからターゲット・データベースへのデータ移行の影響を分析できます。
- カスタム: 作業環境に応じてタスクをカスタマイズできます。
- 次のSQLパフォーマンス・アナライザのタスク作成方法のいずれかを選択します。
- 基本: SQLパフォーマンス・アナライザ・タスクを迅速に作成でき、変更前および変更後のSQL試行は同じ構成を共有できます。「基本」オプションを選択した場合は、次を指定する必要があります:
- トライアル実行: 実行方法および時間制限を指定します:
- 実行方法: 次のオプションのいずれかを選択して、SQL試行の作成方法および生成されるコンテンツを決定します:
- SQLの実行: 実際にSQL文を実行して、SQLチューニング・セット内の各SQL文の実行計画と統計の両方を生成します。
- 計画の生成: オプティマイザを起動して、SQL文を実際に実行せずに、実行計画のみを作成します。
- ハイブリッド: 計画が変更されたSQL文を最初に検索してから、計画が変更されたSQL文をテスト実行します。これがデフォルトのオプションです。
- SQL当たりの時間制限: 次のオプションのいずれかを選択して、試行時のSQL実行の時間制限を指定します。
- 5分: SQLチューニング・セット内の各SQL文を最大5分間実行し、パフォーマンス・データを収集します。
- 無制限: SQLチューニング・セット内の各SQL文を完了まで実行し、パフォーマンス・データを収集します。実行統計の収集によって、パフォーマンス分析の精度は増しますが、実行には長い時間がかかります。1つのSQL文に長時間かかり、タスクが停頓する可能性があるため、この設定を使用することはお薦めしません。
- カスタム: 秒数、分数または時間数を指定できます。
- 比較: 比較分析の詳細を指定します:
- 比較メトリック: 比較分析に使用するメトリックを選択します。
- SQL結果セットの検証: 比較する2つの試行間の結果セットが異なるかどうかを検出するようにSQLパフォーマンス・アナライザに指示する場合に選択します。比較している2つの試行でSQL文の結果セットに相違点がある場合、SQLパフォーマンス・アナライザの比較レポートはそのようなすべてのSQL文について相違点があることを示します。デフォルトは「オン」です。
- スケジュール: 「即時」を選択してすぐにタスクを開始するか、または「後で」を選択して後でタスクをスケジュールします。
- 拡張: 変更前および変更後のSQL試行と比較構成をカスタマイズできます。「拡張」オプションを選択した場合は、次を指定する必要があります:
- 変更前の試行: 変更前のSQLパフォーマンス・データを収集するための詳細を指定します:
- 試行名: 変更前のSQL試行の名前を入力します。
- 説明: オプションで、変更前のSQL試行の説明を入力します。
- 実行方法: 次のオプションのいずれかを選択して、SQL試行の作成方法および生成されるコンテンツを決定します:
- SQLの実行: 実際にSQL文を実行して、SQLチューニング・セット内の各SQL文の実行計画と統計の両方を生成します。
- 計画の生成: オプティマイザを起動して、SQL文を実際に実行しない場合にのみ実行計画を作成します。
- ハイブリッド: 計画が変更されたSQL文を最初に検索してから、計画が変更されたSQL文をテスト実行します。これがデフォルトのオプションです。
- 実行オプション: 必要に応じて、実行オプションを確認して変更します:
- SQL当たりの時間制限: 次のオプションのいずれかを選択して、試行時のSQL実行の時間制限を指定します。
- 5分: SQLチューニング・セット内の各SQL文を最大5分間実行し、パフォーマンス・データを収集します。
- 無制限: SQLチューニング・セット内の各SQL文を完了まで実行し、パフォーマンス・データを収集します。実行統計の収集によって、パフォーマンス分析の精度は増しますが、実行には長い時間がかかります。1つのSQL文に長時間かかり、タスクが停頓する可能性があるため、この設定を使用することはお薦めしません。
- カスタム: 秒数、分数または時間数を指定できます。
- SQL取得コンパイル環境の使用: コンパイル環境をSQL文で取得する場合に選択します。これは、デフォルトで「オフ」です。
- フェッチする最大行数: 次のオプションのいずれかを選択して、フェッチする行数を指定します:
- すべての行: SQL文のすべての行をフェッチします。
- 平均: 結果行の数を、処理される行数の合計およびSQLチューニング・セット内の各SQL文の合計実行回数として計算します。
- 自動: SQLチューニング・セットで取得されたオプティマイザ環境の
optimizer_mode
パラメータの値を使用して、結果行の数を決定します。optimizer_mode
の値がALL_ROWS
の場合、すべての結果行がフェッチされます。その値がFIRST_ROWS_n
の場合、n
個の結果行がフェッチされます。
- SQLの複数実行の無効化: SQLチューニング・セット内の各SQL文を1回のみ実行する場合に選択します。デフォルトは「オン」です。
- フルDMLの実行: 行ロックの取得および行の変更を含め、DML文を完全に実行する場合に選択します。デフォルトは「オン」です。
- +カスタム・オプションの追加: カスタム実行オプションを追加する場合にクリックします。
- 変更後の試行: 変更後のSQLパフォーマンス・データを収集するための詳細を指定します:
- 試行名: 変更後のSQL試行の名前を入力します。
- 説明: オプションで、変更後のSQL試行の説明を入力します。
- 実行方法: 次のオプションのいずれかを選択して、SQL試行の作成方法および生成されるコンテンツを決定します:
- SQLの実行: 実際にSQL文を実行して、SQLチューニング・セット内の各SQL文の実行計画と統計の両方を生成します。
- 計画の生成: オプティマイザを起動して、SQL文を実際に実行しない場合にのみ実行計画を作成します。
- ハイブリッド: 計画が変更されたSQL文を最初に検索してから、計画が変更されたSQL文をテスト実行します。これがデフォルトのオプションです。
- 変更前の試行と同じオプションを使用: 変更前のSQL試行に指定されたものと同じオプションを使用する場合に選択します。これがデフォルトのオプションです。
- 試行固有のオプションの使用: 変更後のSQL試行に異なる実行オプションを指定する場合に選択します。
- 比較: 比較分析の詳細を指定します:
- 比較メトリック: 比較分析に使用するメトリックを選択します。デフォルトでは、SQL Performance Analyzerは「経過時間」を比較のメトリックとして使用します。または、このフィールドで比較する別のメトリックを選択できます。
- ワークロード影響しきい値(%): ワークロードに対するSQL文の変更影響のしきい値を示す0から100までの値を入力します。ワークロードの変更の影響がこのしきい値の絶対値より低いステートメントは変更なしとみなされます(つまり、それらの文のパフォーマンスは向上も低下することもしないと見なされます)。
- SQL影響しきい値(%): 0から100までの値を入力して、SQL文に対する変更影響のしきい値を示します。SQLの変更の影響がこのしきい値の絶対値を下回る文は変更なしとみなされます。つまり、それらの文のパフォーマンスは向上も低下することもしないと見なされます。
- 計画明細の比較: 次の計画明細比較オプションのいずれかを選択します。
- 常時: すべてのシナリオの計画を行ごとに比較します。
- 自動: 最初のSQL試行の計画ハッシュ値の計算が変更された場合、または2番目のSQL試行が使用できない場合にのみ、実行計画の行ごとの比較を実行します。
- なし: 計画のハッシュ値が不明の場合にのみ、実行計画の行ごとの比較を実行します。これはデフォルト値です。
- メトリック・デルタしきい値(%): 変更の前後のSQLパフォーマンス・メトリックの差異のしきい値を示す0から100までの値を入力します。
- SQL結果セットの検証: 比較する2つの試行間の結果セットが異なるかどうかを検出するようにSQLパフォーマンス・アナライザに指示する場合に選択します。比較している2つの試行の間でSQL文の結果セットに相違点がある場合は、該当するSQL文について、SQLパフォーマンス・アナライザ比較レポートにその違いが示されます。デフォルトでは、これは「オン」です。
- +カスタム・オプションの追加: カスタム実行オプションを追加する場合にクリックします。
- スケジュール: 「即時」を選択してすぐにタスクを開始するか、または「後で」を選択して後でタスクをスケジュールします。
- 「送信」をクリックします
データベースのSQLパフォーマンス・ウォッチ・ホーム・ページで1つ以上のSQLパフォーマンス・アナライザ・タスクを作成した後、
「データの表示」ドロップダウン・リストで選択した期間について、次のタイルのタスク関連情報をモニターできます。
- 最新比較レポート: タスクに指定された変更前および変更後SQL試行間の変更タイプのタスク・ステータスと最新の比較が表示されます。比較レポート(変更率)リンクをクリックすると、比較レポートを表示できます。比較レポートの詳細は、SQLパフォーマンス・アナライザの比較レポートの表示を参照してください。
- ステータス別タスク: SQLパフォーマンス・アナライザのタスクがドーナツ・チャートのステータス別に分類されて表示されます。「すべてのタスク」リンクをクリックして、チャートに表示されるデータをリセットします。
- 変更タイプ別のタスク: 水平棒グラフに変更タイプ別に分類されたSQLパフォーマンス・アナライザのタスクが表示されます。「すべてのタスク」リンクをクリックして、チャートに表示されるデータをリセットします。
SQLパフォーマンス・アナライザのタスクは、データベースのSQLパフォーマンス・ウォッチ・ホームページの「タスク」セクションにリストされます。タスクが多数ある場合は、「変更タイプ」および「ステータス」ドロップダウン・リストまたは「タスクまたは説明で検索」フィールドを使用してタスクをフィルタできます。タスクの説明などの追加情報を表示するには、「列」ドロップダウン・リストでオプションを選択します。
「タスク」セクションでは、次のことができます。
- タスクの名前をクリックして、SQLパフォーマンス・アナライザのタスクの詳細、実行および比較を表示し、試行や比較の作成などのタスクを実行します。詳細については、Monitor a SQL Performance Analyzer Taskを参照してください。
- タスクのアクション・アイコン(
)をクリックし、次のタスクを実行します:
- 表示: SQLパフォーマンス・アナライザのタスクの詳細を表示する場合にクリックします。
- 最新レポートの表示: クリックすると、タスクに対して生成された最新の比較レポートが表示されます。
- 削除: タスクを削除する場合にクリックします。
- 完了: SQLパフォーマンス・アナライザ・タスクの作成を完了する場合にクリックします。特定のSQLパフォーマンス・アナライザ・タスクを作成するには、手動ステップを実行する必要があるため、2つの
dbms_scheduler
ジョブが必要です。最初のジョブが完了すると、タスクにフラグが付けられ、必要な手動ステップを実行したら、「完了」をクリックして2番目のジョブの実行をトリガーし、タスクを完了します。