De er ret forskellige, ja.
I Oracle kan privilegier på en tabel tildeles enten direkte til en bruger (i hvilket tilfælde de vil blive vist i ALL_TAB_PRIVS
) eller privilegier kan gives til en rolle (synligt i ROLE_TAB_PRIVS
), og den rolle kan tildeles en bruger (synligt i USER_ROLE_PRIVS
). Den første forespørgsel vil vise dig de brugere, der har direkte bevillinger på en tabel. Den anden forespørgsel vil vise dig de brugere, der har fået tildelt en rolle, som har fået adgang til tabellen (bemærk, at du i begge tilfælde virkelig burde angive en OWNER
ud over tabelnavnet). Ingen af dem vil vise dig oplysninger om bevillinger, der er blevet givet gennem flere indlejrede niveauer af roller (dvs. bruger A har fået tildelt rolle 1, rolle 1 er blevet tildelt rolle 2, rolle 2 har fået adgang til en tabel). Bevillinger givet via roller kan også blive en smule vanskelige, fordi der er standard- og ikke-standardroller, og adgangskodebeskyttede roller og roller kan aktiveres og deaktiveres i en session.
Generelt vil jeg foreslå, at du tager et kig på scripts, der er tilgængelige på Pete Finnigans websted hvis du vil have noget, der dækker alle mulige sager. I dette tilfælde vil du sandsynligvis bruge hans who_can_access-script for at bestemme, hvilke brugere der kan få adgang til en bestemt tabel.