Es posible que en alguna ocasión que como DBA te llame un usuario y te diga que al intentar acceder con su usuario a su cuenta le salga el mensaje de error:
ORA-28002: the password will expire within 7 days
Tú le cambias la contraseña, vuelves a probar, y desgraciadamente sigue saliendo el mismo error. Incluso, el usuario puede tener ya la cuenta bloqueada después de varios intentos fallidos de conexión. Visitar este enlace para ver como desbloquear la cuenta: Bloquear/Desbloquear una cuenta ORACLE
El problema es de fácil solución. Todo es debido al perfil (profile) que tenga asociado dicho usuario. Normalmente, el perfil asociado a un usuario en el proceso de creación es DEFAULT. Y dentro de ese perfil, se definen valores como la caducidad y otros parámetros que determinan la caducidad de la contraseña. Para evitar este error, revisaremos dichos parámetros del perfil.
Los podemos consultar via SQLPLUS o bien con OEM. En el ejemplo veremos las dos maneras.
Debemos tener en consideración que …
- Es recomendable que el password expire aunque sea en un periodo prolongado de tiempo.
- El perfil se define en la sentencia de creación del usuario “CREATE USER …”
- Podemos modificar los perfiles una vez creado dicho usuario e incluso cambiar el perfil del usuario.
Empecemos…..
Desde SQLPLUS
Miramos que perfil tiene el usuario asignado:
SQL> select username, profile from dba_users where username = 'USUARIO';
USERNAME PROFILE
—————————— ——————————
USUARIO DEFAULT
vemos que tiene asignado el perfil DEFAULT, será el que editaremos para cambiar los valores de expiración de la contraseña. Estos valores de perfil son PASSWORD_LIFE_TIME y basados en la tabla de atributos de usuario ASTATUS y EXPTIME.
sacamos los valores …
SQL> select username, account_status, expiry_date from dba_users;
USERNAME ACCOUNT_STATUS EXPIRY_DATE
—————————— ——————————– ————
USUARIO EXPIRED & LOCKED 15-AUG-12
en este caso el usuario le expiró el 15 de Agosto de 2012 y además, tiene la cuenta bloqueada. Por tanto, primero desbloquearemos la cuenta tal y como explicamos en la entrada de blog del enlace anterior. Y procedermos a cambiar el límite de caducidad en el profile.
SQL> ALTER PROFILE "DEFAULT" LIMIT PASSWORD_LIFE_TIME UNLIMITED;
Teniendo en cuenta que no le estamos poniendo fecha de “expiración” y siempre es aconsejable hacerlo. Esto por si sólo no solventa el error, hasta que las tareas de cambio de password, desbloqueo pendientes estén realizadas. Una vez hechas, el usuario al conectarse cogerá los nuevos valores definidos en el perfil.
Recordad que para cambiar la clave del usuario haremos:
SQL> ALTER USER usuario IDENTIFIED BY VALUES 'clave';
CONCLUSIÓN:
La caducidad de la contraseña está controlada por el límite PASSWORD_LIFE_TIME definido en el perfil (DEFAULT por defecto) y se activa al iniciar la sesión Oracle, pero depende de la combinación de los parámetros ASTATUS y EXPTIME y se reestablece por un cambio de contraseña (alter user … identified by …). El cambio de perfil NO cambiará ASTATUS. En el cambio de contraseña se restablece ASTATUS y PTIME, pero no EXPTIME. Por tanto, los usuarios que estén bloqueados, se tendrán que desbloquear y los que esten en “EXPIRED” se les tendrá que cambiar la contraseña.
Ahora vamos a ver lo mismo desde OEM …
iremos a la pestaña “Servidor” y en el apartado Seguridad pulsaremos en el enlace “Perfiles”.
Seguidamente en el perfil (normalmente suele ser el perfil DEFAULT) que corresponda al usuario afectado, pulsaremos en el perfil y luego lo editaremos …
Por último, editaremos el perfil y cambiaremos sus valores, pulsaremos en “Aplicar” para aplicar los cambios realizados.
Pues esto es todo …
Sencillito!!!