1

Wenn account_status abgelaufen ist, wird es in der Regel aufgefordert, das Passwort der nächsten Anmeldung zu ändern, aber hier wirft er den folgenden Fehler und schließen während der Verbindung durch PL/SQL und sqlplus-Tool.Oracle keine Aufforderung, das Passwort zu ändern, wenn das Passwort abgelaufen ist

ORA-00604: Fehler bei rekursivem SQL-Level 1 aufgetreten ORA-06502: PL/SQL: numerischer oder Wertfehler: Zeichenfolgenpuffer zu klein. ORA-06512: bei Zeile 8 ORA-28001: das Passwort ist abgelaufen

Wenn ich versuche, vom Server zu verbinden. Es wird aufgefordert, das Passwort zu ändern. Was kann der Fehler sein? FYI-Account_status ist nicht gesperrt.

Wie zur Aufforderung aufgefordert, das Passwort in Pl/SQL Entwickler oder Kröte oder sqlplus Werkzeug zu ändern, wenn account_status im abgelaufenen Zustand ist?

+0

Gibt es eine Art von Anmelde-Trigger, der aufgerufen wird? da es einen pl/sql Fehler anzeigt? Außerdem könnte ein Fehler protokolliert werden, der das gleiche Problem verursachen könnte. – cableload

Antwort

0

Bei der Passwortverifizierung konnte ein Fehler auftreten. Ich habe vor ein paar Wochen genau diesen Fehler gemacht und die Leute effektiv von ihrem Konto ausgeschlossen.

mit dieser Abfrage Ihr Passwort Verifikationsfunktion finden:

select * from dba_profiles where resource_name = 'PASSWORD_VERIFY_FUNCTION'; 

Schauen Sie sich diese Quelle mit dieser Abfrage:

select * from dba_source where name = '<name from above query>'; 

Die meisten Passwort Prüffunktionen haben Arrays an der Spitze, die die Zeichensätze halten . Es ist wahrscheinlich eine Variablendeklaration wie dieses an Linie 8:

special_character_array varchar2(10) := '[email protected]#$%^&*()'; 

Aus irgendeinem Grund die meisten Menschen nur ein paar der häufigsten Sonderzeichen wählen. Dann können Personen ihr Passwort nicht mehr ändern, wenn sie einen weniger gebräuchlichen Charakter verwenden.

Um dies zu beheben, könnte ein DBA weitere Zeichen zur Liste hinzufügen. Hier ist eine vollständige Liste aller Sonderzeichen auf einer typischen US-englische Tastatur:

special_character_array varchar2(10) := '`[email protected]#$%^&*()-_=+[{]}\|;:''",<.>/?'; 

Der Fehler wurde mehr Zeichen hinzugefügt, aber nicht die Größe von varchar2(10) zu varchar2(31) erhöhen. (Oder planen Sie das Schlimmste, machen Sie es varchar2(4000).) Dies würde den Fehler "ORA-06502: PL/SQL: numerische oder Wert Fehler: Zeichenfolgenpuffer zu klein."

Wenn dies das Problem ist, müssen Sie als SYSDBA angemeldet sein, um die Passwortverifizierung neu zu kompilieren.

0

Danke Jon Heller für gute Erklärung.

Ich habe festgestellt, dass der Fehler durch einen von uns erstellten Log-Trigger verursacht wird. Wie Sie bereits erwähnt haben, wurde das Problem durch Erhöhen der Größe von varchar2 (100) für eine bestimmte Variable gelöst. Jetzt werden Sie aufgefordert, das Passwort zu ändern, wenn der Account-Status für den Benutzer abgelaufen ist.