19
Oracle Database 11g SQL Plan Management Oracle ホワイト・ペーパー 2007 6

Oracle Database 11gのSQL Plan Management Database 11gのSQL Plan Management ご注意: 2 はじめに 4 SQL PLAN MANAGEMENT

  • Upload
    doantu

  • View
    220

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Oracle Database 11gのSQL Plan Management Database 11gのSQL Plan Management ご注意: 2 はじめに 4 SQL PLAN MANAGEMENT

Oracle Database 11g の SQL Plan Management

Oracle ホワイト・ペーパー 2007 年 6 月

Page 2: Oracle Database 11gのSQL Plan Management Database 11gのSQL Plan Management ご注意: 2 はじめに 4 SQL PLAN MANAGEMENT

ご注意:

本書は、オラクルの一般的な製品の方向性を示すことが目的です。また、情報提

供を唯一の目的とするものであり、いかなる契約にも組み込むことはできません。

下記の事項は、マテリアルやコード、機能の提供を確約するものではなく、また、

購買を決定する際の判断材料とはなりえません。オラクルの製品に関して記載さ

れている機能の開発、リリース、および時期については、弊社の裁量により決定

いたします。

Oracle Database 11g の SQL Plan Management

2

Oracle Corporation 発行「SQL Plan Management in Oracle Database 11g」の翻訳版です。

Page 3: Oracle Database 11gのSQL Plan Management Database 11gのSQL Plan Management ご注意: 2 はじめに 4 SQL PLAN MANAGEMENT

Oracle Database 11gのSQL Plan Management

ご注意: .............................................................................................................. 2 はじめに .............................................................................................................. 4 SQL PLAN MANAGEMENT.............................................................................. 4

SQL 計画ベースラインの取得 .................................................................... 5 自動計画取得 - "オンザフライ"............................................................ 5 バルク・ロード ....................................................................................... 6

SQL 計画ベースラインの選択 .................................................................... 9 SQL 計画ベースラインの展開 .................................................................. 10

SQL Management Base の使用および管理...................................................... 11 初期化パラメータ....................................................................................... 11 SQL Management Base の使用領域の管理 ................................................ 11

SQL PLAN MANAGEMENT の監視 ............................................................... 12 Oracle Enterprise Manager............................................................................ 12

初に ..................................................................................................... 12 init.ora パラメータ値の変更................................................................. 13 計画のバルク・ロード ......................................................................... 14 属性の変更 ............................................................................................. 15 SQL 計画ベースラインの実行計画の参照 ......................................... 15 SQL 計画ベースラインの展開............................................................. 15

DBA ビューを使用した SPM の監視........................................................ 16 自動 SQL チューニングの統合 ....................................................................... 17 結論 .................................................................................................................... 18

Oracle Database 11g の SQL Plan Management

3

Oracle Corporation 発行「SQL Plan Management in Oracle Database 11g」の翻訳版です。

Page 4: Oracle Database 11gのSQL Plan Management Database 11gのSQL Plan Management ご注意: 2 はじめに 4 SQL PLAN MANAGEMENT

SQL Plan Management

はじめに

データベース・アプリケーションのパフォーマンスは、その問合せ実行に大きく

依存します。Oracle Optimizer は、ユーザーの介入なしで 適な計画を評価するの

に非常に適しています。ただし、SQL 文の実行計画では、オプティマイザ統計の

再収集、オプティマイザ・パラメータまたはスキーマ定義やメタデータ定義の変

更など、さまざまな理由で予期しない変更が発生する可能性があります。計画が

常に良い方向に変更されるとは限らないため、実行計画(ストアド・アウトライ

ン)のフリーズやオプティマイザ統計のロックを実行する顧客もいます。しかし、

実行すると、SQL 文のパフォーマンスを向上させる新しいオプティマイザ機能や

アクセス・パスを使用できなくなります。環境の変更中に現在の実行計画を保存

し、改善される変更だけを承認することが問題の解決になります。

Oracle Database 11g は、販売されているデータベースの中でこの問題を解決する

初のデータベースです。SQL Plan Management(SPM)は、実行計画を展開する、

