ORA-28002: la contraseña vencerá en X días

ORA-28002
ORA-28002 recibido en SQLDeveloper

Aunque realmente no es un error, sino más bien una advertencia, el ORA-28002 es bastante descriptivo y nos avisa de que nuestra contraseña va a caducar en unos días. La solución es cambiar la contraseña del usuario en cuestión, y ya está. Un proceso bastante simple y sencillo pero que puede acarrear multitud de problemas: ¿Qué pasa si no puedo cambiar la contraseña? ¿Y si la desconozco? ¿Cómo puedo evitar que vuelvan a caducar? Todo eso es lo que voy a contar en este artículo.

Actualizar la contraseña

Si puedes cambiar la contraseña del usuario en cuestión estás de enhorabuena ya que esto no tiene más misterio. Con la siguiente sentencia podrás cambiar la contraseña del usuario y zanjar el asunto:

alter user <NOMBRE_USUARIO> identified by <CONTRASEÑA> account unlock;

Resetear la contraseña sin conocerla

Puede que te encuentres en una situación en la que no te convenga actualizar la contraseña (porque tengas que avisar a terceros), en este caso puedes lanzar la misma sentencia que tenemos arriba pero introduciendo la contraseña actual del usuario. De esta forma resetearás el tiempo de vida de la contraseña.

También podría ser que incluso desconozcas las contraseña que tiene el usuario (¡qué puñetera es la seguridad!), si éste es tu caso, no te preocupes, ya que existe un método alternativo para hacerlo. Apunta la siguiente query porque se va a convertir en tu mejor amiga:

select dbms_metadata.get_ddl('USER','<NOMBRE_USUARIO>') from dual;

Si lanzamos esto nos devolverá algo parecido a esto:

"CREATE USER "NINJA" IDENTIFIED BY VALUES 'S:06747BB70F9B43D3ABD7192EF52ED702A80B350815840BAB04D9BF06EB97;T:EE01B6DB70F53BF5772D85D1AD6D65A8C524CF62560C71C4877F59958F5587FF86CF32530A7A1E0CD8526948CBFDB2A0228C1CDFF1F70A22701C6B50ED515E3B32D247A6FBVAC68ED1272DDABF734159;42371C1D20D0B50B'
      DEFAULT TABLESPACE "NINJA_DATOS"
      TEMPORARY TABLESPACE "TEMP""

Aquí podemos ver la contraseña encriptada, entrecomillada después del parámetro BY VALUES. Con este dato podemos montar la misma sentencia anterior:

alter user NINJA identified by 'S:06747BB70F9B43D3ABD7192EF52ED702A80B350815840BAB04D9BF06EB97;T:EE01B6DB70F53BF5772D85D1AD6D65A8C524CF62560C71C4877F59958F5587FF86CF32530A7A1E0CD8526948CBFDB2A0228C1CDFF1F70A22701C6B50ED515E3B32D247A6FBVAC68ED1272DDABF734159;42371C1D20D0B50B' account unlock;

Y de esta forma reseteamos la contraseña. El usuario ya podrá entrar de forma habitual.

¿Cómo evitar que las contraseñas caduquen?

Lo primero que tenemos que saber es que la caducidad de las contraseñas no se define a nivel de usuario sino de perfil. Para ello tendremos que ver cuál es el perfil que nos interesa cambiar (normalmente será el DEFAULT) y una vez que lo sepamos, lanzamos la siguiente sentencia:

alter profile <NOMBRE_PERFIL> limit password_life_time UNLIMITED;

Deja un comentario