orac Geschrieben 18. September 2006 Teilen Geschrieben 18. September 2006 Hallo, ich will eine Select-Anweisung schreiben die alle user einer Oracle 9i datenbank zurueckgibt die NUR eine Rolle(ROLE) haben und zwar die "CONNECT" Rolle. Informationen ueber Rollen und Benutzern gekomme ich aus: SQL> desc DBA_ROLE_PRIVS Naam ------------------------ GRANTEE GRANTED_ROLE ADMIN_OPTION DEFAULT_ROLE Ich hab mal probiert, aber hiermit bekomme ich nur die User die ueberhaupt nur eine Rolle haben und nicht speziell NUR die Rolle CONNECT... SQL> select grantee, count(*) from DBA_ROLE_PRIVS group by GRANTEE having count(*) <2; Kann mir hier jemand helfen diese Abfrage auszubreiten oder eine andere Abfrage mailen womit ich das gewuenschte Ergebnis erhalte? Schon mal vielen Dank. Gruesse Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Pinhead Geschrieben 18. September 2006 Teilen Geschrieben 18. September 2006 SELECT grantee, count(*) FROM DBA_ROLE_PRIVS WHERE grantee = 'CONNECT' GROUP BY GRANTEE HAVING count(*) <2; Müsste meiner Meinung nach funktionieren ist allerdings ungetestet Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
orac Geschrieben 18. September 2006 Autor Teilen Geschrieben 18. September 2006 Ja cool, scheint zu functionieren. Danke! Es war nur ein kleiner Tipfehler drin... ...WHERE GRANTED_ROLE = 'CONNECT' Nochmals vielen Dank fuer die schnelle Antwort! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
orac Geschrieben 18. September 2006 Autor Teilen Geschrieben 18. September 2006 Vielleicht hast jemand noch ein Tip um diese Abfrage auszubreiten. In meinem Ergebnis sind Users die ein ACCOUNT_STATUS = EXPIRED & LOCKED , ich moechte jedoch nur die User die ACCOUNT_STATUS =ONLINE haben. Und dies alles kombiniert mit der vorigen Query. Das heisst, ich muesste die Abfrage ueber 2 Tabellen/views machen. Kann mir jemand sagen wie das geht? SQL> desc DBA_ROLE_PRIVS Naam ------------------------ GRANTEE GRANTED_ROLE ADMIN_OPTION DEFAULT_ROLE SQL> desc dba_users Naam ------------------------------- USERNAME USER_ID PASSWORD ACCOUNT_STATUS LOCK_DATE EXPIRY_DATE DEFAULT_TABLESPACE TEMPORARY_TABLESPACE CREATED PROFILE INITIAL_RSRC_CONSUMER_GROUP EXTERNAL_NAME Query die ausgebreitet werden soll aus der vorigen Antwort: SELECT grantee, count(*) FROM DBA_ROLE_PRIVS WHERE GRANTED_ROLE = 'CONNECT' GROUP BY GRANTEE HAVING count(*) <2; Schon mal Danke fuer die Hilfe! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Pinhead Geschrieben 18. September 2006 Teilen Geschrieben 18. September 2006 Über welches Feld kann man die beiden Tabellen denn miteinander in Verbindung bringen ? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
orac Geschrieben 18. September 2006 Autor Teilen Geschrieben 18. September 2006 username und grantee Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Pinhead Geschrieben 18. September 2006 Teilen Geschrieben 18. September 2006 username und grantee Also unter der Annahme das im Grantee auch der Username hinterlegt ist müsste folgende Abfrage funktionieren SELECT grantee, count(*) FROM DBA_ROLE_PRIVS,dba_users WHERE username = grantee AND granted_role = 'CONNECT' AND ACCOUNT_STATUS ='ONLINE' GROUP BY GRANTEE HAVING count(*) <2; Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
orac Geschrieben 18. September 2006 Autor Teilen Geschrieben 18. September 2006 ok, vielen Dank. Ich werde es morgen an der Arbeit gleich mal testen... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
orac Geschrieben 19. September 2006 Autor Teilen Geschrieben 19. September 2006 Ja das funktioniert gut. Danke, wieder was gelernt :-) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.