完全に透過的に制御されたフレームワークを提供します。SPM を使用すると、オ

プティマイザは実行計画を自動で管理し、既知の計画または検証済みの計画だけ

を使用できます。SQL 文に新しい計画がある場合、現在の計画と同等かそれ以上

のパフォーマンスを実現する計画であることがデータベースによって検証される

まで使用されません。

SQL PLAN MANAGEMENT 保証されたプラン・スタビリティと制御

された計画の展開 SQL Plan Management(SPM)は、実行計画の変更によるランタイム・パフォーマ

ンスの低下を防止します。これを実現するため、承認済みの(信頼できる)実行

計画だけを使用します。計画の展開は、後で追跡および評価され、新しい計画で

ランタイム変更が発生しない場合またはランタイムが向上する場合にのみ検証済

みとして承認されます。SQL Plan Management には、以下の 3 つの主要コンポーネ

ントがあります。

1. SQL 計画ベースラインの取得:関連するすべての SQL 文の承認済みの(信

頼できる)実行計画を示す SQL 計画ベースラインを作成します。SQL 計

画ベースラインは、SYSAUX 表領域の SQL Management Base の計画履歴

に保存されます。

2. SQL 計画ベースラインの選択:承認済みの実行計画だけが、SQL 計画ベー

スラインの文に使用されていることを確認し、文の計画履歴にあるすべて

の新しい実行計画を追跡します。計画履歴は、検証済みの計画と未承認の

計画で構成されます。未承認の計画は、未検証(新たに検索されたが、検

証されていない)または拒否(検証されたが、性能不足が明らかになった)

Oracle Database 11g の SQL Plan Management

4

Oracle Corporation 発行「SQL Plan Management in Oracle Database 11g」の翻訳版です。

Page 5: Oracle Database 11gのSQL Plan Management Database 11gのSQL Plan Management ご注意: 2 はじめに 4 SQL PLAN MANAGEMENT

されたものです。

3. SQL 計画ベースラインの展開:計画履歴の特定の文に対する未検証の実行

計画を評価して、承認または拒否を設定します。

図 0 繰り返し可能な SQL 文のステートメント・ログと計画履歴で構成される SQL

Management Base

SQL 計画ベースラインの取得

SQL Plan Management を有効にするには、現在のコスト・ベースの実行計画に SQL

Management Base を移植する必要があります。これが、各文の SQL 計画ベースラ

インになります。SQL Management Base を移入するには、以下の 2 つの方法があ

ります。

"オンザフライ"で計画を取得、カーソル・

キャッシュまたは SQL Tuning Set から

の計画とともに SPM をバルク・ロード、

または他のシステムから計画をイン

ポート。

− 実行計画の自動取得

− 実行計画のバルク・ロード

自動計画取得 - "オンザフライ"

init.ora パラメータの OPTIMIZER_CAPTURE_SQL_PLAN_BASELINES を TRUEに

設定すると、自動計画取得をオンに切り替えることができます(デフォルト値は

FALSE)。自動計画取得を有効にすると、SPM リポジトリは、繰り返し可能な SQL

文のために自動で移入されます。繰り返し可能な SQL文を識別するため、オプティ

マイザは、 初にコンパイルされる際に、各 SQL 文の ID(SQL シグネチャ)を

ステートメント・ログに格納します。SQL 文を再処理(実行またはコンパイル)

する場合、ステートメント・ログに存在する ID は、繰り返し可能な文であること

を示します。SQL 計画履歴は、文に対して作成されます。SQL テキスト、アウト

ライン、バインド変数、コンパイル環境など、実行計画を再作成するためにオプ

ティマイザによって使用される情報が含まれます。現在のコスト・ベースの計画

Oracle Database 11g の SQL Plan Management

5

Oracle Corporation 発行「SQL Plan Management in Oracle Database 11g」の翻訳版です。

Page 6: Oracle Database 11gのSQL Plan Management Database 11gのSQL Plan Management ご注意: 2 はじめに 4 SQL PLAN MANAGEMENT

は、 初の SQL 計画ベースラインとして追加されます。この計画は、承認済みと

して記録されます。承認された計画だけが使用されます。その後、新しい計画が

