不知道密码的情况下重置Oracle过期帐号密码
最近有网友问到,如何在不知道密码的情况下,重置Oracle过期被锁帐号密码。 之所以要重置,而不是修改;是因为该帐号被很多下游系统所使用,如果修改了密码下游系统也需要进行修改,比较麻烦。 同时,由于年代久远,也没有人知道该帐号的密码。。。。。
那有没有办法在不知道、且不修改密码的情况下重置密码呢? 答案是肯定的,方法如下: 注:如下操作需要使用sysdba进行(因为需要查询user$ 表)
1、首先查询帐号当前的状态 SELECT username,account_status,expiry_date USERNAME
可以看到当前是过期+锁定状态
2、查询被锁帐号的密码密文 11g及以上 SQL> select password from user$ where name='TEST_USER'; PASSWORD
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 USERNAME
可以看到,帐号的过期状态已经没有了,现在只剩下锁定状态
5、解锁帐号
User altered.
6、最后确认帐号状态
SQL> SELECT username,expiry_date USERNAME
大功告成!
为了防止此帐号以后又被过期锁定,可以考虑对此特殊帐号创建一个单独的profile,并取消密码过期策略。 执行如下sql,查看帐号的profile SQL> SELECT username,profile USERNAME
可以看到是默认的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 PASSWORD_LIFE_TIME
可以看到,默认的DEFAULT PROFILE的密码过期时间是180天,最大密码错误次数为10次(超过帐号就会被锁定)
可以执行如下命令,将其修改为无限制
ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED;
SQL> SELECT resource_name,'FAILED_LOGIN_ATTEMPTS'); RESOURCE_NAME PASSWORD_LIFE_TIME
注间:上面是以默认的DEFAULT PROFILE为例,大家应该根据自己的情况创建不同的PROFILE,有关如何创建PROFILE请自行查阅相关文章。
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |