1

При истечении срока действия account_status обычно предлагается ввести пароль для следующего входа в систему, но здесь он выдает следующую ошибку и закрывается при подключении через PL/SQL и инструмент sqlplus.Oracle не запрашивает изменение пароля при истечении срока действия пароля

ORA-00604: ошибка на рекурсивном уровне SQL 1 ORA-06502: PL/SQL: числовая или значащая ошибка: буфер символьной строки слишком мал. ORA-06512: по строке 8 ORA-28001: пароль устарел

Когда я пытаюсь подключиться с сервера. Он предлагает изменить пароль. Какая может быть ошибка. FYI-Account_status не заблокирован.

Как сделать запрос на изменение пароля в разработчике Pl/SQL или приложением toad или sqlplus, когда account_status находится в состоянии с истекшим сроком действия?

+0

Есть ли какой-то триггер входа в систему, который называется? поскольку это указывает на его ошибку pl/sql? Также может быть триггер для регистрации ошибок, которые могут вызвать такую ​​же проблему ... – cableload

ответ

0

В функции проверки пароля может быть ошибка. Я сделал эту ту же ошибку несколько недель назад и фактически заблокировал людей из их учетной записи.

Найдите свой пароль функцию проверки с этим запросом:

select * from dba_profiles where resource_name = 'PASSWORD_VERIFY_FUNCTION'; 

Посмотрите на этот источник с этим запросом:

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

Большинство функций проверки пароля массивы на вершине, которые держат наборы символов , Там, наверное, объявление переменной, как это в линии 8:

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

По некоторым причинам большинство людей только выбрать несколько наиболее распространенных специальных символов. Тогда люди не могут изменить свой пароль, когда используют менее общий характер.

Чтобы исправить это, администратор базы данных может добавить в список больше символов. Вот более полный список всех специальных символов на типичной английской клавиатуры США:

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

Ошибку добавляя больше символов, но не увеличивая размер varchar2(10) к varchar2(31). (Или планируйте худшее сделать это varchar2(4000).) Это приведет к ошибке «ORA-06502: PL/SQL: числовая или значение ошибки: буфер строковой буквы слишком мал».

Если это проблема, вам необходимо войти в систему под именем SYSDBA, чтобы перекомпилировать функцию проверки пароля.

0

Спасибо Jon Heller за хорошее объяснение.

Я обнаружил, что ошибка вызвана созданным нами триггером журнала. Как вы упомянули, увеличение размера varchar2 (100) для конкретной переменной позволило решить эту проблему. Теперь он запрашивает изменение пароля, когда срок действия учетной записи истек для пользователя.