この SQL 文に対して使用される場合、その実行計画は計画履歴に追加され、検証

対象として記録されます。現在の SQL 計画ベースラインと同等またはそれ以上の

パフォーマンスの場合のみ、承認済みとしてマークされます。

図 1 繰り返し可能な SQL 文のステートメント・ログと計画履歴で構成される SQL

Management Base

バルク・ロード

実行計画のバルク・ロードは、データベースを以前のバージョンから Oracle

Database 11g にアップグレードする場合や新しいアプリケーションが配置されて

いる場合に特に役立ちます。バルク・ロードは、自動計画取得と連携するか、そ

の代わりとして実行できます。バルク・ロードされる実行計画は自動的に承認さ

れ、新しい SQL 計画ベースラインが作成されるか、既存の SQL 計画ベースライ

ンに追加されます。以下の 3 つの異なる技術を使用して、SQL Management Base

をバルク・ロードできます。

1. 特定の SQL Tuning Set(STS)用の実行計画の移入

2. 現在カーソル・キャッシュに格納されている実行計画の使用

Oracle Database 11g の SQL Plan Management

6

Oracle Corporation 発行「SQL Plan Management in Oracle Database 11g」の翻訳版です。

Page 7: Oracle Database 11gのSQL Plan Management Database 11gのSQL Plan Management ご注意: 2 はじめに 4 SQL PLAN MANAGEMENT

3. ステージング表からの既存の SQL 計画ベースラインのアンパック

SQL Tuning Set(STS)から

(重要な)SQL ワークロードの計画を SQL Tuning Set(STS)に取り込み、PL/SQL

プロシージャの DBMS_SPM.LOAD_PLANS_FROM_SQLSETまたは Oracle Enterprise

Managerを使用して、これらの計画をSQL計画ベースラインとしてSQL Management

Base にロードできます。次回、こうした文を実行する際に、SQL 計画ベースライ

ンが使用されます。

STS からの実行計画のバルク・ロードはデータベース・アップグレードの一

部で、計画変更の必要がない優れた方法です。以下の 4 つの手順を実行します。

1. Oracle Database 10g Release 2 で、各 SQL 文の実行計画を含む STS を作成

します。

2. STS をステージング表にロードし、ステージング表をフラット・ファイル

にエクスポートします。

3. ステージング表をフラット・ファイルから Oracle Database 11g にインポー

トし、STS をアンロードします。

4. Oracle Enterprise ManagerまたはDBMS_SPM.LOAD_PLANS_FROM_SQLSET

を使用して、実行計画をSQL Management Baseにロードします。

図 1 STS を使用したデータベース・アップグレードの SMB のバルク・ロード

Oracle Database 11g の SQL Plan Management

7

Oracle Corporation 発行「SQL Plan Management in Oracle Database 11g」の翻訳版です。

Page 8: Oracle Database 11gのSQL Plan Management Database 11gのSQL Plan Management ご注意: 2 はじめに 4 SQL PLAN MANAGEMENT

SQL計画ベースラインが作成されると、Oracle Database 10g Release 2と 11g Release 1 の間で計画を変更せずに使用できます。Oracle Database 11g のオプティマイザに

は異なる実行計画が付属しますが、この計画は計画履歴に追加され、検証対象と

して記録されます。現在の SQL 計画ベースライン(Oracle 10g Release 2 計画)と

同等またはそれ以上のパフォーマンスの場合だけ、承認済みとして記録されます。

カーソル・キャッシュから

文の計画をカーソル・キャッシュから直接 SQL Management Base にロードできま

す。モジュール名、スキーマ、または SQL_ID にフィルタを適用することで、取

得する SQL 文または SQL 文のセットを特定できます。PL/SQL プロシージャの

DBMS_SPM.LOAD_PLANS_FROM_CURSOR_CACHEまたは Oracle Enterprise Manager

を使用して、計画をロードできます。次回、こうした文を実行する際に、SQL 計

画ベースラインが使用されます。

アプリケーションの SQLが、ヒントを使用して手作業で調整されている場合、カー

ソル・キャッシュから直接ロードする方法は極めて実用的です。アプリケーショ

