sql >> Databasteknik >  >> RDS >> Oracle

Det går inte att skapa Oracle View med åtkomst till andra schemans objekt, trots anslag

Som noterat i dokumentationen (min kursivering):

Om du bara har valt privilegierad på den underliggande tabellen som beviljats ​​genom en a-roll kan du inte skapa en vy mot den. Även om du övergår till rollen generellt sett måste du ha explicit anslag överst för alla vyer du vill skapa.

Jag föreställer mig att detta har att göra med hur roller fungerar. Med ett direkt bidrag vet Oracle om du kan se tabellen i det andra schemat. Om du ger någon annan select på din vy vet Oracle att kedjan av privilegier finns där när de frågar i vyn. Om ditt direkta anslag på bordet återkallas finns det mekanismer för att ogiltigförklara beroende objekt. Men vad som ska hända rollens väljarprivilegium på bordet återkallas; eller din åtkomst till rollen återkallas; eller bara inom din egen session, vad ska hända om du inaktiverar den rollen - kan du fortfarande komma åt vyn? Det är lite mer komplicerat som det verkar vid första anblicken.

Lyckligtvis borde skapa vyer vara relativt sällsynt och kontrollerbart. De flesta som kommer åt tabellen via rollen behöver inte skapa en syn på den (förmodar jag!).

Ett annat alternativ här är att skapa vyn i ARIEL schema och ge sedan behörigheter till APEX_ARIEL och/eller en roll. Om det är lämpligt beror på din verkliga vyförfrågan och din motivation för att skapa vyn.




  1. Slingresultat PDO PHP

  2. Lagra IPv6-adresser i MySQL

  3. Hur får man djup i mysql-butiksprocedurrekursionen?

  4. Mysql:Lagra array av data i en enda kolumn