El tutorial o código que verás en este artículo es la solución más rápida y efectiva que encontramos a tu duda o problema.
Solución:
Para modificar la política de caducidad de la contraseña para un determinado perfil de usuario en Oracle, primero verifique qué perfil está utilizando el usuario:
select profile from DBA_USERS where username = '';
Luego puede cambiar el límite para que nunca caduque usando:
alter profile limit password_life_time UNLIMITED;
Si desea consultar previamente el límite puede utilizar:
select resource_name,limit from dba_profiles where profile='';
Para desarrollo puede deshabilitar la política de contraseñas si no se configuró ningún otro perfil (es decir, deshabilitar la caducidad de la contraseña en el predeterminado):
ALTER PROFILE "DEFAULT" LIMIT PASSWORD_VERIFY_FUNCTION NULL;
Luego, restablezca la contraseña y desbloquee la cuenta de usuario. Nunca debería volver a caducar:
alter user user_name identified by new_password account unlock;
Como dicen las otras respuestas, cambiar el perfil del usuario (por ejemplo, el perfil ‘DEFAULT’) de manera adecuada generará contraseñas que, una vez configuradas, nunca caducan.
Sin embargo, como señala un comentarista, es posible que las contraseñas establecidas con los valores antiguos del perfil ya hayan caducado y (si después del período de gracia especificado del perfil) la cuenta se haya bloqueado.
La solución para contraseñas caducadas con cuentas bloqueadas (como se indica en un comentario de respuesta) es usar una versión del comando ALTER USER:
ALTER USER xyz_user ACCOUNT UNLOCK;
Sin embargo, el comando de desbloqueo solo funciona para las cuentas en las que la cuenta está realmente bloqueada, pero no para aquellas cuentas que se encuentran en el período de gracia, es decir, en las que la contraseña ha caducado pero la cuenta aún no está bloqueada. Para estas cuentas, la contraseña debe restablecerse con otra versión del comando ALTER USER:
ALTER USER xyz_user IDENTIFIED BY new_password;
A continuación se muestra un pequeño script SQL*Plus que un usuario privilegiado (p. ej., el usuario ‘SYS’) puede usar para restablecer la contraseña de un usuario al valor hash actual almacenado en la base de datos.
EDITAR: Las versiones anteriores de Oracle almacenan la contraseña o el hash de contraseña en la columna pword, las versiones más nuevas de Oracle almacenan el hash de contraseña en la columna spare4. La secuencia de comandos a continuación cambió para recopilar las columnas pword y spare4, pero para usar la columna spare4 para restablecer la cuenta del usuario; modificar según sea necesario.
REM Tell SQL*Plus to show before and after versions of variable substitutions.
SET VERIFY ON
SHOW VERIFY
REM Tell SQL*Plus to use the ampersand '&' to indicate variables in substitution/expansion.
SET DEFINE '&'
SHOW DEFINE
REM Specify in a SQL*Plus variable the account to 'reset'.
REM Note that user names are case sensitive in recent versions of Oracle.
REM DEFINE USER_NAME = 'xyz_user'
REM Show the status of the account before reset.
SELECT
ACCOUNT_STATUS,
TO_CHAR(LOCK_DATE, 'YYYY-MM-DD HH24:MI:SS') AS LOCK_DATE,
TO_CHAR(EXPIRY_DATE, 'YYYY-MM-DD HH24:MI:SS') AS EXPIRY_DATE
FROM
DBA_USERS
WHERE
USERNAME = '&USER_NAME';
REM Create SQL*Plus variable to hold the existing values of the password and spare4 columns.
DEFINE OLD_SPARE4 = ""
DEFINE OLD_PASSWORD = ""
REM Tell SQL*Plus where to store the values to be selected with SQL.
REM Note that the password hash value is stored in spare4 column in recent versions of Oracle,
REM and in the password column in older versions of Oracle.
COLUMN SPARE4HASH NEW_VALUE OLD_SPARE4
COLUMN PWORDHASH NEW_VALUE OLD_PASSWORD
REM Select the old spare4 and password columns as delimited strings
SELECT
'''' || SPARE4 || '''' AS SPARE4HASH,
'''' || PASSWORD || '''' AS PWORDHASH
FROM
SYS.USER$
WHERE
NAME = '&USER_NAME';
REM Show the contents of the SQL*Plus variables
DEFINE OLD_SPARE4
DEFINE OLD_PASSWORD
REM Reset the password - Older versions of Oracle (e.g. Oracle 10g and older)
REM ALTER USER &USER_NAME IDENTIFIED BY VALUES &OLD_PASSWORD;
REM Reset the password - Newer versions of Oracle (e.g. Oracle 11g and newer)
ALTER USER &USER_NAME IDENTIFIED BY VALUES &OLD_SPARE4;
REM Show the status of the account after reset
SELECT
ACCOUNT_STATUS,
TO_CHAR(LOCK_DATE, 'YYYY-MM-DD HH24:MI:SS') AS LOCK_DATE,
TO_CHAR(EXPIRY_DATE, 'YYYY-MM-DD HH24:MI:SS') AS EXPIRY_DATE
FROM
DBA_USERS
WHERE
USERNAME = '&USER_NAME';