クロスシャード操作時のアプリケーション・コンテキストの使用

仮想プライベート・データベース(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以降のリリースである必要があります。

詳細は、アプリケーション・コンテキストを使用したユーザー情報の取得を参照してください。