Database OracleDB インフラ

[OracleDB] 実行計画の確認方法

投稿日:2018年7月5日 更新日:

こんにちは!シミダイ(@shimidai2100)です。

Oracle Databaseを運用する上で「実行計画」の管理は必須です。

性能問題が発生した場合にSQLの「実行計画」を確認し、どこをチューニングするのか検討します。

今回は「実行計画」の確認方法を紹介したいと思います。


SQL*Plusで確認

最も一般的なのが「SQL*Plus」の「autotrace」で確認する方法です。

ただし事前に準備が必要になるので以下の設定を必ず行いましょう。

上記の設定が終わったら、以下の方法で「autotrace」を使用しましょう。

なお「autotrace」時には「実行結果」、「実行計画」、「実行時統計」を表示有無を指定することができます。

以下が「autotrace」での表示設定になります。

オプション動作
set autotrace on explain実行結果と実行計画を表示。
set autotrace on statistics実行結果と実行時統計情報を表示。
set autotrace on実行結果、実行計画、実行時統計情報を表示。
set autotrace traceonly実行計画と実行時統計情報を表示。実行結果は表示しない。ただしFetchは内部的に行っている
set autotrace offautotraceを無効化。

下の例が実行計画と実行時統計情報を表示した例です。

「autotrace」では結果セットをFetchした後に各種情報が表示されます。

そのため重いSQLの場合返ってこない時があるので注意しましょう。

explain plan文で確認

explain plan」文でも「実行計画」を確認することができます。

統計情報」の確認はできないので注意してください。

autotrace」と違い、実行結果をFetchしないので重いSQLの場合は「explain plan」を利用しましょう。

下が「explain plan」文の使用方法です。

さらに解析したSQLを表示させるために、「DBMS_XPLAN」プロシージャを利用します。

下が実行時のサンプルになります。

なお、SQLIDが分かれば「explain plan」文で解析しなくても、

DBMS_XPLAN」プロシージャで実行計画を取得出来ます。

下が「DBMS_XPLAN.DISPLAY_CURSOR」を使用した例です。

 

スポンサードリンク

関連記事

-Database, OracleDB, インフラ

Translate »

Copyright© shimidai2100 , 2018 All Rights Reserved.