sql >> Database >  >> RDS >> Oracle

Kan Oracle View niet maken met toegang tot objecten van andere schema's, ondanks subsidies

Zoals opgemerkt in de documentatie (nadruk toegevoegd):

Als u alleen de select bevoorrecht hebt op de onderliggende tabel die is verleend via een a-rol, kunt u er geen weergave tegen maken. Zelfs als u in het algemeen naar een rol gaat, moet u de expliciete toekenning bovenaan houden voor alle weergaven die u wilt maken.

Ik kan me voorstellen dat dit te maken heeft met hoe rollen werken. Met een directe subsidie ​​weet Oracle of je de tabel in het andere schema kunt zien. Als u iemand anders selecteert op uw weergave, dan weet Oracle dat de reeks privileges er is wanneer ze de weergave opvragen. Als uw directe toekenning op de tafel wordt ingetrokken, zijn er mechanismen om afhankelijke objecten ongeldig te maken. Maar wat moet er gebeuren? Het selectierecht van de rol op de tafel wordt ingetrokken; of uw toegang tot de rol wordt ingetrokken; of gewoon binnen je eigen sessie, wat moet er gebeuren als je die rol uitschakelt - heb je nog steeds toegang tot de weergave? Het is een beetje ingewikkelder dan het op het eerste gezicht lijkt.

Gelukkig zou het maken van views relatief zeldzaam en controleerbaar moeten zijn. De meeste mensen die toegang krijgen tot de tabel via de rol, hoeven er geen weergave van te maken (ik neem aan!).

Een andere optie hier is om de weergave te maken in de ARIEL schema, en verleen vervolgens rechten aan APEX_ARIEL en/of een rol. Of dat gepast is, hangt af van uw echte weergavequery en uw motivatie voor het maken van de weergave.




  1. Incrementele statistieken voor SQL Server 2014

  2. Converteer datum van het ene formaat naar het andere met behulp van het SQL*Loader-besturingsbestand

  3. Databasetips voor beginners

  4. Variabele parameter/resultaatbinding met voorbereide instructies