Jak wspomniano w dokumentacji (podkreślenie dodane):
Jeśli posiadasz tylko przywileje select w tabeli bazowej przyznane przez rolę, nie możesz utworzyć widoku w stosunku do niej. Nawet jeśli generalnie przejdziesz do roli, będziesz musiał trzymać wyraźne przyznanie na wierzchu dla wszystkich widoków, które chcesz utworzyć.
Wyobrażam sobie, że ma to związek z działaniem ról. Dzięki bezpośredniemu grantowi Oracle wie, czy można zobaczyć tabelę w innym schemacie. Jeśli przyznasz opcję wyboru w swoim widoku komuś innemu, wówczas, gdy ktoś zapyta o widok, Oracle wie, że istnieje łańcuch uprawnień. Jeśli Twoje bezpośrednie przydzielenie w tabeli zostanie odwołane, istnieją mechanizmy unieważniania obiektów zależnych. Ale co powinno się stać, przywilej wyboru roli na stole zostaje odebrany; lub Twój dostęp do roli zostanie cofnięty; lub po prostu w ramach własnej sesji, co powinno się stać, jeśli wyłączysz tę rolę – czy nadal możesz uzyskać dostęp do widoku? To trochę bardziej skomplikowane, niż się wydaje na pierwszy rzut oka.
Na szczęście tworzenie widoków powinno być stosunkowo rzadkie i możliwe do kontrolowania. Większość osób uzyskujących dostęp do tabeli za pośrednictwem roli nie musi tworzyć jej widoku (zakładam!).
Inną opcją jest utworzenie widoku w ARIEL
schemat, a następnie nadaj uprawnienia APEX_ARIEL
i/lub rolę. To, czy jest to właściwe, zależy od Twojego prawdziwego zapytania o widok i motywacji do tworzenia widoku.