ンの SQL が変更されてヒントを含むようになる可能性は低いため、調整された実

行計画を SQL 計画ベースラインとして取得することで、今後アプリケーションの

SQL がその計画を必ず使用するようにできます。

ステージング表からのベースライン計画のアンパック

新しいアプリケーション・モジュールの配置は、完全に新しい SQL文がデータベー

スに導入されることを意味します。サード・パーティのソフトウェア・ベンダー

は、Oracle Database 11g とともに導入される新しい SQL の適切な SQL 計画ベース

ラインを含むアプリケーション・ソフトウェアを出荷できます。これによって、

SQL 計画ベースラインの一部であるすべての SQL 文は、標準のテスト構成で適切

なパフォーマンスを提供する計画とともに 初に実行されます。別の方法として、

アプリケーションが内部で開発またはテストされる場合、テスト・システムから

現在の計画をエクスポートし、次の手順で本番システムにインポートできます。

1. 元のシステムで、DBMS_SPM.CREATE_STGTAB_BASELINEプロシージャ

を使用して、ステージング表を作成します。

2. DBMS_SPM.PACK_STGTAB_BASELINE関数を使用して、SQL Management

Basesからエクスポートする任意のSQL計画ベースラインをステージング

表にパックします。

3. エクスポート・コマンドまたはデータ・ダンプを使用して、ステージング

表をフラット・ファイルにエクスポートします。

4. このフラット・ファイルをターゲット・システムに送信します。

Oracle Database 11g の SQL Plan Management

8

Oracle Corporation 発行「SQL Plan Management in Oracle Database 11g」の翻訳版です。

Page 9: Oracle Database 11gのSQL Plan Management Database 11gのSQL Plan Management ご注意: 2 はじめに 4 SQL PLAN MANAGEMENT

5. インポート・コマンドまたはデータ・ダンプを使用して、ステージング表

をフラット・ファイルからインポートします。

6. DBMS_SPM.UNPACK_STGTAB_BASELINE関数を使用して、SQL計画ベー

スラインをステージング表からターゲット・システムのSQL Management

Baseにアンパックします。

図 2 新しいアプリケーションを実装する場合のテスト・システムからの

SQL 計画ベースラインのインポート

SQL 計画ベースラインの選択

SQL 文をコンパイルするたびに、オプティマイザは、まず従来のコスト・ベース

の検索方法を使用して、 適なコスト計画を構築します。初期化パラメータの

OPTIMIZER_USE_PLAN_BASELINESが TRUE(デフォルト値)に設定されている

場合、コスト・ベースの計画を実行する前に、オプティマイザは SQL 文の SQL

計画ベースラインから一致する計画を検索します。メモリー内の処理として実行

されるので、アプリケーションに測定可能なオーバーヘッドは発生しません。一

致する計画がある場合、その計画で続行します。一致する計画がない場合、新し

く生成された計画が計画履歴に追加されます。この計画は、SQL 計画ベースライ

ンとして承認される前に検証する必要があります。新しく生成された計画を実行

する代わりに、オプティマイザは SQL文の承認された各計画のコストを見積もり、

もっとも低コストのものを選択します(1 つの SQL 計画ベースラインには、特定

の文に対して複数の検証済み計画および承認済み計画を使用できます)。ただし、

索引の削除などのシステム変更によって承認された計画がすべて再作成できなく

なる場合、オプティマイザは新しく生成されたコスト・ベースの計画を使用します。

SPM では、既知の計画または検証済みの

計画だけ、実行に向けて選択されます。

Oracle Database 11g の SQL Plan Management

9

Oracle Corporation 発行「SQL Plan Management in Oracle Database 11g」の翻訳版です。

Page 10: Oracle Database 11gのSQL Plan Management Database 11gのSQL Plan Management ご注意: 2 はじめに 4 SQL PLAN MANAGEMENT

図 3 SPM で SQL 実行計画を選択する方法

SQL 計画ベースラインから計画を選択している場合、オプティマイザの計画の選

択に影響する可能性もあります。SQL 計画ベースラインは、固定として記録でき

ます。固定 SQL 計画ベースラインは、任意のオプティマイザを示します。オプティ

