[Oracle] Alle User einer Gruppe auflisten

Drucken
( 6 Votes )
Hauptkategorie: Programmieren Kategorie: SQL
Erstellt am 23.01.2012 Zuletzt aktualisiert am 24.01.2012 Geschrieben von Jonny132
Um alle Benutzer einer Gruppe herauszufinden gibt es in Oracle interne Tabellen in der diese Informationen abgespeichert werden. Für diesen Anwendungsfall benötigen wir die Tabelle 'dba_role_privs' in dieser  alle benötigten Informationen sind.
Da wir nun wissen in welcher Tabelle wir nachschauen müssen ist der Rest nichtmehr schwer.

SELECT * FROM dba_role_privs where granted_role = 'RollenName';
Wie ihr seht bekommt ihr nun eine Liste der User. Leider werden uns so jedoch auch die Rollen und das Schema aufgelistet. Um diese zu beseitigen und eine klare Userliste zu bekommen müssen wir den Select etwas erweitern.

SELECT grantee
  FROM dba_role_privs
 where granted_role = 'RollenName'
   and not exists (select role from dba_roles where role = grantee)
   and not exists
 (select owner from dba_objects where owner = grantee);
 
Mittels Exists Abfrage filtern wir zuerst alle Rollen heraus und danach werden noch die Schemas rausgefiltert und als Ergebnis bleibt uns eine Liste der aktuellen User in der Gruppe.

    Veröffentlichen Sie ihre Kommentare ...