Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

Ja cool, scheint zu functionieren. Danke! Es war nur ein kleiner Tipfehler drin...

...WHERE GRANTED_ROLE = 'CONNECT'

Nochmals vielen Dank fuer die schnelle Antwort!

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!

username und grantee

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;

ok, vielen Dank. Ich werde es morgen an der Arbeit gleich mal testen...

Ja das funktioniert gut. Danke, wieder was gelernt :-)

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.