クロスシャード操作時のアプリケーション・コンテキストの使用
仮想プライベート・データベース(VPD)、統合監査、Oracle Label Security (OLS)などのOracleセキュリティ機能を複数使用できるかどうかは、通常、セッション・レベルのアプリケーション・コンテキストの使用によって決まります。
Oracle 21cより前は、シャード・カタログによって開始されるクロスシャード問合せやDMLなどのクロスシャード操作では、影響を受けるシャードにセッション・レベルのアプリケーション・コンテキスト値が送信されません。そのため、シャード・カタログ・セッションからシャードに渡されるコンテキスト値に依存する機能は、シャード環境ではサポートされていませんでした。
Oracle 21c以降、クロスシャード問合せまたはDMLの前に設定されたデータベース・セッションベースのアプリケーション・コンテキスト値は、操作に関係するすべてのシャードに安全に送信されます。これは、VPD、監査、OLSなどの機能がシャーディング環境でサポートされる方法です。
たとえば、ユーザーがSQL*Plusからシャード・カタログまたは問合せコーディネータに接続し、DBMS_SESSION.SET_CONTEXT
プロシージャをコールしてコンテキスト値を設定した場合、その値は、シャード・カタログのSQL*Plusセッションから開始された後続のクロスシャード操作に関係するすべてのシャードに送信されます。シャードに対してSYS_CONTEXT
ファンクションをコールすると、想定どおりにシャード・カタログに最初に設定された値が返されます。
クロスシャード操作でアプリケーション・コンテキストを使用しようとする場合は、次の制限に注意してください。
-
コンテキスト値の最大長は、非シャード環境の4000バイトに対し、1968バイトです。
-
コンテキスト属性名の最大長は、非シャード環境の128バイトに対し、32バイトです。
-
現在、ローカルで初期化されているデータベース・セッションベースのコンテキストのみがサポートされています。
- クロスシャード操作中にコンテキスト値を渡すには、構成内のすべてのシャードがOracle Database 21c以降のリリースである必要があります。
詳細は、アプリケーション・コンテキストを使用したユーザー情報の取得を参照してください。