Oracle APEXのコンポーネント表示時に実行されるSQLの処理時間を確認する方法を紹介します。
最初に以下のようなダッシュボードのページを例に取ります。
開発者ツールバーのデバッグを選択し、デバッグ・レベルを情報(デフォルト)に変更します。
ブラウザの開発ツールに含まれるJavaScriptコンソールを開きます。以下はChromeで実行しています。
JavaScriptコンソールに色々とメッセージが表示されます。
JavaScriptコンソールに出力されているメッセージの中に、以下のような記述が見つかります。
Server debug log message written: View Identifier = 49143, Level = 3. http://.....
http(s)://...で始まるURLを開くと、サーバー側で生成されたデバッグ・メッセージが表示されます。
デバッグ・メッセージの中に、コンポーネントが実行したSQLが見つかります。
経過や実行に処理時間が記載されていますが、SQL文が記載されている場所の時間はパースにかかった時間になり、SELECT処理全体の一部です。その後のfetch処理にかかっている時間も含めて、処理時間を確認します。
デバッグ・レベルを完全トレースにすると、実行されているSELECT文の実行計画がデバッグ・メッセージとして出力されます。
ファセット検索のページでは、ファセットの選択ごとにサーバー側のデバッグ・メッセージへのリンクが出力されます。
対話グリッドのような遅延ロードをサポートしているコンポーネントは、リージョンをリフレッシュするときにSELECT文が実行されます。そのため、デバッグ・メッセージも出力されます。
JavaScriptコンソールに表示されるリンクをクリックすると、サーバー側の処理のデバッグ・メッセージが開くのは便利ですが、つねに新規のタブとして開く点には注意が必要です。
あまりタブが開きすぎないように、参照しなくなったタブは閉じるようにします。タブを閉じても、記録されたデバッグ・メッセージはデータベースに保存されているので、後から参照することもできます。特にページ・ビュー識別子を記録していれば、デバッグ・ログを一意に選択できます。そうでなくても、ページ番号、実行時刻(タイムスタンプ)およびパス情報などから、デバッグ・メッセージ探すことができます。
今回の記事は以上です。
完