Quest SQL Optimizer for Oracle ユーザーガイド

Quest ® SQL Optimizer
for Oracle
ユーザーガイド
8.0
© 2010 Quest Software, Inc.
ALL RIGHTS RESERVED.
本ガイドには知的財産情報が記載されており、その情報は著作権によって保護されております。本
ガイドに記載されているソフトウェアは、ソフトウェア使用許諾または守秘義務契約に下で提供され
ております。本ソフトウェアは、該当する契約の条件に準拠する場合に限り、使用およびコピーする
ことができます。形式や理由、電子通信や機械に関わらず、本ガイドの一部であっても複製および
送信を禁止します。Quest Software, Inc. からの書き込み許可なしでの、購入者以外による写真複
写や記録も禁止します。
本ドキュメント内の情報は Quest 製品に関連して規定されています。明示あるいは黙示を問わず、
禁反言あるいは別の方法で、本ドキュメントから許可を受ける知的所有権あるいは Quest 製品譲渡
に関連する知的所有権に対しては、ライセンスはありません。本製品のライセンス契約同様、Quest
条件および規約の記載を除いて、Quest は一切の責任を負いません。また、製品に関係する黙示
的法令保証の権利を放棄します。制限はありませんが、その製品は市場性、特定の目的に対する
適用度、または反侵害行為を含む黙示的保証があります。Quest は、損害が生じる可能性について
報告を受けたとしても、本ドキュメントの使用、または使用できないことから生じるいかなる、直接的、
間接的、必然的、懲罰的、特有または偶然的な障害( 無期限、利益の損失、事業中断、情報の紛失
も含む) に対しても責任を負わないものとします。Quest は、本ドキュメント内容の精密さや完全性に
ついて表明および保証しません。また、Quest は告知なしで製品使用や製品解説書を変更する権
限があります。Quest は、本ドキュメントに記載されている情報を更新する義務はありません。
本製品の使用に関する質問は、こちらにご連絡ください。
Quest Software World Headquarters
LEGAL Dept
5 Polaris Way
Aliso Viejo, CA 92656
www.quest.com
電子メールの宛先:[email protected]
地域および国際事業所の情報につきましては、当社の Web サイトを参照してください。
商標
Quest、Quest Software、Quest Software のロゴ、Benchmark Factory、Toad、T.O.A.D は、アメリカ
合衆国およびその他各国の Quest Software, Inc の商標および登録商標です。本ガイドで使用され
ている他の商標および登録商標は、各所有者の所有物です。Quest Software の登録商標の詳細
については、http://www.quest.com/legal/trademark-information.aspx を参照してください。その
他の商標および登録商標は、各所有者の所有物です。
目次
SQL Optimizer の概要
Quest SQL Optimizer for Oracle について
5
5
Optimize SQL
5
Batch Optimize
6
Scan SQL
6
Inspect SGA
6
Advise Indexes
6
Analyze Impact
6
Manage Plans
6
SQL 最適化ワークフロー
7
データベース権限
8
SQL Optimizer の使用
11
チュートリアル:Optimize SQL (SQL Rewrite)
11
ステップ 1:SQL 文を最適化する
11
ステップ 2:代替の SQL 文をテストする
11
チュートリアル:Optimize SQL (Plan Control)
12
ステップ 1:実行計画の生成および実行
12
ステップ 2:実行計画をベースラインとして展開
12
チュートリアル:Generate Indexes
13
チュートリアル:Best Practices
14
チュートリアル:Deploy Outlines
14
チュートリアル:Batch Optimize SQL
15
チュートリアル:Scan SQL
18
チュートリアル:Inspect SGA
20
チュートリアル:Advise Indexes
21
チュートリアル:Analyze Impact
22
チュートリアル: Analyze Index Impact
23
チュートリアル:Save SQL Statements to Impact Analyzer
24
Quest SQL Optimizer for Oracle ユーザーガイド
目次
4
チュートリアル:Manage Outlines
25
付録:Quest へのお問い合わせ
26
Quest サポートへのお問い合わせ
26
Quest Software へのお問い合わせ
26
Quest Software について
26
索引
27
1
SQL Optimizer の概要
Quest SQL Optimizer for Oracle について
Quest SQL Optimizer for Oracle は SQL 最適化プロセスを自動化し、SQL 文のパフォーマンスを最
大化します。SQL Optimizer は、Oracle の System Global Area (SGA) からデータベースオブジェク
ト、ファイル、または SQL 文のコレクション内にある SQL 文を分析、リライト、および評価しま
す。SQL Optimizer が問題のある SQL 文を特定すると、SQL 文を最適化し、最適化された文を含む
置換コードを提供します。
SQL Optimizer は、インデックスの最適化およびプラン変更分析のソリューションを提供します。複
数の SQL 文のインデックス推奨事項を提供し、インデックスの影響分析を実行し、そして SQL 実行
計画の代替を生成します。
SQL Optimizer を構成しているのは、次のとおりです。
Optimize SQL
Optimize SQL には、SQL Rewrite モードと Plan Control モードがあります。
SQL Rewrite
モード
説明
SQL 文の最 適
化
SQL Optimizer の Artificial Intelligence エンジンを使用して SQL シンタック
スルールを実行し、Oracle の最適化のヒントを応用して意味的に同等な
SQL 文の代替を作成します。また、ユーザー定義の文を作成して、データ
ベース環境でテストできます。詳細は、オンラインヘルプの「About
Optimizing SQL」を参照してください。
比較する SQL
文の実行
SQL 文の代替を実行して、実行の統計情報を表示します。これにより、
データベース環境に最適な SQL 文が分かります。詳細は、オンラインヘル
プの「Execute Scenarios」を参照してください。
インデックスの
生成
SQL 文のシンタックスおよびデータ構造を分析し、パフォーマンスを改善す
るインデックスを提供します。SQL Optimizer では、データベースに物理的
にインデックスを作成せずに、仮想インデックスを使用して代替を生成しま
す。詳細は、オンラインヘルプの「About Index Generation」を参照してくだ
さい。
スケーラビリテ
ィのテスト
Quest Benchmark Factory を使用して、潜在的な作業負荷条件をシミュ
レーションし、SQL 文のパフォーマンスをテストします。詳細は、オンライン
ヘルプの「Test for Scalability」を参照してください。
ベストプラクテ
ィスの活用
一般的なベストプラクティスの方法を活用し、データベースのパフォーマン
スを向上させます。詳細は、オンラインヘルプの「Best Practices」を参照し
てください。
Plan Control
モード
説明
Quest SQL Optimizer for Oracle ユーザーガイド
SQL Optimizer の概要
実行計画の生
成
元のソースコードを変更せずに、SQL 文の実行計画の代替を生成します。
詳細は、オンラインヘルプの「Generate Execution Plan」を参照してくださ
い。
ベースラインの
展開
実行計画からベースラインを作成し、これらのベースラインを展開して、最
適なデータベースのパフォーマンスを実現します。詳細は、オンラインヘル
プの「Deploy Baselines」を参照してください。
6
Batch Optimize
Batch Optimize では、ファイル、データベースオブジェクト、SQL テキスト、またはバッチプロセスの
Foglight Performance Analysis リポジトリに保存された文を送信します。Batch Optimize では SQL 文
をスキャンおよび抽出、文を最適化し、文をテストしてデータベース環境に最適な SQL 文を見つけ
ます。詳細は、オンライン ヘルプの「About Batch Optimize」を参照してください。
Scan SQL
Scan SQL は、実行せずにソースコードおよびデータベースオブジェクトで問題のある SQL 文を特
定します。そして、Scan SQL は、問題のある SQL 文を分析し、パフォーマンスのレベルに従ってカ
テゴリ化します。詳細は、オンラインヘルプの「About Scanning SQL」を参照してください。
Inspect SGA
Inspect SGA は、Oracle の SGA から SQL 文を分析します。SQL 文および実行統計を取得して SQL
パフォーマンスを確認するために使用する条件を指定できます。詳細は、オンラインヘルプ
の「About Inspect SGA」を参照してください。
Advise Indexes
Advise Indexes では、SQL 文のグループを分析し、文のグループの最適なインデックス セットを設
定します。詳細は、オンラインヘルプの「About Advise Indexes」を参照してください。
Analyze Impact
Analyze Impact を使用すると、SQL 文の実行計画および Oracle のコスト変更を追跡して、信頼でき
るデータベースのパフォーマンスを実現できます。データベースの変更から、パフォーマンスの影響
を推測します。選択した SQL 文を使用して、さまざまなデータベースシナリオをシミュレーションし、
データベースの変更に関わる影響を確認できます。データベース環境に対する変更の結果として、
実際のプランコストの変更を追跡することもできます。詳細は、オンラインヘルプの「About
Analyzing Impact」を参照してください。
Manage Plans
Manage Plans によって、SQL 文のパフォーマンスの改善に使用する、保存されたベースラインおよ
び概要を整理します。詳細は、オンラインヘルプの「About Managing Plans」を参照してください。
Quest SQL Optimizer for Oracle ユーザーガイド
SQL Optimizer の概要
7
SQL 最 適 化 ワークフロー
SQL 最適化ワークフローによって、データベース環境で最適な SQL 文が実行されることを確認で
きます。
手順
説明
問題のある
SQL の特定
Batch Optimize は、埋め込み SQL 文をデータベースオブジェクトから抽出
します。文を抽出した後、実行計画の操作を分析し、パフォーマンスの問題
を特定します。
注:
l
l
Inspect SGA を使用して動的 SQL 文を取得できます。取得した動
的 SQL 文をインスペクタファイルに保存し、Batch Optimize を使用
して文を抽出します。
Scan SQL を使用して、埋め込み SQL 文を抽出することもできます。
SQL 文の最適
化
Batch Optimize が問題のある SQL 文を特定すると、これらの文を自動的に
最適化し、一意の実行計画で文を生成します。Batch Optimize は、SQL 文
のシンタックスおよびデータベース構造を分析して文を生成します。最適化
プロセスの間、ヒントを使用することもできます。
メモ:Optimize SQL で SQL Rewrite モードを使用して、Scan SQL を使用し
て抽出された SQL 文を最適化することもできます。
代替 SQL 文の
実行
Batch Optimize が代替文を生成した後、文を自動的に実行し、データベー
ス環境に最適な文を示します。
メモ:Batch Optimize は SQL 最適化プロセスを自動化するため、生成した
文のうち最適な文だけを示します。文を Optimize SQL に送信し、使用でき
るすべての文を表示します。
SQL 文の比較
Batch Optimize は元の文と最適な文の SQL 文と実行計画を比較します。
メモ: 文を Optimize SQL に送信すると、元の SQL 文と代替文のいずれか
とを比較できます。
問題のある
SQL 文の置換
Batch Optimize は、元のソースコードを置き換えるために使用できるスクリ
プトを作成できます。
代替インデック
スの生成
SQL 文を最適化するほか、Optimize SQL で代替インデックスを生成できま
す。
メモ:Advise Indexes を使用して、SQL 文のグループ代替インデックスを生
成することもできます。
実行計画の生
成
Optimize SQL で Plan Control モードを使用して、元のソースコードを変更
せずに SQL 文に代わる実行計画を生成できます。Plan Control モードは
まず SQL 文に最適な実行計画を検出し、ベースラインとして展開します。
パフォーマンス
の変化の追跡
Analyze Impact は、データベースの変更がSQL 文のパフォーマンスに与え
る影響を、発生する前後で確認することができます。
Quest SQL Optimizer for Oracle ユーザーガイド
SQL Optimizer の概要
データベース権 限
Oracle のデータベース権限により、各ユーザーのアクセスを制限します。次の表では、特定の
Oracle データベース権限を必要とする SQL Optimizer の機能について説明します。
モジュール
機能
権限
Optimize SQL
SQL を実行
するセッショ
ンパラメー
タを変更す
る
SYS.V_$PARAMETER ビューへのアクセス権が必要で
す。
ALTER SESSION 権限が必要です。
Optimize SQL お
よび Advise
Indexes
仮想インデ
ックスの生
成
Oracle 8i 以降が必要です。
Optimize SQL お
よび Batch
Optimize
実行方法の
オプション:
サーバー設
定での実行
パッケージ SYS.DBMS_SQL が必要です。
Optimize
SQL、Advise
Indexes、および
Batch Optimize
ランタイム統
計の取得
次のビューへのアクセス権が必要です。
SYS.V_$PARAMETER
SYS.V_$MYSTAT
SYS.V_$STATNAME
時間関連統
計の取得
INIT.ORA ファイルの TIMED_STATISTICS パラメータを
TRUE に設定する必要があります。
8
Quest SQL Optimizer for Oracle ユーザーガイド
SQL Optimizer の概要
モジュール
機能
権限
Inspect SGA
収集する
SQL:SQL
領域から実
行する SQL
次のビューへのアクセス権が必要です。
SYS.V_$SQLAREA
SYS.V_$SQLTEXT_WITH_NEWLINES (または Oracle
のバージョンに応じて SYS.V_$SQLTEXT)
Oracle 9 以降の SYS.V$_SQL_PLAN ビューにアクセス
する必要があります。
収集する
SQL:現在実
行している
SQL
次のビューへのアクセス権が必要です。
SYS.V_$OPEN_CURSOR
SYS.V_$SESSION
SYS.V_$SQLAREA
SYS.V_$SQLTEXT_WITH_NEWLINES (または Oracle
のバージョンに応じて SYS.V_$SQLTEXT)
Oracle 9 以降の SYS.V$_SQL_PLAN ビューにアクセス
する必要があります。
Oracle 共有
プールを更
新
ALTER SYSTEM 権限が必要です。
実行計画の
情報
Oracle 9 以降が必要です。
SYS.V_$SQL_Plan ビューへのアクセス権が必要です。
Advise Indexes
仮想インデ
ックスの生
成
Oracle 8i 以降が必要です。
Manage Plans
ストアドアウ
トラインの作
成および管
理
Oracle 8i 以降が必要です。
CREATE ANY OUTLINE および DROP ANY OUTLINE
権限が必要です。
SYS.OUTLN_PKG パッケージへのアクセス権が必要で
す。
9
Quest SQL Optimizer for Oracle ユーザーガイド
SQL Optimizer の概要
モジュール
機能
10
権限
次のビューへのアクセス権が必要です。
OUTLN.OL$
SYS.USER_OUTLINES
SYS.USER_OUTLINE_HINTS または SYS.DBA_
OUTLINES
SYS.DBA_OUTLINE_HINTS
次のビューへの更新権限が必要です。
OUTLN.OL$
OUTLN.OL$HINTS
Oracle 9i 以降の場合 OUTLN.OL$NODES ビューへの
更新権限が必要です。
保存された概要カテゴリを有効にするには、ALTER
SYSTEM 権限が必要です。
すべてのモジ
ュール
トレース設
定オプショ
ン:
Oracle ト
レース統計
の収集を有
効化
ALTER SESSION 権限が必要です。
全般
Oracle 8 以降の Oracle 初期パラメータ O7_
DICTIONARY_ACCESSIBILITY が False に設定されて
いる場合、SELECT ANY TABLE 権限がある場合で
も、SYS のオブジェクトにアクセスできません。この場
合、SYS のオブジェクトにアクセスするには、SELECT
ANY DICTIONARY 権限または SELECT_CATALOG_
ROLE が必要です。
2
SQL Optimizer の使用
チュート リアル:Optimize SQL (SQL Rewrite)
Optimize SQL での SQL Rewrite モードの使用は 2 つのステップで構成されています。最初のステ
ップで、SQL Optimizer はオリジナルの SQL 文の独自の実行計画で意味的に同等の文を生成しま
す。生成された各文の Oracle のコスト見積もりが表示されます。2 番目のステップで、SQL
Optimizer は文を実行し、文のパフォーマンスをテストします。これにより実行時間およびランタイム
統計情報が提供され、データベース環境に最適な SQL 文が分かります。
ヒント: Oracle コストでは、SQL 文を実行するためのリソース使用の推定のみを行います。コストの
高い文のパフォーマンスが高い場合があるため、生成された文を実行してデータベース環境に最
適な文を確認する必要があります。
ステップ 1:SQL 文 を最 適 化 する
1. メイン ウィンドウの [Optimize SQL] タブを選択します。
2. Optimize SQL スタート ページから SQL Rewrite を選択します。
メモ: スタート ページが表示されない場合、
Rewrite Session] をクリックしてください。
の横の矢印をクリックして [New SQL
3. [Alternative Details] パネルに SQL 文を入力します。
4.
をクリックします。 [Select Connection and Schema] ウィンドウが表示されます。
5. 使用する接続とスキーマを選択します。
6. SQL Optimizer が SQL リライト プロセスを完了した後、
SQL 文を生成された文と比較します。
をクリックして、元の
ステップ 2:代 替 の SQL 文 をテスト する
Batch Run 機能を使用して SQL Optimizer が生成する文を効率的にテストすることができます。選
択した文を実行して、実際の実行統計情報を取得できます。SQL Optimizer は、データベースから
結果セットを取得することなく、これらの統計情報を提供するため、この機能はネットワークトラフィッ
クに影響ありません。また、SELECT、 SELECT INTO、INSERT、DELETE、および UPDATE 文は
実行後にロールバックされるトランザクションで実行されるため、これらの文を使用する場合、データ
の一貫性は維持されます。
SQL 文をテストするには
1. 元の SQL 文と生成された文を比較した後、
2.
をクリックしてすべての SQL 文を実行します。
をクリックします。
Quest SQL Optimizer for Oracle ユーザーガイド
SQL Optimizer の使用
12
ヒント:
をクリックして [Optimize SQL] → [Batch Run] を選択して、文を実行する前に
Batch Run 設定を確認できます。
3. [Alternatives] パネルで実行統計情報を確認します。
チュート リアル:Optimize SQL (Plan Control)
Optimize SQL での Plan Control モードの使用は 2 つのステップで構成されています。最初のステ
ップで、SQL Optimizer ソースコードを変更せずに SQL 文の実行計画をいくつか生成します。文を
実行してランタイム統計を取得し、データベース環境に最適な文を特定することができます。2 番目
のステップでは、プランコントロールモードを使用して、Manage Plans モジュールを Oracle プランの
ベースラインとして展開できます。
メモ:このトピックでは、注意の必要な情報について重点的に説明しています。すべてのステップお
よびフィールドについて説明しているわけではありません。
ステップ 1:実 行 計 画 の生 成 および実 行
1. メイン ウィンドウの [Optimize SQL] タブを選択します。
2. Optimize SQL スタート ページから [Plan Control] を選択します。
メモ: スタート ページが表示されない場合、
Control Session] をクリックしてください。
の横の矢印をクリックして [New Plan
3. [Original SQL] パネルに SQL 文を入力します。
ヒント: SQL 文が PL/SQL ブロックから生成されている場合、[This SQL is contained inside
a PL/SQL block] を選択します。このチェックボックスをオンにすると、作成したベースライン
の SQL テキストがデータベース内の SQL テキストに一致します。
4.
をクリックして、SQL 文の実行計画を生成します。 [Select Connection and Schema] ウィ
ンドウが表示されます。
5. 使用する接続とスキーマを選択します。
6.
をクリックして、すべての実行計画を実行し、ランタイム統計を取得します。
7. [Plans] パネルでランタイム統計を確認し、最適な文を特定します。
ステップ 2:実 行 計 画 をベースラインとして展 開
1.
をクリックします。
2. 追加情報については、以下を確認してください。
Deploy
Select a
plan to
deploy
説明
をクリックして展開する実行計画を選択してください。
Quest SQL Optimizer for Oracle ユーザーガイド
SQL Optimizer の使用
Performance
Comparison
Mark the
plan as
説明
追加情報については、以下を確認してください。
l
l
l
3.
13
Enabled: この計画を有効するか無効にするかを選択します。
Fixed: この計画を固定として展開するか非固定として展開す
るかを選択します。
Not Auto-Purged: 使用されていない場合は、自動パージす
るかどうかを選択します。
Plan name
計画名を入力します。
Description
この計画の説明を入力します。
をクリックしてプランを Manage Plans に展開します。
チュート リアル:Generate Indexes
SQL Optimizer は、SQL シンタックス、テーブル間の関係、データの選択性を分析した後、SQL 文
のインデックスの代わりに使用する列を特定します。SQL Optimizer は特定されたインデックスをイ
ンデックスセットに結合します。
代替のインデックスを生成するには
1. メイン ウィンドウの [Optimize SQL] タブを選択します。
2. [Alternative Details] パネルに SQL 文を入力します。
3.
をクリックします。 [Select Connection and Schema] ウィンドウが表示されます。
4. 使用する接続とスキーマを選択します。
5. [SQL Information] パネルの [Index Details] を選択して、インデックス生成情報を表示し
ます。
6. [Alternatives] パネルでテストするインデックスを選択します。
7.
をクリックします。
メモ: Execute 機能を使用して、SQL Optimizer が生成したインデックスセットをテストできま
す。データベースにインデックスを物理的に作成、SQL 文を実行、実行統計情報を取得、イ
ンデックスを削除することができます。このプロセスによってインデックスを物理的に作成する
ため、他の SQL 文のパフォーマンスに影響を与える場合があります。
Quest SQL Optimizer for Oracle ユーザーガイド
SQL Optimizer の使用
14
チュート リアル:Best Practices
Best Practices を使用して、SQL 文とデータベースを分析し、データベースのパフォーマンスを改
善するのに一般的な手法を推奨します。推奨する手法がデータベースの他の文のパフォーマンス
に影響を与える場合もあるため、実行する前に推奨する手法を確認およびテストする必要がありま
す。推奨する手法を評価する場合、次によってデータベースのパフォーマンスが影響を受けることを
考慮してください。
l
システム リソース (CPU、I/O、メモリ、データベース構造など)
l
データの分散度
l
システム構造
l
SQL 実行計画
l
ユーザの使用状況
メモ: Best Practices 機能は、Optimize SQL の SQL Rewrite モードでのみ使用できます。
Best Practices を表示するには
1. メイン ウィンドウの [Optimize SQL] タブを選択します。
2.
をクリックします。
ヒント: [Best Practices] を表示するには、
をクリックし、[Optimize SQL] → [Best
Practices] → [General] を選択し、[Display Best Practices tab in SQL Rewrite mode] チェック
ボックスをオンにします。
3. [Alternative Details] パネルに SQL 文を入力します。
4.
をクリックします。 [Select Connection and Schema] ウィンドウが表示されます。
5. 使用する接続とスキーマを選択します。
6. 推奨された手法を確認します。
チュート リアル:Deploy Outlines
Optimize SQL の Deploy Outline 機能を使用して、元のソースコードを変更せずに SQL 文のパフ
ォーマンスを改善できます。Optimize SQL を使用して、代替の実行計画を使用して、元の SQL 文と
意味的に同等の文である SQL 文を生成できます。データベース環境に最適な文を特定すると、スト
アドアウトラインとして展開し、元の SQL 文とともに使用できます。
アウトラインとして展開するには
1. メイン ウィンドウの [Optimize SQL] タブを選択します。
2.
の横にある矢印をクリックして [New SQL Rewrite Session] をクリックしてください。
3. [Alternative Details] パネルに元の SQL 文を入力して、
をクリックします。 [Select
Quest SQL Optimizer for Oracle ユーザーガイド
SQL Optimizer の使用
15
Connection and Schema] ウィンドウが表示されます。
4. 使用する接続とスキーマを選択します。
5. [Alternatives] パネルでアウトラインとして展開する文を右クリックし、[Deploy Outline] を選択
します。[Deploy Outline] ウィンドウが表示されます。
6. 追加情報については、以下を確認してください。
Outline name
保存されたアウトラインの名前を入力します
Category
をクリックして以前作成されたカテゴリを選択するか、新しいカテゴ
リ名を入力します。
注:
l
l
7.
デフォルトのカテゴリ名は SQL_OPTIMIZIER です。
アウトラインを使用するしないに関わらず、SQL 文をテストす
るまで無効なカテゴリにアウトラインを追加できます。
をクリックします。
メモ: Manage Plans の Outline Management 機能を使用して、カテゴリを有効および無効にしたり、ア
ウトラインを他のカテゴリに移動することができます。
チュート リアル:Batch Optimize SQL
このトピックでは、注意の必要な情報について重点的に説明しています。すべてのステップおよび
フィールドについて説明しているわけではありません。
SQL を一括で最適化するには
1. メイン ウィンドウの [Batch Optimize] タブを選択します。
2. [Batch Job List] パネルの [Add Code to Optimize] をクリックして [All Types] を選択しま
す。[Add Batch Optimize Jobs] ウィンドウが表示されます。
3. 追加情報については、以下を確認してください。
[Connection]
ページ
Connection
説明
以前作成されたデータベース接続を選択するには
ださい。
ヒント:
l
l
[Database
説明
をクリックしてく
をクリックして Connection Manager を開き、新しい接続を
作成してください。
接続を選択して、Batch Optimize が生成する SQL 文を実行
することができます。
Quest SQL Optimizer for Oracle ユーザーガイド
SQL Optimizer の使用
16
Objects] ペー
ジ
Database
objects
スキーマ、データベース オブジェクト タイプ、個別のデータベース オ
ブジェクトを選択し、
をクリックしてオブジェクトを追加します。
ヒント:
l
l
Execute
using
schema
[Source
Code] ページ
Source
code type
Add by file
Add by
directory
データベース オブジェクトを参照するには
ださい。
をクリックしてく
データベース権限により選択したすべてのデータベース オブ
ジェクトをスキャンできるかどうかを決定します。
をクリックして SQL 文を実行するスキーマを選択します。
説明
[Text/Binary files]、[Oracle SQL *Plus Script] または [COBOL
programming source code] をクリックして、スキャンするファイルまたは
ディレクトリのソース コード タイプを指定します。
をクリックして、追加したいファイルを参照します。
をクリックして、追加したいディレクトリを参照します。
メモ:[Include Sub-directory] チェックボックスをオンにして、サブディ
レクトリをスキャンします。
Scan using
schema
をクリックして、スキャンするスキーマを選択します。
Execute
using
schema
をクリックして SQL 文を実行するスキーマを選択します。
[SQL Text]
ページ
SQL text
説明
SQL 文のテキストを入力します。
Scan using
schema
をクリックして、スキャンするスキーマを選択します。
Execute
using
schema
をクリックして SQL 文を実行するスキーマを選択します。
[Scan SQL]
ページ
Group
説明
スキャンする SQL 文を含むスキャナグループを選択します。
Quest SQL Optimizer for Oracle ユーザーガイド
SQL Optimizer の使用
Scan using
schema
をクリックして、スキャンするスキーマを選択します。
Execute
using
schema
をクリックして SQL 文を実行するスキーマを選択します。
[Inspect
SGA] ページ
Group
説明
スキャンする SQL 文を含むインスペクタ グループを選択します。
Scan using
schema
をクリックして、スキャンするスキーマを選択します。
Execute
using
schema
をクリックして SQL 文を実行するスキーマを選択します。
[Foglight
Performance
Analysis for
Oracle] ペー
ジ
Select a
database to
search for
the
repository
used to
store
captured
SQL
17
説明
をクリックして以前作成されたデータベース接続を選択し、[Check
for PA Repository] をクリックしてリポジトリを検索します。
ヒント:
をクリックして Connection Manager を開き、新しい接続を
作成してください。
メモ: Batch Optimize を使用して、バッチに構成することによってジョブを管理できま
す。[Batch Info] ページを使用して、新しいバッチを作成するか、現在のジョブを既存の
バッチに追加します。
4. [Finish ]をクリックして Batch Optimize を開始します。
Batch Optimize は作成したジョブをスキャン、文を分類および最適化し、生成した SQL 文
を実行します。
注:
l
l
Batch Optimize オプション ページの [Automatically start extracting SQL when job is
added] チェックボックスをオンにすると自動的にスキャンが開始されます。Batch
Optimize は、デフォルトではこのチェックボックスはオンになっています。
Batch Optimize では、SQL 文を選択して、Batch Optimize オプション ページで選択
された分類タイプに基づいて最適化します。Batch Optimize では、デフォルトで
Quest SQL Optimizer for Oracle ユーザーガイド
SQL Optimizer の使用
18
Problematic and Complex SQL 分類タイプが選択されています。
l
Batch Optimize では、Batch Optimize オプション ページで選択された分類タイプに
基づいて生成する SQL 文を実行します。Batch Optimize では、デフォルトで
SELECT 文が選択されています。
5. [Batch Job List] パネルで [Batch List] を選択し、作成したジョブに関する情報を表示し
ます。
[Batch List] パネルは、ジョブに関する情報をバッチごとに並べ替えます。追加情報
は、[Jobs Improved] パネルに表示されます。
6. バッチ リスト ノードからバッチを選択すると、[Job List] パネルにバッチの詳細が表示され
ます。
[Job List] パネルにバッチの各ジョブのタイプ、ジョブのステータス、各ジョブの短縮時間が
表示されます。追加情報は、選択したジョブの [SQL Classification] パネルおよび [Cost and
Elapsed Time Comparison] パネルに表示されます。
ヒント: [Job List] パネルのジョブを選択して
て、置換スクリプトを生成します。
をクリックし、最適化された SQL 文を使用し
7. バッチ ノードからジョブを選択して、ジョブの詳細を表示します。
[SQL List] パネルには、選択したジョブの SQL に関する SQL 分類情報が表示されま
す。[Original SQL Text] パネルおよび [Best Alternative SQL Text] パネルを使用して、元の
SQL 文を Batch Optimize が生成した最適な文とを比較します。
ヒント: [SQL List] パネルで SQL 文を選択し、
し、すべての SQL 文を表示します。
をクリックして文を Optimize SQL に送信
チュート リアル:Scan SQL
Scan SQL を使用すると、データベースオブジェクトに埋め込まれているアプリケーションソースコー
ドや、バイナリファイルに保存されている Oracle のシステムグローバルエリアから取得した SQL 文
や、または Foglight Performance Analysis リポジトリに保存された文を自動的に抽出することによっ
て、データベース環境の問題のある SQL 文を特定することができます。Scan SQL は、実行された
文の実行計画を取得および分析し、複雑性に従って分類します。Scan SQL が問題があるまたは複
雑であるとして分類する文を Optimize SQL に送信できます。
メモ:このトピックでは、注意の必要な情報について重点的に説明しています。すべてのステップお
よびフィールドについて説明しているわけではありません。
SQL をスキャンするには
1. メイン ウィンドウの [Scan SQL] タブを選択します。
2.
をクリックして以前作成されたグループを選択するか、
新しいグループを作成します。
をクリックしてスキャンジョブの
メモ:Scan SQL を使用すると、スキャンジョブをグループに整理することによって、管理する
ことができます。
Quest SQL Optimizer for Oracle ユーザーガイド
SQL Optimizer の使用
3.
19
をクリックします。[Add Scanner Jobs] ウィンドウが表示されます。
4. 追加情報については、以下を確認してください。
[Database
Objects] ペー
ジ
Database
objects
説明
スキーマ、データベース オブジェクト タイプ、個別のデータベース オ
ブジェクトを選択し、
をクリックしてオブジェクトを追加します。
ヒント:データベース オブジェクトを参照するには
ださい。
[Source
Code] ページ
Source
code type
Add by file
Add by
directory
Scan using
schema
Inspect SGA
ページ
Group
Scan using
schema
[Foglight
Performance
Analysis for
Oracle] ペー
ジ
Select a
database to
search for
the
repository
used to
store
captured
SQL
をクリックしてく
説明
[Text/Binary files]、[Oracle SQL *Plus Script] または [COBOL
programming source code] をクリックして、スキャンするファイルまたは
ディレクトリのソース コード タイプを指定します。
をクリックして、追加したいファイルを参照します。
をクリックして、追加したいディレクトリを参照します。
メモ:[Include Sub-directory] チェックボックスをオンにして、サブディ
レクトリをスキャンします。
をクリックして、スキャンするスキーマを選択します。
説明
スキャンする SQL 文を含むインスペクタ グループを選択します。
をクリックして、スキャンするスキーマを選択します。
説明
をクリックして以前作成されたデータベース接続を選択し、[Check
for PA Repository] をクリックしてリポジトリを検索します。
ヒント:
をクリックして Connection Manager を開き、新しい接続を
作成してください。
Quest SQL Optimizer for Oracle ユーザーガイド
SQL Optimizer の使用
Scan using
schema
20
をクリックして、スキャンするスキーマを選択します。
5. [Finish ]をクリックしてスキャンを開始します。
6. [Job List] パネルからスキャンジョブを選択して、追加情報を表示します。
[Job List] パネルに表示されるのは、検出された SQL 文の数、各文の分類です。
ヒント:
ます。
7.
をクリックして異なるグループを選択し、異なるグループのスキャンジョブを表示し
[SQL List] パネルで SQL 文を選択すると、[SQL Text] パネルおよび [Execution Plan] パネ
ルに選択された文の追加情報が表示されます。
ヒント: [SQL Text] パネルの
をクリックし、選択した文を Optimize SQL に送信します。
チュート リアル:Inspect SGA
Inspect SGA Oracle の System Global Area から実行した SQL 文または Oracle のオープンカーソ
ルから現在実行している SQL 文を取得します。文を取得すると、Inspect SGA に文とランタイム統計
が表示され、データベース環境でリソースを多く使用する文を特定できます。
メモ:このトピックでは、注意の必要な情報について重点的に説明しています。すべてのステップお
よびフィールドについて説明しているわけではありません。
以前実行された SQL 文を取得するには
1. メイン ウィンドウの [Inspect SGA] タブを選択します。
注:以前実行した SQL 文を取得するには、SYS.V_$SQLAREA および SYS.V_$SQLTEXT_
WITH_NEWLINES または SYS.V_$SQLTEXT を検索する権限が必要です。
2.
3.
をクリックしてグループを選択するか、
プを作成します。
をクリックして [Group] リストに新しいグルー
をクリックします。Add Inspect SGA Job ウィザードが表示されます。
4. ウィザードで、次のフィールドを入力します。
[General
Information] ペー
ジ
Job type
[Collecting
Criteria] ページ
Collecting
Criteria
説明
[Executed SQL from SQL Area] オプションを選択します。
説明
[Top n records] オプションを選択肢、表示するレコード数を入力
します。
Quest SQL Optimizer for Oracle ユーザーガイド
SQL Optimizer の使用
First by
[Collection Time]
ページ
Collection Time
5.
21
すべてのレコードが表示されていない場合、 をクリックして
SQL 文を抽出するために使用する統計を選択します。
メモ: SGA が大きいほど処理に時間がかかります。
説明
[Start collecting when you click the Inspect button] オプションを
選択します。
をクリックして SQL 文とランタイム統計を取得します。
6. [SQL Statistics] パネルで最適化が必要な文を選択し、
をクリックします。
ヒント:Batch Optimize で Inspect SGA ジョブを追加し、コレクションですべての SQL 文
を最適化します。
チュート リアル:Advise Indexes
Advise Indexes では、SQL 文のグループを分析し、グループの最適な共通インデックス セットを
設定します。
ファイルで SQL 文を使用してインデックス セットを生成するには
1. 分析する SQL 文をファイルに追加します。
2. メイン ウィンドウの [Advise Indexes] タブを選択します。
3. [Create an Advise Indexes session] をクリックします。[Create a New Advise Indexes] ウ
ィンドウが表示されます。
4. 使用する接続を選択し、セッションの名前を入力します。
5.
をクリックしてファイルを選択します。
6.
をクリックして、SQL 文のグループの仮想インデックスのセットを生成します。
Advise Indexes は、文の実際の実行計画を取得、仮想インデックスを作成、仮想インデックス
に基づいた仮想実行計画を取得します。これにより、実際の実行計画のコストおよびオプテ
ィマイザパスを、仮想インデックスに基づいた仮想実行計画を比較することができます。
7.
をクリックして SQL 文を実行します。
Advise Indexes は、文を実行してランタイム統計を取得し、インデックスを物理的に作成して
文をもう一度実行します。Advise Indexes は実行後にインデックスを削除します。
メモ: データベースでインデックスを物理的に作成するプロセスは、他の SQL 文のパフォー
マンスに影響を与えます。
8. [Execution Statistics] をクリックして、SQL 文の実行統計を確認します。
Quest SQL Optimizer for Oracle ユーザーガイド
SQL Optimizer の使用
22
チュート リアル:Analyze Impact
Analyze Impact は、データベース環境のパフォーマンスの変化を追跡できるよう、SQL 文の実行計
画を保存します。このモジュールを使用して、発生する前後に変更の影響を確認できます。
メモ:Analyze Impact は、次のディレクトリに保存された実行計画を格納します。C:\Documents and
Settings\user\Application Data\Quest Software\version\Quest SQL Optimizer for
Oracle\Analyzer Data.
Impact Analysis を実行するには
1. メイン ウィンドウの [Analyze Impact] タブを選択します。
2.
をクリックしてグループを選択するか、 をクリックして [Group] リストに新しいグループを
作成します。Add SQL ウィザードが表示されます。
3. ウィザードで、次のフィールドを入力します。
[General]
ページ
Name
説明
SQL 文の名前を入力します。
ヒント: SQL 文を保存するフォルダを新規作成する場合は、
ックします。
[SQL
Information]
ページ
[SQL] パネ
ル
をクリ
説明
SQL 文を入力して
をクリックし、SQL シンタックスをチェックして実
行計画を取得します。
4. [Finish]をクリックして SQL 文を保存します。
メモ: 保存された SQL 文は Analyze Impact の左側の [SQL] タブに表示されます。
5. Analyze Impact の左側の [Analyzer] タブを選択します。Add Analyzer ウィザードが表示
されます。
6. ウィザードで、次のフィールドを入力します。
[General]
ページ
Name
説明
アナライザの名前を入力します。
ヒント: アナライザ保存するフォルダを新規作成する場合は、
リックします。
[SQL] ページ
説明
をク
Quest SQL Optimizer for Oracle ユーザーガイド
SQL Optimizer の使用
Select SQL
23
アナライザに追加する SQL 文のチェックボックスをオンにします。
ヒント:
をクリックして SQL 文を追加します。
7. Add Analyzer ウィザードの [Plan Snapshot] ページを選択します。[Plan Snapshot] ページを
始めて選択すると、Add Baseline Snapshot ウィザードが表示されます、.
メモ:Analyze Impact は、作成するベースライン スナップショットをアナライザの他のスナッ
プを比較します。
8. ウィザードで、次のフィールドを入力します。
[General]
ページ
Name
[Connection
Information]
ページ
Connection
説明
ベースライン スナップショットの名前を入力します。
説明
[Current Connection] オプションを選択します。
メモ: このプロセスを使用して、ベースライン スナップショットを作成した後に Add Plan
Snapshot ウィザードを終了することができます。Add Analyzer ウィザードの [Plan
Snapshot] ページの
をクリックすると、Add Plan Snapshot ウィザードが表示されま
す。
9. [Finish]をクリックしてベースライン スナップショットを保存します。
10. Add Analyzer ウィザードの [Finish] をクリックしてアナライザを保存します。[Execution Plan
Generation Summary] ウィンドウが表示されます。
11. エラーについては、[Execution Plan Generation Summary] ウィンドウの情報を確認しま
す。[OK]をクリックして、ウィンドウを閉じます。
12. [Analyzer] タブの [SQL Repository] ノードから保存した SQL 文を選択します。
ベースライン実行計画を、作成した各スナップショットの実行計画を比較します。
13. [Analyzer] タブの [Snapshot Diagnostics] ノードで作成したスナップショットを選択します。
作成した各スナップショットの保存した SQL 文のパフォーマンスの変化に関する概要を確
認できます。
チュート リアル: Analyze Index Impact
データベースにインデックスを物理的に作成する前に、SQL 文の実行計画に対する新しいインデッ
クス作成の影響を分析できます。まず Analyze Impact を使用して、SQL 文の現在の実行計画を保
存します。仮想インデックスを作成し、インデックス作成の前後で実行計画を比較して、影響を確認
できます。Optimize SQL または Advise Indexes からインデックスの影響の分析を実行できます。
Quest SQL Optimizer for Oracle ユーザーガイド
SQL Optimizer の使用
24
インデックスの影響の分析を実行するには
1. Analyze Impact でアナライザを作成します。 詳細は、オンライン ヘルプの "チュートリア
ル:Analyze Impact" を参照してください。
2. Optimize SQL のインデックス生成機能を使用して、インデックスを生成します。 詳細は、オ
ンライン ヘルプの "チュートリアル:Generate Indexes" を参照してください。
3. Optimize SQL の [Alternatives] パネルで分析に使用する仮想インデックスを選択します。
4. Optimize SQL で
が表示されます。
5.
をクリックします。Analyze Impact に [Select a Group] ウィンドウ
をクリックして分析する SQL リポジトリを含むグループを選択します。Impact Analysis Add Snapshot ウィザードが表示されます。
6. ウィザードで、次のフィールドを入力します。
[General]
ページ
[Analyzer]
ウィンドウ
[Connection
Information]
ページ
Connection
[Virtual
Indexes] ペー
ジ
Virtual
Indexes
説明
Analyzer ノードから以前作成されたアナライザを選択します。
説明
[Current Connection] オプションを選択します。
説明
分析に必要な場合、追加のインデックスセットを選択します。
7. [Finish]をクリックしてウィザードを終了します。
チュート リアル:Save SQL Statements to Impact
Analyzer
SQL 文を Analyze Impact SQL リポジトリに保存して、異なるデータベース環境での SQL 文実行計
画に対する変更を追跡および分析できます。これにより、さまざまなデータベース環境の全体のパフ
ォーマンスに与える影響を確認できます。
SQL 文を SQL リポジトリに保存するには
1. Scan SQL または Inspect SGA でジョブを選択します。
2. Scan SQL または Inspect SGA で
をクリックします。Analyze Impact に [Select a Group]
Quest SQL Optimizer for Oracle ユーザーガイド
SQL Optimizer の使用
25
ウィンドウが表示されます。
3.
をクリックして SQL 文のグループを選択します。Save SQL to Analyze Impact ウィ
ザードが表示されます。
4. SQL 文のウィザードの [General] ページの SQL ウィンドウで、フォルダを選択します。
ヒント:
をクリックして SQL 文の新しいフォルダを作成します。
チュート リアル:Manage Outlines
[Outline Management] には、Optimize SQL で SQL Rewrite モードを使用して展開されたアウト
ラインが表示されます。
Manage Outlines を実行するには
1. メイン ウィンドウの [Manage Plans] タブを選択します。
ヒント: [Manage Plans] オプションページの [Show Manage Plans] チェックボックスをオンに
すると、メインウィンドウに [Manage Plans] タブが表示されます。
2. [Manage Plans] をクリックします。[Create a New Manage Plans Session] ウィンドウが表
示されます。
3. 使用する接続を選択します。
4. [Outlines Management]タブを選択します。
5. [Category/Outline] パネルでカテゴリを選択します。
選択したカテゴリを有効化、削除、または名前を変更することができます。
6. カテゴリノードから保存されたアウトラインを選択します。
選択した保存カテゴリを移動、名前変更することができます。
付録:Quest へのお問い合わせ
Quest サポート へのお問 い合 わせ
Quest サポートは、Questソフトウェアの体験版をお持ちのお客様、または市販版をご購入になり、
有効なメンテナンス契約を結ばれたお客様が利用できます。Quest サポートは、弊社のセルフサー
ビスポータルである SupportLink で、24 時間年中無休で対応しておりま
す。http://support.quest.com の SupportLink へアクセスしてください。
SupportLink では、次のことを実行できます。
l
オンラインの Knowledgebase で多くのソリューションを利用
l
最新のリリースおよびサービスパックをダウンロード
l
サポートケースを作成、更新およびレビュー
サポート プログラム、オンライン サービス、連絡方法、およびポリシーと手順の詳細は、『Global
Support Guide』を参照してください。このガイドは次の場所にあります。http://support.quest.com
Quest Software へのお問 い合 わせ
電子メールの宛先
[email protected]
住所
Quest Software, Inc.
本社
5 Polaris Way
Aliso Viejo, CA 92656
USA
Web サイト
www.quest.com
地域および国際事業所の情報につきましては、当社の Web サイトを参照してください。
Quest Software について
Quest Software は、 世界中の 100,000 を超えるお客様の IT 管理の簡略化、コスト削減に貢献して
います。当社の革新的ソリューションによって、困難な IT 管理上の問題を容易に解決し、お客様の
物理、仮想、クラウド環境に費やす時間および費用の負担を軽減しています。Quest の詳細につい
ては、www.quest.com をご覧ください。
索引
インデックスのアドバイス
チュートリアル
21
インデックスの影響の分析
D
チュートリアル
deploy outline
チュートリアル
14
23
インデックス生成
チュートリアル
13
M
カ行
Manage Outlines
チュートリアル
25
権限、データベース
サ行
O
実行
optimize SQL
について
5
SQL Optimizer チュートリアル
データベース権限
Scan SQL
チュートリアル
11
タ行
S
18
SGA の調査
8
ハ行
プランコントロール
チュートリアル
20
SQL Optimizer
チュートリアル
12
ベスト プラクティス
チュートリアル
11
について
チュートリアル
14
5
マ行
SQL の最適化
batch optimize
18
SQL Optimizer チュートリアル
11
パフォーマンスの評価
SQL 文のテスト
7
7
ア行
アナライザ
影響の分析チュートリアル
22
一括最適化
チュートリアル
8
15
問題のある SQL の特定
検索するプロセス
7