ロールを介して付与された基になるテーブルに対するselect特権のみがある場合、それに対してビューを作成することはできません。一般的に役割に移行する場合でも、作成するビューについては、明示的な付与を最上位に維持する必要があります。
これは、役割がどのように機能するかに関係していると思います。直接付与により、Oracleは、他のスキーマでテーブルを表示できるかどうかを認識します。ビューの選択を他の人に許可すると、他の人がビューを照会すると、Oracleは特権のチェーンがそこにあることを認識します。テーブルへの直接付与が取り消された場合、依存オブジェクトを無効にするメカニズムがあります。ただし、テーブルに対するロールの選択権限は取り消されます。または、役割へのアクセスが取り消されます。または、自分のセッション内で、そのロールを無効にするとどうなりますか?引き続きビューにアクセスできますか?一見すると少し複雑です。
幸い、ビューの作成は比較的まれで、制御可能である必要があります。ロールを介してテーブルにアクセスするほとんどの人は、テーブルにビューを作成する必要はありません(私は推測します!)。
ここでのもう1つのオプションは、ARIEL
でビューを作成することです。 スキーマを作成し、APEX_ARIEL
に権限を付与します および/または役割。それが適切かどうかは、実際のビュークエリとビューを作成する動機によって異なります。