今天在访问一个老项目时,后台报错提示 oracle account locked,之前一直可以正常访问的,不知道为什么会出现这个问题,百度一下原因大概是多次登陆失败造成的,一般数据库默认是10次尝试失败后锁住用户,找到原因后接下来就是解决问题了,解决思路很简单:对用户解锁就行了,但是问题就出现在了查找用户上。
本身对oracle的结构就不是很熟悉,所以在解锁用户的时候走了很多弯路,下面就一一道来:
一、因为数据库已久远,忘记了sys用户密码,所以只能远程到服务器登陆,在登陆是确遇到了另外一个错误:insufficient privileges
百度后发现是Oracle DBA Group设置问题,于是进行设置,添加当前用户jackvc.qin到ora_dba组:
设置完成后成功,sys成功链接:
接下来就是解锁用户了。
二、同样是由于对Oracle实例、用户概念不够清楚,解锁用户时在dba_users表中竟然找不到被锁定的用户,百思不得其解。后经过查看Oracle配置文件终于发现了问题的所在,原来在服务器上创建了三个数据库实例:databaseA、orcl、databaseC,而那个被锁定的用户是属于实例orcl的,但是在用sys用户登录的时候我并未指定连接到哪个实例(默认连接了databaseA),所以找不到被锁定的用户。找到了原因重新登录sys用户,并指定连接到orcl实例:
找到被锁定用户,解锁用户:
alter user scott account unlock;
重启项目,数据库链接成功!