マイザが SQL 計画ベースラインのコストを見積もり、計画のいずれかが固定され

ている場合、オプティマイザは、固定計画だけを見積もり、再作成可能な場合に

その計画を使用します。固定計画が再作成できない場合、オプティマイザは、戻っ

て残りの SQL 計画ベースラインを見積もり、もっとも低コストのものを選択しま

す。計画の見積もりは、厳密な解析ほど高価ではありません。オプティマイザは、

すべての可能なアクセス方法ではなく単一の特定のアクセス・パスを参照します。

SQL 計画ベースラインの展開

オプティマイザは SQL 文の新しい計画を検出すると、承認済みの計画になる前に

検証する必要のある未承認の計画として、その計画が計画履歴に追加されます。

Oracle Enterprise Manager またはコマンドライン関数の DBMS_SPM.EVOLVE_SQL_

PLAN_BASELINE を使用して、SQL 文の実行計画を展開できます。これらの方法

のいずれかを使用する場合、3 つの選択肢があります。

計画は、必要に応じて、手作業で展開ま

たは検証できます。または、展開プロセ

スを実行するようにデータベース・ジョ

ブをスケジュールできます。

Oracle Database 11g の SQL Plan Management

10

Oracle Corporation 発行「SQL Plan Management in Oracle Database 11g」の翻訳版です。

Page 11: Oracle Database 11gのSQL Plan Management Database 11gのSQL Plan Management ご注意: 2 はじめに 4 SQL PLAN MANAGEMENT

1. 既存の SQL 計画ベースラインよりもパフォーマンスが優れている場合だ

け計画を承認する。

2. パフォーマンスを検証せずに計画を承認する。

3. パフォーマンスを比較し、新しい計画を展開せずにレポートを生成する。

オプション 1 を選択すると、新しい計画のパフォーマンスが、選択された計画の

パフォーマンス以上であるかどうかを評価します。十分なパフォーマンスの場合、

新しい計画は承認された計画として SQL 計画ベースラインに追加されます。パ

フォーマンスが不足している場合、新しい計画は、未承認の計画として計画履歴

に残りますが、LAST_VERIFIED 属性は、現在のタイムスタンプで更新されます。

フォーマットされたテキスト・レポートは、関数によって返されます。これには、

新しい計画と元の計画のパフォーマンス統計を並べた表示と関数によって実行さ

れるアクションが含まれます。

オプション 2 を選択すると、新しい計画が、承認された計画としてパフォーマン

スの検証なしに SQL計画ベースラインに追加されます。レポートも生成されます。

3 を選択すると、新しい計画のパフォーマンスについて選択された計画のパフォー

マンス以上であるかどうかが評価されますが、同等以上のパフォーマンスである

場合は自動で承認されません。評価の後、レポートのみが生成されます。

SQL Management Base の使用および管理

初期化パラメータ

SQL Plan Management を制御する 2 つの init.ora パラメータがあります。

optimizer_capture_sql_plan_baselines は、繰り返し可能な SQL 文の新

しい SQL 計画ベースラインの自動取得を制御します。Oracle Database 11g Release 1

のデフォルト値は false です。

optimizer_use_sql_plan_baselines は、SQL 計画ベースラインの使用を制

御します。有効な場合、オプティマイザは、コンパイルされる SQL 文の SQL 計

画ベースラインの計画を検索します。検出されると、オプティマイザは、SQL 計

画ベースラインの各計画を見積もり、もっとも低コストのものを選択します。

Oracle Database 11g Release 1 のデフォルト値は true です。

SQL Management Base の使用領域の管理

ステートメント・ログ、計画履歴、および SQL 計画ベースラインは、SQL Management

Base に保存されます。SQL Management Base は、SYSAUX 表領域に保存されるデー

タベース・ディクショナリの一部です。SQL Management Base のデフォルトの領

域制限は、SYSAUX 表領域のサイズの 10%までです。ただし、PL/SQL プロシー

ジャの DBMS_SPM.CONFIGUREを使用することで、1~50%の間に制限を変更でき

ます。週単位のバックグラウンド・プロセスは、SQL Management Base が占有す

