Hola a todos,
En esta ocasión nos encontramos con un problema un cliente me hace la llamada para desbloquear un usuario el creaia tener la clave pero resulto que no sabia y aquí el problema es fácil poner una clave nueva con un ALTER USER pero puede que la aplicación deje de funcionar con la base de datos por que la contraseña cambió.
Bueno aquí el tip para recuperar la contraseña.
Datos generales:
Versión Base de datos: 11.2.0.4
Recuperar clave usuario oracle
1) Nos conectamos como sysdba usando la autenticación de sistema operativo
[oracle@bbdsw ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Tue May 19 12:27:32 2015
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Release 11.2.0.4.0 - 64bit Production
2) Comprobamos que la base de datos este en modo OPEN
SQL> select * from v$instance;
INSTANCE_NUMBER INSTANCE_NAME
--------------- ----------------
HOST_NAME
----------------------------------------------------------------
VERSION STARTUP_T STATUS PAR THREAD# ARCHIVE LOG_SWITCH_WAIT
----------------- --------- ------------ --- ---------- ------- ---------------
LOGINS SHU DATABASE_STATUS INSTANCE_ROLE ACTIVE_ST BLO
---------- --- ----------------- ------------------ --------- ---
1 switch
bbdsw.aseyco.local
11.2.0.4.0 24-NOV-14 OPEN NO 1 STOPPED
ALLOWED NO ACTIVE PRIMARY_INSTANCE NORMAL NO
3) Realizamos la consulta para recuperar la contraseña
Formato:SELECT DBMS_METADATA.GET_DDL('USER','<Nombre del Usuario') FROM DUAL;
SQL> SELECT DBMS_METADATA.GET_DDL('USER','ADMINSWITCH') FROM DUAL;
DBMS_METADATA.GET_DDL('USER','ADMINSWITCH')
--------------------------------------------------------------------------------
CREATE USER "ADMINSWITCH" IDENTIFIED BY VALUES
'S:68D98AB835C31574415A9F252CCA5A354667AEC71B0C0CDA0170F9FFAB11;50267B99CC3AF258'
DEFAULT TABLESPACE "SWITCH_TRANSACCIONAL"
TEMPORARY TABLESPACE "TEMP"
PASSWORD EXPIRE
4) Actualizar la clave para que deje de estar expirada, es necesario copiar todo el values de la consulta anterior.
Formato: ALTER USER <Nombre del Usuario> IDENTIFIED BY VALUES '< Todo el values de la consulta anterior>';
SQL> ALTER USER ADMINSWITCH IDENTIFIED BY VALUES 'S:68D98AB835C31574415A9F252CCA5A354667AEC71B0C0CDA0170F9FFAB11;50267B99CC3AF258';
User altered.
Con esto ya su usuario ya no tiene la cuenta expirada y no es necesario cambiar la contraseña ya que se recupero.
Espero sea de su ayuda.