Passwort Probleme untersuchen
Hier werden einige Fälle behandelt, deren Ursache über das normale "Passwort vergessen / falsch eingegeben" hinausgehen.
Password Version
Oracle führt mit neuen Datenbankversionen auch neue Crypto- und Hashverfahren ein, um Passwörter für die DB-User zu speichern. Sofern man für die Datenbank-Kommunikation sowohl auf dem Client als auch auf dem Server mit der gleichen Major-Release-Version unterwegs ist, hat man damit keine Sorgen. Hat man aber den Fall, dass versionsübergreifende Versionen des Oracle Clients (oder auch bei Zugriffen via Link auf andere Oracle Server) ins Spiel kommen, steigt das Fehlerpotential - je weiter die Versionen auseinander liegen.
Die älteren Versionen können mit den neuen Crypto- und Hashverfahren nichts anfangen - und daher gibt es (abhängig von der Version) mal verschiedene Meldungen:
- ORA-01017: Invalid Username/Password
Obwohl eigentlich das korrekte Passwort verwendet wurde... - ORA-28040: No matching authentication protocol
Die Meldung zeigt immerhin in die richtige Richtung...
Password Lifetime
Die neue Datenbank wurde installiert, alle Tests abgeschlossen, der Produktivstart ist vorbei und nach ein paar Wochen problemlosen Betriebs klingelt in der Nacht das Telefon, weil im Betrieb nichts mehr geht... Die wichtige Anwendung kann sich nicht mehr an der Datenbank anmelden!
Was ist passiert? Oracle-Passwörter laufen standardmäßig nach 180 Tagen ab. Vergisst man bei der Installation / Anlage von Benutzern in der Datenbank das Ablaufen der Passwörter zu deaktivieren / einen entsprechenden Änderungsprozess zu etablieren, werden Accounts nach 180 Tagen ohne Passwortänderung gesperrt. Besonders trifft dies in der Regel sogenannte Application User, mit denen sich Anwendungen an der Datenbank anmelden.
Mit dem nachfolgenden Code kann sowohl die Password Lifetime, als auch Password Version abgefragt werden:
-- Ausgabe formatieren
SET LINESIZE 120
SET PAGESIZE 100
COL username FORMAT A30
COL account_status FORMAT A20
COL password_life_time FORMAT A20
-- Account-Status und Password-Lifetime abfragen
SELECT u.username, u.account_status, u.password_versions,
p.limit AS password_life_time
FROM dba_users u
JOIN dba_profiles p ON u.profile = p.profile AND p.resource_name = 'PASSWORD_LIFE_TIME'
ORDER BY u.account_status, u.username;