る領域を測定します。定義された制限を超える場合、プロセスはアラート・ログ

に警告を生成します。

SQL Management Base 内の SPM によって、使用されるディスク領域を管理する週

単位のスケジュールのパージング・タスクも存在します。このタスクは、メンテ

Oracle Database 11g の SQL Plan Management

11

Oracle Corporation 発行「SQL Plan Management in Oracle Database 11g」の翻訳版です。

Page 12: Oracle Database 11gのSQL Plan Management Database 11gのSQL Plan Management ご注意: 2 はじめに 4 SQL PLAN MANAGEMENT

ナンス・ウィンドウで自動的に実行されます。53 週以上使用されていない計画が

パージされるので、 1 年に 1 度実行される SQL 文は保護されます。

DBMS_SPM.CONFIGURE または Oracle Enterprise Manager を使用することで、未

使用の計画の保存期間を変更できます。値の範囲は 5~523 週(約 10 年)です。

SQL Management Base が SYSAUX 表領域に保存されるため、この表領域が使用で

きない場合、SPM は使用されません。

図 4 Oracle Enterprise Manager の計画保存設定の変更

SQL PLAN MANAGEMENT の監視

Oracle Database 11g の SQL Plan Management 機能を監視するため、複数の新しい

Oracle Enterprise Manager 画面と DBA ビューが導入されました。

Oracle Enterprise Manager Database Controlまたは新しいディクショナリ・ビュー

のDBA_SQL_PLAN_BASELINESのいず

れかを使用して、SPM を監視します。

Oracle Enterprise Manager

SQL 計画ベースラインのあらゆる管理と監視は、Oracle Enterprise Manager Database

Control を通じて実行できます。

最初に

SQL 計画ベースライン・ページに移動する手順

1. Oracle Enterprise Manager の Database ホームページにアクセスします。

2. ページ上部の「Server」をクリックして、Server ページを表示します。

3. Query Optimizer セクションの「SQL Plan Control」をクリックします。

4. SQL Plan Control ページが表示されます。このページの詳細については、

オンライン・ヘルプを参照してください。

5. ページ上部の「SQL Plan Baseline」をクリックして、SQL 計画ベースライ

ン・サブページを表示します。

Oracle Database 11g の SQL Plan Management

12

Oracle Corporation 発行「SQL Plan Management in Oracle Database 11g」の翻訳版です。

Page 13: Oracle Database 11gのSQL Plan Management Database 11gのSQL Plan Management ご注意: 2 はじめに 4 SQL PLAN MANAGEMENT

図 5 Oracle Enterprise Manager Database Control の SQL 計画ベースライン・ホームページ

メイン・ページで、init.ora パラメータの制御、ロードのスケジュール、ジョブの

展開、および既存の SQL 計画ベースラインの一部の属性を変更できます。

init.ora パラメータ値の変更

メインの SQL 計画ベースライン・ページの左上に、SQL Plan Management を制御

するパラメータを一覧表示する設定セクションがあります。このセクションを素

早く確認すると、自動 SQL 計画ベースライン取得がオンかどうか、または SQL

計画ベースラインが使用されているかどうかがわかります。init.ora パラメータの

値を変更する手順

1. パラメータの値をクリックします。

2. 初期化パラメータ・ページが開きます。ドロップダウン・メニューからパ

ラメータを変更する値を選択します。

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

Oracle Database 11g の SQL Plan Management

13

Oracle Corporation 発行「SQL Plan Management in Oracle Database 11g」の翻訳版です。

Page 14: Oracle Database 11gのSQL Plan Management Database 11gのSQL Plan Management ご注意: 2 はじめに 4 SQL PLAN MANAGEMENT

図 6 Oracle Enterprise Manager の SPM init.ora パラメータの設定

計画のバルク・ロード

右側の SQL計画ベースラインのリストの上にあるロード・ボタンを使用して、カー

ソル・キャッシュから計画を直接ロードできます。カーソル・キャッシュのすべ

ての文の計画をロードするか、計画のサブセットを選択することができます。

1. 「Load」ボタンをクリックします。

2. SQL 計画ベースラインのロード・ページが表示されます。ラジオ・ボタン

