Oracle SQLキャッチから始めるSQLチューニング

 2017.08.15  株式会社システムインテグレータ

処理が遅い、パフォーマンスチューニングしたいけど沢山SQLが流れてて何が原因か分からない。とお嘆きの貴方にSI Object Browser for Oracleの「SQLキャッチ」をご紹介します。 

Oracle 版のSQLキャッチとは何か?

それはOracleSQLトレース機能を見やすい形で表示してくれる機能です。ユーザー権限や事前設定が必要ですので、前々回の「SQLキャッチから始めるSQLチューニング(SQL Server)」の注意点をご覧ください。

SQLキャッチを使うには

設定が済みましたら下記画像のアイコンボタンか、
メニューの「ツール」→「SQLキャッチ」で画面を表示します。

sql_catch_01.png


初回はトレースファイルが出力されるフォルダを選択する必要があります。
DIAGNOSTIC_DEST初期化パラメータのパスを確認し、下記の場所を選択します。

 [DIAGNOSTIC_DEST]/diag/rdbms/[db_name]/[SID]/trace/

無い場合は事情を説明して管理者に教えてもらいましょう。

sql_catch_02.png

データベース開発に関するお役立ち資料

 [開始]ボタンを押し、データベーストレース/セッショントレースの開始を行います。
(黒く塗りつぶされている箇所は私の名前が出ているので隠してあります。)

sql_catch_03.png

リストからトレースしたいセッションを選択し、[開始]ボタンを押します。
(青字は自セッションです。)

sql_catch_04.png

処理の重いSQLリストアップ

トレース開始後、ORACLE は SQL が実行される度にその内容をトレースファイルに書き出すようになります。[表示]ボタンを押すと、SI Object Browser は ORACLE が発行したトレースファイルの内容からSQL文のみを抽出し、整形結果を画面下段に表示します。

[ELAPSED]列が経過時間を示していますのでこれをソートすることで重いSQLがどれか調べることが出来ます。

sql_catch_05.png

結果リストの各項目は次のような値となります。

SID

SQLを実行したセッションIDを表示します。
[
同一SQLの結果をまとめる]にチェックが入っている場合、
複数セッションで実行されたSQLには「*」が表示されます。

COUNT

SQLを実行した回数を表示します。

CPU

SQLの解析・実行・フェッチに費やした CPU 時間を表示します。
単位は秒でミリ秒までの値が表示されます。

ELAPSED

SQLの解析・実行・フェッチに費やした経過時間を表示します。
単位は秒でミリ秒までの値が表示されます。

DISK

SQLの解析・実行・フェッチにより物理読込みが発生した際の
読込みブロック数を表示します。

QUERY

SQLの解析・実行・フェッチにより一貫モードで読み出された
バッファ数を表示します。

CURRENT

SQLの解析・実行・フェッチにより現行モードで読み出された
バッファ数を表示します。

ROWS

SQLによって処理されたデータ行数を表示します。

SQL

SQL文を表示します。

実行計画画面でSQLを修正

気になるSQLが見つかりましたらリストを選択して、右クリックより実行計画画面へ遷移します。

sql_catch_06.png

問題のあるSQLを修正し、パフォーマンスの向上を目指します。

sql_catch_07.png

最後にトレースを終了する場合は、[停止]ボタンを押してトレースを終了します。

手順についてはトレースファイルが有効な間は何度でも実行できます。また、トレースファイル自体はトレース終了後にも残りますので、トレースを終了させた後でも情報の表示は可能です。 

いかがでしたか。
今後、複数のSQLで構成された重い処理があったら、是非活用してみてください。

いまさら聞けない Oracleの基本

RECENT POST「OBをトコトン極める」の最新記事


この記事が気に入ったらいいねしよう!