Revisar el estado de usuarios en Oracle

Para revisar el estado de una cuenta de usuario en Oracle, uso la siguiente orden

set pagesize 500
set linesize 200
set trimspool on
column username format a15
column account_status  format a15
column expiry_date  format a15
column profile  format a15
select username, account_status, expiry_date, profile from dba_users;

Con este comando, puedo visualizar las cuentas en la instancia de Oracle

USRCNXNO        EXPIRED         2014-10-05      APP_USER
DATOSBA         OPEN            2014-09-18      APP_END_USER
JANE0909        LOCKED          2014-09-18      APP_END_USER
LUCSA6266       OPEN            2014-12-01      APP_END_USER
LO5639832       OPEN            2014-11-01      APP_END_USER
LORGA09O        OPEN            2014-09-18      APP_END_USER
LOE21800931     OPEN            2014-11-21      APP_END_USER
LIA00022056     OPEN            2014-11-25      APP_END_USER
USUARIO1        OPEN            2014-11-03      APP_END_USER

Tenemos dos cuentas, una se encuentra EXPIRADA y otra BLOQUEADA

La cuenta expirada, es debido a politicas en claves.

Debido a que esta cuenta es una cuenta especial que nadie toca, solamente aplicativos, no requiere de vencimiento de claves, por tanto realizamos un cambio de politica en el perfil asignado, el cual es APP_USER

SQL> alter profile APP_USER limit PASSWORD_REUSE_MAX UNLIMITED PASSWORD_REUSE_TIME default;
Profile altered.

Con esto definimos que el usuario USRCNXNO no maneje expiración de clave y que use siempre la misma contraseña.

Surge una duda o un problema.

Que sucede si no sabemos que clave tenía el usuario y debemos nuevamente asignar la clave que anteriormente tenía?

Bueno, en este caso, usamos el siguiente SQL para que se conserve la misma contraseña.

SQL> select 'alter user "'||d.username||'" identified by values '''||u.password||''';' c from dba_users d, sys.user$ u where d.username = upper('&&username') and u.user# = d.user_id;
Enter value for username: USRCNXNO
old   1: select 'alter user "'||d.username||'" identified by values '''||u.password||''';' c from dba_users d, sys.user$ u where d.username = upper('&&username') and u.user# = d.user_id
new   1: select 'alter user "'||d.username||'" identified by values '''||u.password||''';' c from dba_users d, sys.user$ u where d.username = upper('USRCNXNO') and u.user# = d.user_id
 
C
--------------------------------------------------------------------------------
alter user "USRCNXNO" identified by values '604376B239945A18';

La orden anterior nos solicita el nombre de usuario a consultar, luego de ello nos devuelve el query que debemos ejecutar para asignar misma clave o contraseña.

SQL> alter user "USRCNXNO" identified by values '604376B239945A18';
User altered.

Con esto que hemos hecho?

Hemos desactivado politica de vencimiento de clave y de reutilización de la misma. Además hemos asignado la clave que ya tenía al usuario en cuestión.

El siguiente usuario JANE0909 se encuentra bloqueado.

Para ello ejecutamos

SQL> alter user JANE0909 ACCOUNT UNLOCK;
User altered.

Y esto es todo. El usuario puede volver a conectarse sin problema.

 

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *