D APEXセッションとデータベース・セッションの関連付け
アプリケーション・パフォーマンスの問題をトラブルシューティングするために、管理者および開発者がデータベース・セッションを特定のAPEXアプリケーションに関連付けることができるようにするベスト・プラクティスについて学習します。
- APEXセッションとデータベース・セッションについて
APEXセッションとデータベース・セッションについて学習します。 - セッション属性
システム管理者および開発者が参照できるセッション属性について学習します。 - APEXプロセス
APEXによってアプリケーションまたはバックグラウンド・メール・セッションのセッション属性がどのように設定されるのかについて学習します。 - SQLワークショップ
APEXによってSQLコマンドおよびSQLスクリプトでセッション属性がどのように設定されるのかについて学習します。 - データ・ワークショップ
データ・ワークショップを使用したデータのインポート中に、APEXによってセッション属性がどのように設定されるのかについて学習します。 - 自動化
自動化の実行中に、APEXによってセッション属性がどのように設定されるのかについて学習します。 - インストーラ
APEXのインストールまたはアップグレード中に、APEXのインストール・スクリプトによってセッション属性がどのように設定されるのかについて学習します。
D.1 APEXセッションとデータベース・セッションについて
APEXセッションとデータベース・セッションについて学習します。
Oracle APEXには、APEX_PUBLIC_USER
というデータベース・アカウントが含まれています。Oracle REST Data Services (ORDS)のデータベース・セッション・プール内のすべてのデータベース・セッションで、インスタンスがどのように構成されているかに応じて、ORDS_PUBLIC_USER
、APEX_PUBLIC_USER
などの単一のデータベース・ユーザーが使用されます。APEXセッションとデータベース・セッションの間に、固定された永続的な相関関係はありません。APEXリクエストを処理するためのセッション・プール内のセッションの割当ては基本的に予測不可能であり、一定ではないため、この関連付けは、APEXリクエストをアクティブに処理しているアクティブなデータベース・セッションについてのみ行うことができます。
親トピック: APEXセッションとデータベース・セッションの関連付け
D.2 セッション属性
システム管理者および開発者が参照できるセッション属性について学習します。
1つ以上のAPEXデータベース・プロセスがアクティブである間に、v$session
、v$sqlarea
、v$session_longops
、および様々な監査ツールやSQLトレース・ツールからシステム管理者が参照できる次のセッション属性を設定できます。開発者は、PL/SQLを使用してこれらのセッション属性を設定できます。
client_id
client_id
は、一般的にユーザー/クライアント・セッションを識別するために使用される64バイトの文字列です。単一のAPEXセッションの処理を異なるデータベース・セッションで実行することが可能であるため、すべてのデータベース・セッションにわたるワークロードをそれぞれのAPEXセッションに関連付けることができます。また、client_id
は多くの場合、アプリケーション・コンテキストを使用して仮想プライベート・データベース(VPD)と組み合せて使用されます。PL/SQLでは、dbms_session.set_identifier
をコールすることにより、セッションに対してclient_id
を設定し、sys_context('USERENV','CLIENT_IDENTIFIER')
を使用して、それを取得できます。v$session
ビューのclient_identifier
列で、アクティブなセッションのclient_id
を参照できます。
APEXセッション内では、この属性を設定する必要がないため、通常は変更しないでください。APEXセッション内で実行されるカスタムPL/SQLコードによってclient_id
が変更された場合、この変更によってOracle APEXで問題が発生することはありません。ただし、一部のモニタリング・ツールでAPEXセッションを効果的に識別できるかどうかに影響する場合があります。
client_info
client_info
は、一般的にワークスペースおよびユーザーを識別するためにAPEXで使用される64バイトの文字列です。PL/SQLでは、dbms_application_info.set_client_info
をコールすることにより、セッションに対してclient_info
を設定し、dbms_application_info.read_client_info
またはsys_context('USERENV','CLIENT_INFO')
を使用して、それを取得できます。v$session
ビューのclient_info
列で、アクティブなセッションのclient_info
を参照できます。
APEXセッション内では、この属性を設定する必要がないため、通常は変更しないでください。APEXセッション内で実行されるカスタムPL/SQLコードによってclient_info
が変更された場合、この変更によってOracle APEXで問題が発生することはありません。ただし、一部のモニタリング・ツールでAPEXセッションを効果的に識別できるかどうかに影響する場合があります。
module
module
は、一般的に現在実行中のモジュールまたはプロセスを識別するために使用される48バイトの文字列です。PL/SQLでは、dbms_application_info.set_module
をコールすることにより、module
を設定し、dbms_application_info.read_module
またはsys_context('USERENV','MODULE')
を使用して、それを取得できます。v$session
ビューのmodule
列で、アクティブなセッションのmodule
を参照できます。
APEXセッション内では、現在処理されている内容をモニタリング・ツールで識別できるようにするための手段として、この属性を(action
とともに)設定することをお薦めします。
action
action
は、一般的にモジュールまたはプロセス内で実行されている現在のステップを識別するために使用される32バイトの文字列です。PL/SQLでは、dbms_application_info.set_module
またはset_action
をコールすることにより、セッションに対してaction
を設定し、dbms_application_info.read_module
またはsys_context('USERENV','ACTION')
を使用して、それを取得できます。v$session
ビューのaction
列で、アクティブなセッションのaction
を参照できます。
APEXセッション内では、現在処理されている内容をモニタリング・ツールで識別できるようにするための手段として、この属性を(module
とともに)設定することをお薦めします。
Session long ops
Session longops
(長時間操作)は、処理される予定の合計単位数と対比して、これまでに処理された単位数を示すレコード構造です。session longops
を使用して、長時間実行プロセスの完了時間を推定できます。PL/SQLでは、dbms_application_info.set_session_longops
をコールすることにより、セッションに対してsession longops
を設定できます。v$session_longops
ビューを問い合せることにより、長時間操作をモニターできます。
APEXセッション内では、ワークロードを個別の作業単位(たとえば、処理されるレコード数)に適切に分割できる場合、時間がかかることが予想されるプロセスに対してこの属性を設定することをお薦めします。
ノート:
Oracle APEXは、SYSバージョンのdbms_application_info
をコールします。パッケージのラッパーが存在する場合でも、それが使用されることはありません。
親トピック: APEXセッションとデータベース・セッションの関連付け
D.3 APEXプロセス
APEXによってアプリケーションまたはバックグラウンド・メール・セッションのセッション属性がどのように設定されるのかについて学習します。
アプリケーション・セッション
ヒント:
ほとんどのAPEXプロセスでは、終了時にセッション値がNULLにリセットされます。前の値は復元されません。次の表では、APEXによってアプリケーション・セッションのセッション属性がどのように設定されるのかを詳しく説明します。
セッション属性 | Expression | 例。 | その他のノート... |
---|---|---|---|
|
|
|
app_userが長すぎる場合は、収まるように切り捨てられます(たとえば、最初の50バイトまたは49バイト)。認証が完了する前は、次のようになります。
|
|
|
|
なし |
|
|
|
なし |
|
次のように、様々な異なる値が表示されることがあります。
|
なし |
なし |
メール・バックグラウンド・セッション
次の表では、APEXによってメール・バックグラウンド・セッションのセッション属性がどのように設定されるのかを詳しく説明します。
セッション属性 | Expression | ノート |
---|---|---|
|
|
長い電子メール・アドレスは、収まるように切り捨てられます。 |
|
|
なし |
|
(変更なし) |
なし |
|
(変更なし) |
なし |
親トピック: APEXセッションとデータベース・セッションの関連付け
D.4 SQLワークショップ
APEXによってSQLコマンドおよびSQLスクリプトでセッション属性がどのように設定されるのかについて学習します。
ノート:
「管理サービス」、「機能構成」で「トランザクションSQLコマンドの有効化」が有効になっている場合、SQLコマンドに「自動コミット」チェック・ボックスが表示されます。詳細は、『Oracle APEX管理ガイド』のSQLワークショップの構成に関する項を参照してくださいSQLコマンド(自動コミット = ON)
次の表では、「自動コミット」が有効になっている場合に、APEXによってSQLコマンドでセッション属性がどのように設定されるのかを詳しく説明します。
セッション属性 | Expression |
---|---|
|
|
|
|
|
|
|
|
SQLコマンド(自動コミット = OFF)
次の表では、「自動コミット」が無効になっている場合に、APEXによってSQLコマンドでセッション属性がどのように設定されるのかを詳しく説明します。「自動コミット」が無効になっている場合、SQLコマンドは別のデータベース・ジョブによって実行されます。「SQLコマンド」ウィンドウからのコマンドの待機中、ジョブはアイドル状態です。
セッション属性 | Expression |
---|---|
|
|
|
|
|
|
|
|
SQLスクリプト
次の表では、SQLスクリプトの実行中に、APEXによってセッション属性がどのように設定されるのかを詳しく説明します。
セッション属性 | Expression |
---|---|
|
|
|
|
|
|
|
|
|
|
親トピック: APEXセッションとデータベース・セッションの関連付け
D.5 データ・ワークショップ
データ・ワークショップを使用したデータのインポート中に、APEXによってセッション属性がどのように設定されるのかについて学習します。
次の表では、データ・ワークショップを使用したデータのインポート中に、APEXによってセッション属性がどのように設定されるのかを詳しく説明します。
セッション属性 | Expression | ノート |
---|---|---|
|
(変更なし) |
なし |
|
|
なし |
|
|
スキーマ名が長い場合は、module文字列が48バイト以内に収まるように切り捨てられることがあります。 |
|
|
なし |
親トピック: APEXセッションとデータベース・セッションの関連付け
D.6 自動化
自動化の実行中に、APEXによってセッション属性がどのように設定されるのかについて学習します。
次の表では、自動化の実行中に、APEXによってセッション属性がどのように設定されるのかを詳しく説明します。
セッション属性 | Expression | ノート |
---|---|---|
|
(変更なし) |
なし |
|
|
なし |
|
|
なし |
|
|
初期化プロシージャの実行中。 いずれの場合も、 |
|
|
開始/データのフェッチ中。 |
|
|
アクション前。 |
|
|
アクションの実行中。 |
|
|
アクションの終了。 |
|
|
クリーンアップ。 |
関連項目:
自動化の管理親トピック: APEXセッションとデータベース・セッションの関連付け
D.7 インストーラ
APEXのインストールまたはアップグレード中に、APEXのインストール・スクリプトによってセッション属性がどのように設定されるのかについて学習します。
次の表では、APEXのインストールまたはアップグレード中に、APEXのインストール・スクリプトによってセッション属性がどのように設定されるのかを詳しく説明します。
セッション属性 | Expression | ノート |
---|---|---|
|
(変更なし) |
なし |
|
(変更なし) |
なし |
|
|
|
|
次のように、様々な異なる値が表示されることがあります。
|
なし |
親トピック: APEXセッションとデータベース・セッションの関連付け