Essa semana um amigo me perguntou como resolver um problema urgente que ele estava tendo naquele momento no esquema de produção da aplicação dele no Oracle Database 11g, o usuário estava com a senha expirada e ele não tinha esta senha, se ele soubesse a senha simplesmente ele iria alterar para a mesma, desta forma resolvemos com os passos abaixo:
1 – Erro de expiração da senha:
1- Verificando o usuário APP:
set colsep " | "
SET LINESIZE 145
SET PAGESIZE 9999
alter session set nls_date_format = 'DD/MM/YYYY HH24:MI:SS';
SELECT U.username,U.password,U.account_status,U.expiry_date FROM DBA_USERS U WHERE U.username ='APP';
SQL2 – Pegar o hash da senha do usuário APP:
set heading off;
set echo off;
set pages 2000
set long 99999
set lines 2000
set long 20000 longchunksize 20000 pagesize 0 linesize 1000 feedback off verify off trimspool on
column ddl format a1000
spool ddl_users.sql
select dbms_metadata.get_ddl('USER',username) ddl FROM dba_users
WHERE username IN ('APP');
SQL3 – Alterar para a mesma senha e tentar o acesso.
ALTER USER APP IDENTIFIED BY VALUES '134F3A258D0CFC11';
SQL