火曜日 7 12, 2011

SQLT(SQLTXPLAIN) の紹介

今回は パフォーマンスのトラブルシューティングに有効なツール SQLT(SQLTXPLAIN) を紹介します。

SQLT(SQLTXPLAIN) とは

SQLT(SQLTXPLAIN) は単一の SQL のパフォーマンスが悪いケースにおいて、この原因を調査するための診断情報を取得し、解析しやすい形式にフォーマットするツールです。海外のエンジニアにもよく使われ、数ある診断ツールの中でも人気が高いツー ルです。サポート・サービスをご契約いただいているお客様であれば SQLT (SQLTXPLAIN) - Tool that helps to diagnose SQL statements performing poorly よりダウンロードしてご利用いただけます。

SQLT はどのような情報を取得するのか

皆様は単一 SQL のパフォーマンスの問題に遭遇した場合、どのような情報から原因の特定を試みますか? 実行計画を疑うのであれば、explain plan にて実行計画を確認したり、共有プールにロード済みのカーソルから実行計画を確認する方法があります。AWR や STATSPACK の情報が活用できる環境であれば SQL レポート等を確認するアプローチも取れるでしょう。実際に SQL の実行を試せる環境であれば、SQLトレースを取得して、tkprof ユーティリティ等を駆使して解析する方法も有効です。

SQLT もこれらの方法で情報を取得します。SQLT の SQL の解析方法には以下の3つの方法が用意され、それぞれのケースで取得対象の元となる情報が異なります。どの方法で実行するかは任意に選択できます。

  1. XECUTE
    SQL およびバインド変数の値を元に実際に SQL をハード・パースさせる方法で実行して情報を取得します。現状に即した情報を取得でき、最も多くの診断情報を取得することができる方法です。ただし、実際 に SQL を実行するため、実行負荷の高いSQL の情報を取得する場合は、情報取得時の負荷に注意してください。

  2. XTRACT
    調査対象の SQL は実行せずに、以前に実行された SQL の SQL_ID 等の情報を元に共有プールや AWR に格納されている情報から実際の情報を取得します。このため、以前に実行された SQL の情報が共有プールや AWR に残っている必要があります。あわせて、現在の状況と過去の状況では状況が異なっている可能性に注意してください。また、XECUTE よりは取得する診断情報が少なくなります。

  3. XPLAIN
    explain plan を使用して SQLの解析のみを行い情報を取得します。実際に SQL を実行するわけではないため、XECUTE よりも負荷が軽く、XTRACT のように以前に SQL を実行した時の情報が残っている必要もありませんが、取得する診断情報は XECUTE や XTRACT と比較して最も少なくなります。また、以前に発生した SQL のパフォーマンスの問題を調査することが目的の場合、以前に発生した SQL の解析時と、XPLAIN を使用した情報取得時では状況が異なっている可能性があることに注意が必要です。

そして、 SQLT は上記の方法により取得した実行計画の情報とあわせてオプティマイザやパフォーマンスの問題をトラブルシューティングするための情報を取得します。以下はその一例です。

  • システム統計情報
  • DBMS_STATS パッケージのプリファレンス設定値
  • 自動統計情報収集ジョブの設定状況
  • 統計情報の取得状況
  • 表レベル統計情報の履歴情報
  • オプティマイザに影響を与える初期化パラメータの設定値
  • NLS パラメータの情報
  • カーソルの共有状況
  • 実行された SQL の統計情報
  • 表や列、索引等のオブジェクトの統計情報
  • 表領域のパラメータ
  • オプティマイザのトレース
  • SQLトレースと SQLトレース解析ツールの結果 (XECUTEの場合のみ)
  • SQLチューニング・アドバイザの結果(適切なライセンスが必要です)
  • 別環境でテストケースを作成するための関連オブジェクトの作成スクリプト
  • 別環境にシステム統計情報やオブジェクトの統計情報を Import する為のスクリプト
  • 対象の SQL 文

取得情報の詳細は SQLT に同梱されている SQLTXPLAIIN.pdf を参照してください。

SQLT はこれらの取得した情報を html 形式のレポートにまとめます。各情報はそれぞれリンクされ、確認したい情報をスムーズに確認できます。出力結果のサンプルがこちらに用意されています。

SQLT を導入してみよう

SQLT は statspack の導入と同様にいくつかの表やパッケージを導入対象のデータベースに作成する必要があるため、いざ、問題が発生してから導入するのではなく、事前に導入し ておくことをお奨めします。また、事前にどのような手順で情報を取得し、どのようなレポートが出力されるのか確認しておくと、実際のトラブル時にスムーズ に情報を取得し、解析できるでしょう。

SQLTのインストール方法は SQLTXPLAIN のインストール方法 を参照してください。実際の情報取得方法は SQLTXPLAIN の実行方法 を参照してください。

About

日本オラクル カスタマ・サポートのエンジニアがお勧めのサポート情報を紹介します。


本サイトの一部のリンク先へアクセスするには My Oracle Support のアカウントが必要です。
My Oracle Support の概要については http://oracle.co.jp/mos をご参照ください。

Search

Archives
« 4月 2014
  
1
2
3
4
5
6
7
8
11
12
13
14
15
16
17
19
20
21
22
23
24
25
26
27
28
29
30
   
       
Today