sql >> Database teknologi >  >> RDS >> Oracle

Kan ikke oprette Oracle View med adgang til andre skemaers objekter, trods bevillinger

Som nævnt i dokumentationen (fremhævelse tilføjet):

Hvis du kun har udvalgt privilegeret på den underliggende tabel givet gennem en a-rolle, kan du ikke oprette en visning mod den. Selvom du generelt skifter til rollen, bliver du nødt til at holde den eksplicitte bevilling øverst for alle visninger, du vil oprette.

Jeg forestiller mig, at det har at gøre med, hvordan roller fungerer. Med en direkte bevilling ved Oracle, om du kan se tabellen i det andet skema. Hvis du tildeler select på din visning til en anden, så ved Oracle, når de forespørger på visningen, at kæden af ​​privilegier er der. Hvis din direkte bevilling på bordet tilbagekaldes, er der mekanismer til at ugyldiggøre afhængige objekter. Men hvad skal der ske, rollens udvalgsprivilegium på bordet tilbagekaldes; eller din adgang til rollen er tilbagekaldt; eller bare inden for din egen session, hvad skal der ske, hvis du deaktiverer den rolle - kan du stadig få adgang til visningen? Det er lidt mere kompliceret, end det ser ud ved første øjekast.

Heldigvis burde det være relativt sjældent og kontrollerbart at skabe synspunkter. De fleste mennesker, der får adgang til tabellen via rollen, behøver ikke at oprette en visning af den (formoder jeg!).

En anden mulighed her er at oprette visningen i ARIEL skema, og giv derefter privilegier til APEX_ARIEL og/eller en rolle. Om det er passende afhænger af din reelle visningsforespørgsel og din motivation for at oprette visningen.




  1. Java - Hvordan konverteres data fra mysql-database til et JSON-array?

  2. Sådan udføres batch-operationen ved hjælp af pl/sql

  3. Hvorfor kan jeg ikke bruge bindevariabler i DDL/SCL-sætninger i dynamisk SQL?

  4. PostgreSQL:kodningsproblemer på Windows, når du bruger psql kommandolinjeværktøj