Те са доста различни, да.
В Oracle привилегиите върху таблица могат да бъдат предоставени директно на потребител (в който случай те ще се появят в ALL_TAB_PRIVS
) или привилегии могат да бъдат предоставени на роля (вижда се в ROLE_TAB_PRIVS
) и тази роля може да бъде предоставена на потребител (вижда се в USER_ROLE_PRIVS
). Първата заявка ще ви покаже потребителите, които имат директни грантове на маса. Втората заявка ще ви покаже потребителите, на които е предоставена роля, на които е предоставен достъп до таблицата (имайте предвид, че и в двата случая наистина трябва да посочите OWNER
в допълнение към името на таблицата). Нито един от тях няма да ви покаже информация за разрешения, които са направени чрез множество вложени нива на роли (т.е. на потребител A е предоставена роля 1, на роля 1 е предоставена роля 2, на роля 2 е предоставен достъп до таблица). Безвъзмездните средства, направени чрез роли, също могат да станат малко трудни, защото има роли по подразбиране и не по подразбиране, а защитените с парола роли и роли могат да бъдат активирани и деактивирани в сесия.
Като цяло предлагам да разгледате скриптовете, налични на сайта на Pete Finnigan ако искате да имате нещо, което покрива всички възможни случаи. В този случай вероятно искате да използвате неговия скрипт who_can_access за да определи кои потребители имат достъп до определена таблица.