Application Express と Oracle Database Enterprise を使用してアプリケーションを構築します。VPD は Context を使用してスキーマに実装されています。
アプリケーション内のデータを表示することはできませんが、SQL ステートメントを使用して表示することはできます
VPD 、 Context 、または On log on トリガーを使用する場合の Apex の問題はありますか?
Application Express と Oracle Database Enterprise を使用してアプリケーションを構築します。VPD は Context を使用してスキーマに実装されています。
アプリケーション内のデータを表示することはできませんが、SQL ステートメントを使用して表示することはできます
VPD 、 Context 、または On log on トリガーを使用する場合の Apex の問題はありますか?
Apex でこれを行う適切な方法は、アプリケーション セキュリティ設定の VPD 属性を使用することです。
Shared Components > Edit Security Attributes > Security
「セキュリティ コンテキストを設定するための仮想プライベート データベース PL/SQL 呼び出し」(またはその効果に関するもの) というラベルの付いたセクションがあり、そこに VPD コンテキストを設定するコードを配置します。ページビューごとに Apex エンジンによって実行されます。
おそらく、ログオントリガーが実行されたときと関係があります。
通常、Webアプリケーション(Apexを含む)には、アプリケーションに接続しているユーザーごとにデータベースセッションがありません。むしろ、データベースセッションのプール(おそらく10)があり、エンドユーザーがデータベース要求を発行するときにそれらのいずれかを使用します。
ログオンに使用されるデータベースユーザーと使用される可能性のあるセッションの数は、Apexの実装方法(組み込みPL / SQLゲートウェイ、Apexリスナー、またはOracle HTTPサーバー)に応じてすべて構成可能である必要があります。
つまり、ログオントリガーは、CONTEXT変数を設定するのにおそらく間違った場所です。