不知道密码的情况下重置Oracle过期帐号密码

前端之家收集整理的这篇文章主要介绍了不知道密码的情况下重置Oracle过期帐号密码前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

最近有网友问到,如何在不知道密码的情况下,重置Oracle过期被锁帐号密码。

之所以要重置,而不是修改;是因为该帐号被很多下游系统所使用,如果修改了密码下游系统也需要进行修改,比较麻烦。

同时,由于年代久远,也没有人知道该帐号的密码。。。。。


那有没有办法在不知道、且不修改密码的情况下重置密码呢?

答案是肯定的,方法如下:

注:如下操作需要使用sysdba进行(因为需要查询user$ 表)


1、首先查询帐号当前的状态

SELECT username,account_status,expiry_date
FROM dba_users
WHERE username = 'TEST_USER';

USERNAME
--------------------------------------------------------------------------------
ACCOUNT_STATUS EXPIRY_DATE
-------------------------------- -------------------
TEST_USER
EXPIRED & LOCKED 2017_11_16:11:23:54


可以看到当前是过期+锁定状态


2、查询被锁帐号的密码密文

11g及以上

sql> select password from user$ where name='TEST_USER';

PASSWORD
--------------------------------------------------------------------------------
E00E2CB7754DD48E


10g

select password from dba_users where username='TEST_USER';


得到密文:E00E2CB7754DD48E


3、重置密码

sql> alter user test_user identified by values 'E00E2CB7754DD48E';

User altered.


4、在次确认帐号状态

sql> SELECT username,expiry_date
2 FROM dba_users
3 WHERE username = 'TEST_USER';

USERNAME
--------------------------------------------------------------------------------
ACCOUNT_STATUS EXPIRY_DATE
-------------------------------- -------------------
TEST_USER
LOCKED 2018_05_15:11:26:57


可以看到,帐号的过期状态已经没有了,现在只剩下锁定状态


5、解锁帐号


sql> alter user test_user account unlock;

User altered.


6、最后确认帐号状态


sql> SELECT username,expiry_date
2 FROM dba_users
3 WHERE username = 'TEST_USER';

USERNAME
--------------------------------------------------------------------------------
ACCOUNT_STATUS EXPIRY_DATE
-------------------------------- -------------------
TEST_USER
OPEN 2018_05_15:11:26:57


大功告成!




为了防止此帐号以后又被过期锁定,可以考虑对此特殊帐号创建一个单独的profile,并取消密码过期策略。

执行如下sql,查看帐号的profile

sql> SELECT username,profile
2 FROM dba_users
3 WHERE username = 'TEST_USER';

USERNAME
--------------------------------------------------------------------------------
PROFILE
--------------------------------------------------------------------------------
TEST_USER
DEFAULT


可以看到是默认的DEFAULT PROFILE


sql> SELECT resource_name,limit FROM dba_profiles s WHERE s.profile='DEFAULT' AND resource_name in('PASSWORD_LIFE_TIME','Failed_LOGIN_ATTEMPTS');

RESOURCE_NAME
--------------------------------
LIMIT
--------------------------------------------------------------------------------
Failed_LOGIN_ATTEMPTS
10

PASSWORD_LIFE_TIME
180


可以看到,默认的DEFAULT PROFILE的密码过期时间是180天,最大密码错误次数为10次(超过帐号就会被锁定)


可以执行如下命令,将其修改为无限制


ALTER PROFILE DEFAULT LIMIT Failed_LOGIN_ATTEMPTS UNLIMITED;
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;


sql> SELECT resource_name,'Failed_LOGIN_ATTEMPTS');

RESOURCE_NAME
--------------------------------
LIMIT
--------------------------------------------------------------------------------
Failed_LOGIN_ATTEMPTS
UNLIMITED

PASSWORD_LIFE_TIME
UNLIMITED


注间:上面是以默认的DEFAULT PROFILE为例,大家应该根据自己的情况创建不同的PROFILE,有关如何创建PROFILE请自行查阅相关文章









原文链接:https://www.f2er.com/oracle/206944.html

猜你在找的Oracle相关文章