Ze zijn heel anders, ja.
In Oracle kunnen privileges op een tafel ofwel rechtstreeks aan een gebruiker worden verleend (in dat geval zouden ze verschijnen in ALL_TAB_PRIVS
) of privileges kunnen worden toegekend aan een rol (zichtbaar in ROLE_TAB_PRIVS
) en die rol kan worden toegekend aan een gebruiker (zichtbaar in USER_ROLE_PRIVS
). De eerste query toont u de gebruikers die directe subsidies op een tafel hebben. De tweede query toont u de gebruikers die een rol hebben gekregen die toegang tot de tabel heeft gekregen (merk op dat u in beide gevallen echt een OWNER
moet opgeven naast de tabelnaam). Evenmin wordt informatie weergegeven over toekenningen die zijn gedaan via meerdere geneste niveaus van rollen (d.w.z. gebruiker A heeft rol 1 gekregen, rol 1 heeft rol 2 gekregen, rol 2 heeft toegang gekregen tot een tabel). Subsidies die via rollen worden gedaan, kunnen ook een beetje lastig worden, omdat er standaard- en niet-standaardrollen zijn en met een wachtwoord beveiligde rollen en rollen in een sessie kunnen worden in- en uitgeschakeld.
Over het algemeen raad ik aan om de scripts te bekijken die beschikbaar zijn op de site van Pete Finnigan als u iets wilt hebben dat alle mogelijke gevallen dekt. In dit geval wil je waarschijnlijk zijn who_can_access script gebruiken om te bepalen welke gebruikers toegang hebben tot een bepaalde tabel.