不修改用户密码的前提下,解锁用户_20200724

不修改用户密码的前提下,解锁用户

 

1.0需求:某用户通知,无法登陆,用户被锁定,但是密码不知道 或者 不告诉你

 

1.1:用户被锁定:几种可能性
A用户使用默认Pfile概要文件,其中参数:

-- PASSWORD_LIFE_TIME 180          密码有效保留时间

B用户使用默认Pfile概要文件,其中参数:

-- FAILED_LOGIN_ATTEMPTS 10        登录失败后,允许尝试登录的次数

-- PASSWORD_LOCK_TIME   1      登录失败后,超出限制,账户锁定天数

C 用户使用的自定义设置:本次实验不做考虑

 

1.2故障模拟
#创建测试用户

SQL> create user yang identified by asfqr1rfa10;

#锁定用户

SQL> alter user yang account lock;

 

#PL/SQL登陆报错

 

SQL*Plus登陆报错

SQL> conn yang/asfqr1rfa10; 

ERROR:

ORA-28000:

Warning: You are no longer connected to ORACLE.

#查询报错解释说明

SQL> !oerr ora 28000

28000, 00000, "the account is locked"

// *Cause:   The user has entered wrong password consequently for maximum

//           number of times specified by the user's profile parameter

//           FAILED_LOGIN_ATTEMPTS, or the DBA has locked the account

// *Action:  Wait for PASSWORD_LOCK_TIME or contact DBA

#输入错误的密码,超出允许输入错误次数的范围,用户被锁定

#DBA锁定  请联系DBA

 

1.3解决思路
1.3.1查询信息
# SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';

SQL>  select USERNAME,PASSWORD,ACCOUNT_STATUS,LOCK_DATE,PROFILE from dba_users where username ='YANG';

YANG        用户

LOCKED     锁定

2018-01-14 01:25:21   锁定时间

DEFAULT   概要文件默认

 

1.3.2 查询用户密码 hash后的值
SQL>select name,password from user$ where name='YANG'

 

NAME       PASSWORD

---------- ------------------------------------------------------------

YANG       BF382C1C900CB086

 

1.3.2使用密码hash值解锁用户,密码不修改
SQL> alter user yang identified by values 'BF382C1C900CB086' account unlock;

 

1.3.3验证
SQL> conn yang/asfqr1rfa10

Connected.

 

1.3.4设置密码永不过期
默认概要文件180天过期,可以修改概要文件参数

#查询用户账户密码到期时间

SQL>  alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';

SQL>  select username,expiry_date from dba_users where username in('HR','YANG');

USERNAME                                                     EXPIRY_DATE

------------------------------------------------------------ -------------------

YANG                                                         2018-07-13 01:49:18

HR                                                           2018-07-12 06:09:24

 

SQL> select sysdate from dual;

2018-01-14 01:55:04

 

#修改无限制OK

alter profile default limit password_life_time unlimited;

 

#查询验证

SQL> select username,expiry_date from dba_users where username in('HR','YANG');

 

USERNAME   EXPIRY_DATE

---------- -------------------

YANG

HR

 

#扩展:可以修改上述:密码登录错误后,允许尝试连接次数,修改无限制:慎重

2.0.19C_12C后 USER$基表PASSWD 隐藏使用SPARE4,本质与上述情况相同

SQL> select username,PASSWORD from dba_users where username='TT';
USERNAME   PASSWORD
---------- --------------------
TT
SQL> alter user TT identified by tt;

SQL> select name,SPARE4 from user$ where name='TT';
NAME    SPARE4
------------------------------------------------------------------------------------------------------------------------
TT
S:134EF36DAD8F80789EF1A0300578E90D101166791E2FCA004DE1881D6BF2;T:E00A1212D37A709DA6645EEC923832BD93A5F98787CDCC04CB599FD
8BBDF1304804F26AC470C8FCFF455F3EE6B962105B61C0E2A561C1BD8087CED910169E903B5D759386AB82AEB6C23529D851D1D15

SQL> alter user cc identified by values 'S:134EF36DAD8F80789EF1A0300578E90D101166791E2FCA004DE1881D6BF2;T
:E00A1212D37A709DA6645EEC923832BD93A5F98787CDCC04CB599FD8BBDF1304804F26AC470C8FCFF455F3EE6B962105B61C0E2A561C1BD8
087CED910169E903B5D759386AB82AEB6C23529D851D1D15
'; $ sqlplus cc/tt@192.168.60.45:1521/pp1 SQL>
原文地址:https://www.cnblogs.com/lvcha001/p/8975554.html