Sie sind ziemlich unterschiedlich, ja.
In Oracle können Privilegien für eine Tabelle entweder direkt einem Benutzer gewährt werden (in diesem Fall würden sie in ALL_TAB_PRIVS
erscheinen ) oder Berechtigungen können einer Rolle erteilt werden (sichtbar in ROLE_TAB_PRIVS
) und diese Rolle kann einem Benutzer gewährt werden (sichtbar in USER_ROLE_PRIVS
). ). Die erste Abfrage zeigt Ihnen die Benutzer, die direkte Berechtigungen für eine Tabelle haben. Die zweite Abfrage zeigt Ihnen die Benutzer, denen eine Rolle gewährt wurde, der Zugriff auf die Tabelle gewährt wurde (beachten Sie, dass Sie in beiden Fällen wirklich einen OWNER
angeben sollten zusätzlich zum Tabellennamen). Beide zeigen Ihnen keine Informationen zu Gewährungen an, die über mehrere verschachtelte Rollenebenen vorgenommen wurden (d. h. Benutzer A wurde Rolle 1 gewährt, Rolle 1 wurde Rolle 2 gewährt, Rolle 2 wurde Zugriff auf eine Tabelle gewährt). Zuteilungen über Rollen können auch etwas schwierig werden, da es standardmäßige und nicht standardmäßige Rollen und passwortgeschützte Rollen gibt und Rollen in einer Sitzung aktiviert und deaktiviert werden können.
Im Allgemeinen würde ich vorschlagen, einen Blick auf die Skripte zu werfen, die auf der Website von Pete Finnigan verfügbar sind wenn Sie etwas haben wollen, das alle möglichen Fälle abdeckt. In diesem Fall möchten Sie wahrscheinlich sein who_can_access script verwenden um festzulegen, welche Benutzer auf eine bestimmte Tabelle zugreifen können.