Come affermano le altre risposte, la modifica del profilo dell'utente (ad es. Il profilo "DEFAULT") porterà a password che, una volta impostate, non scadranno mai.
Tuttavia, come sottolinea un commentatore, le password impostate con i vecchi valori del profilo potrebbero essere già scadute e (se dopo il periodo di tolleranza specificato del profilo) l'account è bloccato.
La soluzione per le password scadute con account bloccati (come indicato in un commento di risposta) è utilizzare una versione del comando ALTER USER:
ALTER USER xyz_user ACCOUNT UNLOCK;
Tuttavia, il comando di sblocco funziona solo per gli account in cui l'account è effettivamente bloccato, ma non per quegli account che si trovano nel periodo di tolleranza, ovvero dove la password è scaduta ma l'account non è ancora bloccato. Per questi account è necessario reimpostare la password con un'altra versione del comando ALTER USER:
ALTER USER xyz_user IDENTIFIED BY new_password;
Di seguito è riportato un piccolo script SQL * Plus che un utente privilegiato (ad esempio, l'utente "SYS") può utilizzare per reimpostare la password di un utente al valore hash corrente esistente archiviato nel database.
EDIT: le versioni precedenti di Oracle memorizzano la password o l'hash della password nella colonna pword, le versioni più recenti di Oracle memorizzano l'hash della password nella colonna spare4. Lo script seguente è stato modificato per raccogliere le colonne pword e spare4, ma per utilizzare la colonna spare4 per ripristinare l'account dell'utente; modificare secondo necessità.
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';