domingo, 17 de septiembre de 2023

ORA-28001: The password has expired

ORA-28001: The password has expired

Hola.

Estoy obteniendo el error ORA-28001: The password has expired en una base de datos Oracle 19c. 

Esto provoca que las aplicaciones estén enviando errores al momento de conectarse a la base de datos usando estos usuarios. Los usuarios no están bloqueados pero se muestran como EXPIRED.

Para conocer el estatus de los usuarios se puede utilizar el siguiente query:

SELECT username, account_status, expiry_date FROM dba_users;

Importante mencionar que el error ORA-28001 es consecuencia de ignorar el error ORA-28002: the password will expire in 7 days 😅. Este error aparece primero y es una advertencia para actualizar el password del usuario en cuestión. Durante este tiempo la cuenta se pone en estado de EXPIRED(GRACE) indicando que el password debe ser actualizado.

ORA-28002: the password will expire in 7 days

Solución

Ls solución es actualizar el password del o los usuarios en cuestión. Preferentemente desde el momento de la advertencia pero también funciona cuando la contraseña ya expiró como en mi caso.

Ejecutar la siguiente instrucción para setear el password del usuario. 

La contraseña puede ser la misma, no necesariamente una nueva. Esto para evitar problemas con las aplicaciones. 

sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Sun Sep 17 15:39:43 2023
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

SQL> ALTER USER myuser IDENTIFIED BY my password;
User altered.

SQL> ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
Profile altered.

SQL> commit;

SQL> exit;

Muy importante ejecutar la instrucción commit para aplicar el cambio de profile.

Espero les sirva.