処理が遅い、パフォーマンスチューニングしたいけど沢山SQLが流れてて何が原因か分からない。とお嘆きの貴方にSI Object Browser for Oracleの「SQLキャッチ」をご紹介します。
Oracle 版のSQLキャッチとは何か?
それはOracleのSQLトレース機能を見やすい形で表示してくれる機能です。ユーザー権限や事前設定が必要ですので、前々回の「SQLキャッチから始めるSQLチューニング(SQL Server編)」の注意点をご覧ください。
SQLキャッチを使うには
設定が済みましたら下記画像のアイコンボタンか、
メニューの「ツール」→「SQLキャッチ」で画面を表示します。
初回はトレースファイルが出力されるフォルダを選択する必要があります。
DIAGNOSTIC_DEST初期化パラメータのパスを確認し、下記の場所を選択します。
[DIAGNOSTIC_DEST]/diag/rdbms/[db_name]/[SID]/trace/
無い場合は事情を説明して管理者に教えてもらいましょう。
[開始]ボタンを押し、データベーストレース/セッショントレースの開始を行います。
(黒く塗りつぶされている箇所は私の名前が出ているので隠してあります。)
リストからトレースしたいセッションを選択し、[開始]ボタンを押します。
(青字は自セッションです。)
処理の重いSQLリストアップ
トレース開始後、ORACLE は SQL が実行される度にその内容をトレースファイルに書き出すようになります。[表示]ボタンを押すと、SI Object Browser は ORACLE が発行したトレースファイルの内容からSQL文のみを抽出し、整形結果を画面下段に表示します。
[ELAPSED]列が経過時間を示していますのでこれをソートすることで重いSQLがどれか調べることが出来ます。
結果リストの各項目は次のような値となります。
SID |
SQLを実行したセッションIDを表示します。 |
COUNT |
SQLを実行した回数を表示します。 |
CPU |
SQLの解析・実行・フェッチに費やした CPU 時間を表示します。 |
ELAPSED |
SQLの解析・実行・フェッチに費やした経過時間を表示します。 |
DISK |
SQLの解析・実行・フェッチにより物理読込みが発生した際の |
QUERY |
SQLの解析・実行・フェッチにより一貫モードで読み出された |
CURRENT |
SQLの解析・実行・フェッチにより現行モードで読み出された |
ROWS |
SQLによって処理されたデータ行数を表示します。 |
SQL |
SQL文を表示します。 |
実行計画画面でSQLを修正
気になるSQLが見つかりましたらリストを選択して、右クリックより実行計画画面へ遷移します。
問題のあるSQLを修正し、パフォーマンスの向上を目指します。
最後にトレースを終了する場合は、[停止]ボタンを押してトレースを終了します。
手順についてはトレースファイルが有効な間は何度でも実行できます。また、トレースファイル自体はトレース終了後にも残りますので、トレースを終了させた後でも情報の表示は可能です。
いかがでしたか。
今後、複数のSQLで構成された重い処理があったら、是非活用してみてください。
- カテゴリ:
- キーワード: