23.8 APEX_ACTIVITY_LOGを使用したカスタム・アクティビティ・レポートの作成

APEX_ACTIVITY_LOGビューを使用して、現在のワークスペースのアクティビティを問い合せる方法について学習します。

23.8.1 アプリケーションのロギングの有効化

「アプリケーション定義の編集」ページでアプリケーションのロギングを有効にします。

アプリケーション定義を編集するには:

  1. ワークスペースのホームページで、「アプリケーション・ビルダー」アイコンをクリックします。
  2. アプリケーションを選択します。
  3. アプリケーション名の右側にある「アプリケーション定義の編集」をクリックします。

    「アプリケーション定義の編集」ページが表示されます。

  4. 「プロパティ」で、「ロギング」を見つけます。「はい」または「いいえ」を選択します。

    「はい」に設定した場合、すべてのページ・ビューがログに記録されるため、管理者はアプリケーションごとにユーザー・アクティビティを監視できます。高容量アプリケーションでは、ロギングを無効にすることをお薦めします。

ヒント:

Oracle APEX管理サービスの「アプリケーション・アクティビティのロギング」属性が「アプリケーションの設定を使用」に設定されている場合、「ロギング」属性の変更のみ可能です。

関連項目:

『Oracle APEX管理ガイド』アプリケーション・アクティビティのロギングの有効化

23.8.2 APEX_ACTIVITY_LOG

APEX_ACTIVITY_LOGを使用して、現在のワークスペースのすべてのアクティビティを表示および問い合せます。

APEX_ACTIVITY_LOGビューには、開発者アクティビティ、アプリケーション実行時アクティビティなど、ワークスペースのすべてのアクティビティが記録されます。APEX_ACTIVITY_LOG使用して、現在のワークスペースのすべてのアクティビティを表示および問い合せることができます。たとえば、このビューを使用して、リアルタイムのパフォーマンス分析を提供する特定のアプリケーション内の監視レポートを開発できます。

次の表は、APEX_ACTIVITY_LOGビューの列を説明しています。

データ型 説明

time_stamp

DATE

アクティビティがページ・ビューの末尾に記録された日時

component_type

VARCHAR2(255)

将来の使用のために予約されています。

component_name

VARCHAR2(255)

将来の使用のために予約されています。

component_attribute

VARCHAR2(4000)

ページのタイトル

information

VARCHAR2(4000)

将来の使用のために予約されています。

elap

NUMBER

ページ・ビューの経過時間(秒)。

num_rows

NUMBER

ページ上で処理された行数

userid

VARCHAR2(255)

ページ・ビューを実行しているユーザーのID

ip_address

VARCHAR2(4000)

クライアントのIPアドレス

ir_report_id

NUMBER

対話モード・レポートID

ir_search

VARCHAR2

ユーザーが入力した対話モード・レポート検索条件。

user_agent

VARCHAR2(4000)

クライアントのWebブラウザ・ユーザー・エージェント。

flow_id

NUMBER

アプリケーションID

step_id

NUMBER

ページ番号

session_id

NUMBER

Oracle APEXセッション識別子。

sqlerrm

VARCHAR2(4000)

SQLエラー・メッセージ

sqlerrm_component_type

VARCHAR2(255)

将来の使用のために予約されています。

sqlerrm_component_name

VARCHAR2(255)

将来の使用のために予約されています。

アクティビティ・ログの領域を節約するため、一意のセッションそれぞれの最初のログ・エントリにのみIPアドレスとWebブラウザ・ユーザー・エージェントが含まれます。

23.8.3 APEX_ACTIVITY_LOGのサンプル問合せ

APEX_ACTIVITY_LOGのサンプル問合せを表示します。

次に、アプリケーション9529に関する過去24時間のページ・ビュー合計数および平均ページ・ビュー時間がユーザーID別に表示されるレポートを作成する方法の例を示します。

SELECT COUNT(*), AVG(elap), userid
    FROM APEX_ACTIVITY_LOG
 WHERE time_stamp > (SYSDATE-1)
   AND flow_id = 9529
GROUP BY userid

APEXインスタンスでのアクティビティ・ロギングは2つの異なるログ表を順番に使用するよう留意してください。ログ表は2つあるので、ロギング情報はログのうち古い方の使用可能なエントリのみとなります。アプリケーション固有のログ情報を常に保持するには、独自のアプリケーション表にログ情報をコピーするか、アプリケーションに直接ロギングを実装する必要があります。