Archivo de la etiqueta: ORA-28002

ORA-28002: The password expire within 7 days … como solucionarlo

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!!! ;-)

 

Caducidad de contraseñas en ORACLE 11GR2 – Error ORA-28002

Es probable que en alguna ocasión al conectarnos a sqlplus o usando una aplicación nos aparezca el error ORA-28002- the password will expire within 7 day y resulta que nos conectamos para comprobar que el usuario afectado no tenga caducidad en la contraseña y resulta que NO la tiene. ¿ Que puede estar sucediendo ?

Pues muy sencillo. Tenemos configurado por defecto en el perfil DEFAULT de usuario una política de expiración de contraseñas activada a nivel global. Para solucionar este problema, tan sólo debemos modificar dicha política de contraseñas.

En la siguiente entrada de blog voy a explicar como hacerlo desde sqlplus y desde la consola (database control) de Entreprise Manager 11GR2.

Desde SQLPLUS … (conectados como SYSo SYSDBA)

En primer lugar miramos que política tenemos establecida en las contraseñas. Para ello podemos ejecutar la siguiente sentencia:

SQL> SELECT LIMIT, RESOURCE_NAME FROM dba_profiles
WHERE RESOURCE_NAME in (‘PASSWORD_GRACE_TIME’,'PASSWORD_LIFE_TIME’,
‘PASSWORD_REUSE_MAX’,'PASSWORD_REUSE_TIME’) AND
PROFILE=(select profile from dba_users where username=’USUARIO_A_CONSULTAR‘)
/

Donde en USUARIO_A_CONSULTAR pondremos el usuario en concreto que queremos ver que valores tiene.

Nos devolverá algo como …

 LIMIT                                    RESOURCE_NAME
—————————————- ——————————–
120                                PASSWORD_LIFE_TIME
UNLIMITED                                PASSWORD_REUSE_TIME
UNLIMITED                                PASSWORD_REUSE_MAX
  7                                 PASSWORD_GRACE_TIME

Ahora debemos cambiar los valores de PASWORD_LIFE_TIME para que no caduque nunca (120 dias en el ejemplo) y de PASSWORD_GRACE_TIME para que no bloquee en 7 dias (en el ejemplo) la contraseña.

SQL> ALTER PROFILE “DEFAULT” LIMIT PASSWORD_LIFE_TIME UNLIMITED;

SQL> ALTER PROFILE “DEFAULT” PASSWORD_GRACE_TIME UNLIMITED;

Y con esto los passwords nunca más volverán a expirar para el perfil DEFAULT. Para comprobarlo podríamos ejecutar de nuevo la consulta anterior y nos tendría que devolver todos los valores a UNLIMITED.

Ejemplo desde la consola de Enterprise Manager …

Accedemos a la consola y pulsamos en la pestaña “Servidor” y luego en el apartado “Seguridad” pulsamos en “Perfiles“. Aparece la siguiente pantalla donde se pueden ver los perfiles definidos:

Ahora pulsaremos en “DEFAULT” y el botón “Editar” de la derecha de la pantalla. Seguidamente seleccionaremos la pestaña “Contraseña” y editaremos los campos donde aparece 180 y 7 en el ejemplo, que son los valores que hay que modificar para que las contraseñas no caduquen. A Ambas le asignaremos el valor UNLIMITED:

 finalmente pulsamos en aplicar cambios y voilà. Cambios realizados. Ya no volverán a caducar las contraseñas para el perfil DEFAULT.