情况描述:
今天更改一个生产上的用户密码
Alter user XXX identified by password;
相应的也在应用层做了更改,配置文件,report平台等等之类的相关地方都做了测试.
木有发生问题,接着在中午吃饭的时候就把相应的更改部署到生产环境上.
这个时候问题就来了,因为客户端有一部分的功能模块是把密码写进程序里头的,其余的模块都分得很清晰,
密码配置文件在APP Server上,
这里就需要他们update程序,只要关闭程序再打开就自动升级了,
(不像原来自己写的C/S程序,长连接,可以直接T掉所有用户~)
这个升级的过程中,问题就来了,有些用户,还未关闭程序,他们继续使用,
如果有使用那个模块(把密码写进程序里的)的话,就会造成连接数据库失败,
并且继续连接,继续失败,失败次数多了,这个数据库的user就自动被lock起来了.
这个失败N次后锁定的参数在dba_profiles表里的limit字段体现.
SYS@PPTD(3.49)> select * from dba_profiles where
resource_name='FAILED_LOGIN_ATTEMPTS';
PROFILE RESOURCE_NAME RESOURCE LIMIT
------------------------------ -------------------------------- -------- ----------
DEFAULT FAILED_LOGIN_ATTEMPTS PASSWORD 10
MONITORING_PROFILE FAILED_LOGIN_ATTEMPTS PASSWORD UNLIMITED
真囧啊,中午原本认为没啥问题了,就去吃饭了,结果一回来发现部分用户hang在那里了,user被lock住了,好纳闷,
解锁后,并修改为失败后不锁定 unlimited,解决了这个问题.
SYS@PPTD(7.15)> alter user 用户 account unlock;
SYS@PPTD(7.15)> ALTER PROFILE default LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED;
查看帐户的锁定情况
SYS@PPTD(7.15)> select username,account_status from dba_users;
USERNAME ACCOUNT_STATUS
------------------------------ --------------------------------
MGMT_VIEW OPEN
SYS OPEN
SYSTEM OPEN
DBSNMP OPEN
SYSMAN OPEN
KEYUSER OPEN
OUTLN EXPIRED & LOCKED
MDSYS EXPIRED & LOCKED
ORDSYS EXPIRED & LOCKED
EXFSYS EXPIRED & LOCKED
DMSYS EXPIRED & LOCKED
WMSYS EXPIRED & LOCKED
CTXSYS EXPIRED & LOCKED
ANONYMOUS EXPIRED & LOCKED
XDB EXPIRED & LOCKED
ORDPLUGINS EXPIRED & LOCKED
SI_INFORMTN_SCHEMA EXPIRED & LOCKED
OLAPSYS EXPIRED & LOCKED
SCOTT EXPIRED & LOCKED
ORACLE_OCM EXPIRED & LOCKED
TSMSYS EXPIRED & LOCKED
MDDATA EXPIRED & LOCKED
DIP EXPIRED & LOCKED