Są zupełnie inne, tak.
W Oracle uprawnienia do tabeli mogą być przyznawane bezpośrednio użytkownikowi (w takim przypadku pojawią się one w ALL_TAB_PRIVS
) lub uprawnienia można nadać roli (widoczne w ROLE_TAB_PRIVS
) i tę rolę można nadać użytkownikowi (widoczne w USER_ROLE_PRIVS
). Pierwsze zapytanie pokaże Ci użytkowników, którzy mają bezpośrednie przydziały w tabeli. Drugie zapytanie pokaże Ci użytkowników, którym przyznano rolę, która uzyskała dostęp do tabeli (pamiętaj, że w obu przypadkach naprawdę powinieneś określić OWNER
oprócz nazwy tabeli). Żadna z nich nie pokaże informacji o nadaniach, które zostały wykonane przez wiele zagnieżdżonych poziomów ról (tj. Użytkownik A otrzymał rolę 1, rola 1 została przyznana rola 2, rola 2 otrzymała dostęp do tabeli). Dotacje dokonywane za pośrednictwem ról mogą być również nieco skomplikowane, ponieważ istnieją role domyślne i inne niż domyślne, a role chronione hasłem i role mogą być włączane i wyłączane w sesji.
Ogólnie sugeruję zapoznanie się z skryptami dostępnymi na stronie Pete'a Finnigana jeśli chcesz mieć coś, co obejmuje wszystkie możliwe przypadki. W takim przypadku prawdopodobnie chcesz użyć jego who_can_access aby określić, którzy użytkownicy mogą uzyskać dostęp do określonej tabeli.