Jsou docela odlišné, ano.
V Oracle mohou být oprávnění k tabulce udělena buď přímo uživateli (v takovém případě by se objevila v ALL_TAB_PRIVS
) nebo lze roli udělit oprávnění (viditelné v ROLE_TAB_PRIVS
) a tuto roli lze udělit uživateli (viditelné v USER_ROLE_PRIVS
). První dotaz vám ukáže uživatele, kteří mají v tabulce přímé granty. Druhý dotaz vám ukáže uživatele, kterým byla udělena role, jimž byl udělen přístup k tabulce (všimněte si, že v obou případech byste skutečně měli zadat OWNER
kromě názvu tabulky). Ani jeden vám neukáže informace o uděleních, které byly provedeny prostřednictvím více vnořených úrovní rolí (tj. Uživateli A byla udělena role 1, Role 1 byla udělena role 2, Role 2 byl udělen přístup k tabulce). Udělení udělení prostřednictvím rolí může být také trochu složitější, protože existují výchozí a nevýchozí role a role a role chráněné heslem lze povolit a zakázat v relaci.
Obecně bych navrhoval podívat se na skripty dostupné na webu Petea Finnigana pokud chcete mít něco, co pokryje všechny možné případy. V tomto případě budete pravděpodobně chtít použít jeho who_can_access skript určit, kteří uživatelé mohou přistupovat ke konkrétní tabulce.