今天测试库有个账户的密码忘了,试了十几次就开始提示:
ERROR:
ORA-28000: the account is locked
意思明显就是账户被锁了,可能是用户的资源设置中对密码重试次数做了限制。
验证:
SQL> select a.username, b.profile, b.resource_name, b.limit
2 from dba_users a, dba_profiles b
3 where a.username = 'GALTTEST' and a.profile = b.profile;
GALTTEST DEFAULT COMPOSITE_LIMIT UNLIMITED
GALTTEST DEFAULT SESSIONS_PER_USER UNLIMITED
GALTTEST DEFAULT CPU_PER_SESSION UNLIMITED
GALTTEST DEFAULT CPU_PER_CALL UNLIMITED
GALTTEST DEFAULT LOGICAL_READS_PER_SESSION UNLIMITED
GALTTEST DEFAULT LOGICAL_READS_PER_CALL UNLIMITED
GALTTEST DEFAULT IDLE_TIME UNLIMITED
GALTTEST DEFAULT CONNECT_TIME UNLIMITED
GALTTEST DEFAULT PRIVATE_SGA UNLIMITED
GALTTEST DEFAULT FAILED_LOGIN_ATTEMPTS 10
GALTTEST DEFAULT PASSWORD_LIFE_TIME 180
GALTTEST DEFAULT PASSWORD_REUSE_TIME UNLIMITED
GALTTEST DEFAULT PASSWORD_REUSE_MAX UNLIMITED
GALTTEST DEFAULT PASSWORD_VERIFY_FUNCTION NULL
GALTTEST DEFAULT PASSWORD_LOCK_TIME 1
GALTTEST DEFAULT PASSWORD_GRACE_TIME 7
确实如此,只允许10次尝试,之后账户就会被锁。
解锁方法很多,通过PLSQL Developer工具解锁可能是最简单、最直观的。
1、用管理员账户登录PLSQL Developer(登录名可以为system,选择类型的时候把Normal修改为Sysdba)。
2、左侧选择My Objects,查看Users文件夹。
3、选择GALTTEST用户,右击点击”编辑“;
4、把“帐户被锁住”的勾去掉;(也可以修改密码)。
5、点击“应用”再点击“关闭”;
6、重新登录就可以通过验证了;
其实使用sqlplus命令行解锁也很简单,用管理员账号sysdba角色登录,执行alter user GALTTEST account unlock;,即可解锁。
另外,使用如下命令将profile的FAILED_LOGIN_ATTEMPTS属性值修改也可以达到过滤重试次数的限制。
ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED
附:创建profile的SQL:
create profile test limit;