加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-12 14:14:36 所属栏目:百科 来源:网络整理
导读:最近有网友问到,如何在不知道密码的情况下,重置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请自行查阅相关文章。







?? ??

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读