SQLチューニングの基盤となる統計情報:Oracle SQLチューニング講座(5)(2/4 ページ)
本連載では、Oracleデータベースのパフォーマンス・チューニングの中から、特にSQLのチューニングに注目して、実践レベルの手法を解説する。読者はOracleデータベースのアーキテクチャを理解し、運用管理の実務経験を積んでいることが望ましい。対象とするバージョンは現状で広く使われているOracle9iの機能を基本とするが、Oracle 10gで有効な情報も随時紹介していく。(編集局)
EVENT 10046でのSQLトレースの取得
ドキュメントには記載されていませんが、EVENTと呼ばれるデバッグ用の機能により、SQLトレースで取得できる情報に加えて、より詳細な情報を取得することも可能です。EVENT 10046には表3のようなレベルがあり、通常のSQLトレースによって作成されるトレースファイルには含まれない、バインド変数の値や待機イベントを確認できます。通常のSQLトレースに比べ、非常に多くの情報がファイルに出力されるため、ディスクの空き容量に十分注意してください。
なお、EVENTはOracleの内部動作変更や、デバッグなどに使用されるものであり、正式にサポートされるものではありません。使用する場合は、自己責任において使用してください。
レベル | 内容 |
---|---|
LEVEL 1 | SQL_TRACE機能と同等 |
LEVEL 4 | LEVEL 1の情報に追加して、バインド変数情報が出力される |
LEVEL 8 | LEVEL 1の情報に追加して、待機イベント情報が出力される |
LEVEL 12 | LEVEL 1の情報に追加して、バインド変数情報、待機イベント情報が出力される |
表3 EVENT 10046のレベル |
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
デフォルトのSQLトレースには含まれないバインド変数の値を確認する場合、LEVEL 4もしくはLEVEL 12で取得したSQLトレースをTKPROFユーティリティで整形せずに、直接参照します。以下の例は、LEVEL4でバインド変数を確認した結果です。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
今回のSQLは、「CURSOR #2」で実行されていることから、バインド変数の値は、その直後にある「BINDS #2」になります。ここでは、「value=1」「value="Clerk#000000951"」が指定されていたことが確認できます。
別セッションのSQLトレース、EVENT 10046のSQLトレース取得手順
先ほどは自セッションのSQLトレースを取得する方法を説明しましたが、アプリケーションを変更できない場合や、すでに実行中のアプリケーションのSQLトレースを取得したい場合も多いかと思います。そのような場合、ほかのセッションに対して、SQLトレースやEVENT10046をセットすることも可能です。
ただし、取得できるのは、トレース取得開始時点以降の情報となります。そのため、すでに実行中であったSQLに関しては、読み取りブロック数などの値が不正確となりますので、注意してください。以下に別セッションのSQLトレースを取得する例を示します。
1. sysdba権限を持つユーザーでログインする
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
2. トレース取得対象セッションのSID、SERIAL#をV$SESSION動的パフォーマンスビューで確認する(クリックすると別ウィンドウで表示します)
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
ここでは、SCOTTユーザーを指定しています。
3. SQLトレースを設定する
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
ここでは、SID、SERIAL#、TRUEを指定して、上記のプロシージャを実行します。
4. SQLトレースの設定を解除する
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
なおトレースファイルは、自セッションのSQLトレースを取得したときと同じディレクトリ下に作成されます。
別セッションに対して、EVENT 10046のSQLトレースを設定する場合には、手順の3.と4.で以下のプロシージャを実行します。
3. EVENT 10046をLEVEL 12に設定する
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
4. EVENT 10046の設定を解除する
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
Copyright © ITmedia, Inc. All Rights Reserved.