の"Load from the cursor cache"を選択します。

3. 1 つ以上の SQL_ID を手動で入力するか、懐中電灯アイコンをクリックし

てカーソル・キャッシュの各計画のSQL_IDとSQLのリストを表示します。

4. SQL_ID を選択した後、ジョブ・スケジュール情報(デフォルト:load

immediately)を設定します。

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

Oracle Database 11g の SQL Plan Management

14

Oracle Corporation 発行「SQL Plan Management in Oracle Database 11g」の翻訳版です。

Page 15: Oracle Database 11gのSQL Plan Management Database 11gのSQL Plan Management ご注意: 2 はじめに 4 SQL PLAN MANAGEMENT

図 7 Oracle Enterprise Manager のカーソル・キャッシュからの SQL 計画ベースラインの

バルク・ロード

属性の変更

SQL 計画ベースラインのメイン・ページから、計画ベースラインの属性を変更で

きます。属性を変更する手順

1. 計画ベースラインのチェック・ボックスをクリックします。

2. 変更する属性ボタンをクリックします。

3. 選択内容を確認するダイアログ・ボックスが表示されます。「OK」をク

リックします。

SQL 計画ベースラインの実行計画の参照

SQL 計画ベースラインの実際の実行計画を参照するには、計画名をクリックしま

す。特定の SQL 文の SQL 計画ベースラインの実行計画を参照するには、SQL テ

キストをクリックします。

SQL 計画ベースラインの展開

SQL 計画ベースラインのメイン・ページから、承認済みの計画と未承認の計画を

確認できます。未承認の計画を展開する場合

1. 計画のチェック・ボックスをクリックし、リストの上の展開ボタンを選択

します。

2. SQL 計画ベースラインの展開ページが 3 つのラジオ・ボタン・オプション

とともに開きます。

Oracle Database 11g の SQL Plan Management

15

Oracle Corporation 発行「SQL Plan Management in Oracle Database 11g」の翻訳版です。

Page 16: Oracle Database 11gのSQL Plan Management Database 11gのSQL Plan Management ご注意: 2 はじめに 4 SQL PLAN MANAGEMENT

a. Verify Performance - 未承認の計画が既存の SQL 計画ベースライン

と同等またはそれ以上のパフォーマンスであることを確認する場合

は、「YES」を選択します。未承認の計画が十分なパフォーマンスで

あることをすでに把握していてチェックを省略する場合は、「NO」

を選択します。

b. Time Limit - Verify Performance で Yes を選択した場合にのみ適用さ

れます。Auto は、未承認の計画のパフォーマンスを検証する期間を

Oracle が決定することを意味します。Unlimited は、計画検証プロセ

スを 後まで実行することを意味します。Specify は、計画検証プロ

セスの時間制限を設定する必要があることを意味します。

c. Action - 新しい計画を自動的に承認するか、または新しい計画を承認

するかどうかの決定に基づく検証プロセスの結果をレポートします。

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

4. SQL 計画ベースラインのメイン・ページが表示されます。ページの右上の

ジョブ・セクションに表示されるジョブの展開を確認できます(必要に応

じて、更新ボタンをクリックします)。

図 8 計画の展開

DBA ビューを使用した SPM の監視

DBA_SQL_PLAN_BASELINES ビューは、特定の SQL 文に対して現在作成されて

いる SQL 計画ベースラインの情報を表示します。

Oracle Database 11g の SQL Plan Management

16

Oracle Corporation 発行「SQL Plan Management in Oracle Database 11g」の翻訳版です。

Page 17: Oracle Database 11gのSQL Plan Management Database 11gのSQL Plan Management ご注意: 2 はじめに 4 SQL PLAN MANAGEMENT

上記の SELECT 文は、以下の行を返します。

この例の SQL 文には、自動的に取得された 2 つの計画があります。計画の 1 つ

(SYS_SQL_PLAN_4be)は、承認されている有効な計画なので計画ベースライン

となります。もう 1 つの計画(SYS_SQL_PLAN_1ea)は、展開または検証のため

にキューに格納されている未承認の計画です。検証するために自動で取得され、

