场景:打包部署时jdbc配置文件中的oracle密码错误。
结果:oracle用户被锁。
原因分析:一般数据库默认是 10 次尝试失败后锁住用户
用于Linux的环境变量未配置,必须在oracle用户当前执行文件下以dba登入:sqlplus / as sysdba
1、用dba角色的用户登陆,进行解锁,先设置具体时间格式,以便查看具体时间
SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
Session altered.
2、查看具体的被锁时间
SQL> select username,lock_date from dba_users where username='TEST';
USERNAME LOCK_DATE TEST 2011-03-10 08:51:03
3、解锁
SQL> alter user test account unlock;
还可以将一个用户锁住:
1: SQL> ALTER USER username ACCOUNT LOCK;
User altered.
SQL>commint;
4、查看是那个ip造成的test用户被锁
查看$Oracle_HOME/network/admin/log/listener.log日志
10-MAR-2011 08:51:03 * (CONNECT_DATA=(SID=lhoms)(SERVER=DEDICATED)(CID=(PROGRAM=oracle)(HOST=omstestdb)(USER=oraoms))) * (ADDRESS=(PROTOCOL=tcp)(HOST=218.77.123.123)(PORT=49434)) * establish * lhoms * 0
10-MAR-2011 08:51:03 * (CONNECT_DATA=(SID=lhoms)(SERVER=DEDICATED)(CID=(PROGRAM=oracle)(HOST=omstestdb)(USER=oraoms))) * (ADDRESS=(PROTOCOL=tcp)(HOST=218.77.123.123)(PORT=49435)) * establish * lhoms * 0
这样可知是上面218.77.123.123的ip尝试多次失败登陆造成的被锁
修改:用户一般数据库默认是 10 次尝试失败后锁住用户
1、查看FAILED_LOGIN_ATTEMPTS的值
select * from dba_profiles where RESOURCE_NAME = 'FAILED_LOGIN_ATTEMPTS';
2、修改为30次
alter profile default limit FAILED_LOGIN_ATTEMPTS 30;
3、修改为无限次(为安全起见,不建议使用)
alter profile default limit FAILED_LOGIN_ATTEMPTS unlimited;