ORACLE: Benutzer, Kennwort und Rollen auslesen

Hallo Leute,

wie kann ich aus meiner Anwendung (Access) per VBA den ORACLE-Benutzernamen, Rollen und das Kennwort auslesen und ein Kennwort ändern? Mit SQL-Server läuft alles, jetzt soll die Anwendung auf ORACLE portiert werden - und für ORACLE bekomme ich die SQL-Syntax nicht hin.

Vielen Dank für eure Hilfe!

Marion

mit
SELECT user FROM DUAL;

bekommst du den aktuellen benutzer raus (dual ist eine systemtabelle die genau einen eintrag enthält, user ist eine pseudospalte, die den aktuellen usernamen beinhaltet - egal in welchem zusammenhang).

weiters kannst du so alle rollen des benutzers auslesen:
SELECT * FROM USER_ROLE_PRIVS WHERE USERNAME = USER ;

das Passwort kann man folgendermassen ändern:
ALTER USER xxx IDENTIFIED BY yyy ;

ich vermute aber mal, dass das alter-user-statement nicht über die odbc-schnittstelle abgesetzt werden kann. musst du ev. mit einem dynamischen call (z.b. mit execute immediate) absetzen.

das passwort bekommt man unter oracle nicht raus. du kannst es nur neu setzen, sofern du korrekt angemeldet bist. da du für die anmeldung eh das passwort brauchst, kann es eigentlich kein problem sein.

erwin

Hallo Erwin,

vielen, vielen Dank, funktioniert bestens.
Das Passwort läßt sich nur für den Datenbankbesitzer über ODBC ändern. Bei einem anderen User kommt die Fehlermeldung „unzureichende Berechtigungen…“. Der User hat allerdings auch nur die Rolle connect.
Braucht er dafür eine spezielle Berechtigung?

Viele Grüße

Marion

hi!

Braucht er dafür eine spezielle Berechtigung?

dba wäre nicht schlecht … aber aufpassen damit!

grüße,
tomh

unter oracle kann jeder user sein eigenes passwort mit „alter user“ ändern - und nur sein eigenes. um auch die passwörter anderer user ändern zu dürfen, benötigt der benutzer das recht „alter any user“. das hat normalerweise nur der dba - was auch gut so ist. es kann aber sinn machen, dieses recht geziehlt einem anderen user bzw. einer rolle zu geben, damit dieser user mit einer speziellen applikation die passwörter anderer benutzer zurücksetzen kann, ohne gleich dba-rechte zu bekommen.

also: user max kann also problemlos „alter user max identified by bastard“ absetzen, genauso wie user moriz „alter user moriz identified by schelm“ absetzen darf. max kann aber nicht „alter user moriz identified by aetsch“ absetzen, da er nicht die nötigen rechte hat.

mit dem datenbankbesitzer hat das normalerweise nichts zu tun.

alles klar?

erwin

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]