キューに格納されます。承認された値は NO に設定されます。どちらの計画も固

定ではなく、自動パージされる可能性があります。

任意の SQL 計画ベースラインの詳細な実行計画を確認するには、プロシージャ

DBMS_XPLAN.DISPLAY_SQL_PLAN_BASELINEを使用できます。

また、V$SQL を調べることで、SQL 文が SQL 計画ベースラインを使用している

かどうかを確認できます。SQL 文が SQL 計画ベースラインを使用している場合、

その SQL 計画ベースラインから選択された計画の plan_name は、V$SQLの sql_

plan_baseline 列に存在します。次の問合せを使用して、V$SQLビューを DBA_SQL_

PLAN_BASELINESビューに結合できます。

自動 SQL チューニングの統合

Oracle Database 11g のチューニングおよび診断パックの一部である SQL Tuning

Advisor は、メンテナンス・ウィンドウで自動的に実行されます。この自動 SQL

チューニング・タスクは、高負荷な SQL 文を対象とします。このような文は、

Automatic Workload Repository(AWR)スナップショットで収集された実行パ

フォーマンス・データによって識別されます。SQL Tuning Advisor は SQL 文のよ

り適切な実行計画を検出すると、SQL プロファイルを推奨します。これらの高負

荷な SQL 文の一部では、SQL 計画ベースラインがすでに作成されている可能性が

あります。自動 SQL チューニング・タスクによる SQL プロファイルの推奨事項

が実装される場合、SQL チューニング・タスクが検出した実行計画は、承認され

た SQL 計画ベースラインとして追加されます。

Oracle Database 11g の SQL Plan Management

17

Oracle Corporation 発行「SQL Plan Management in Oracle Database 11g」の翻訳版です。

Page 18: Oracle Database 11gのSQL Plan Management Database 11gのSQL Plan Management ご注意: 2 はじめに 4 SQL PLAN MANAGEMENT

また、特定の SQL 文に SQL Tuning Set を作成して、手動で SQL Tuning Advisor を

呼び出すことができます。SQL Tuning Advisor が文の SQL プロファイルを推奨し

て手動で実装される場合、承認済みの計画として SQL 文の計画ベースラインが存

在する場合にこのプロファイルが追加されます。

結論

Oracle Database 11g の新機能である SQL Plan Management(SPM)は、実行計画の

展開を制御します。SPM を使用すると、オプティマイザは、実行計画を自動的に

管理し、既知の計画または検証済みの計画だけを使用できます。SQL 文に新しい

計画がある場合、現在の計画と同等かそれ以上のパフォーマンスを実現する計画

であることが検証されるまで使用されません。

Oracle Database 11g の SQL Plan Management

18

Oracle Corporation 発行「SQL Plan Management in Oracle Database 11g」の翻訳版です。

Page 19: Oracle Database 11gのSQL Plan Management Database 11gのSQL Plan Management ご注意: 2 はじめに 4 SQL PLAN MANAGEMENT

Oracle Database 11g の SQL Plan Management 2007 年 6 月 著者:Maria Colgan Oracle Corporation World Headquarters 500 Oracle Parkway Redwood Shores, CA 94065 U.S.A. 海外からのお問合せ窓口: 電話:+1.650.506.7000 ファクシミリ:+1.650.506.7200 www.oracle.com Copyright © 2007, Oracle. All rights reserved. 本文書は情報提供のみを目的として提供されており、ここに記載される内容

は予告なく変更されることがあります。本文書は一切間違いがないことを保

証するものではなく、さらに、口述による明示または法律による黙示を問わ

ず、特定の目的に対する商品性もしくは適合性についての黙示的な保証を含

み、いかなる他の保証や条件も提供するものではありません。オラクル社は

本文書に関するいかなる法的責任も明確に否認し、本文書によって直接的ま

たは間接的に確立される契約義務はないものとします。本文書はオラクル社

の書面による許可を前もって得ることなく、いかなる目的のためにも、電子

または印刷を含むいかなる形式や手段によっても再作成または送信すること

はできません。Oracle は米国 Oracle Corporation およびその子会社、関連会

社の登録商標です。その他の名称はそれぞれの会社の商標です。