Oracle修改用户密码引发的问题

前几天通过plsql登录数据库时,提示密码过期,需要修改密码,那就修改呗。改完过了会,再登录,发现用户被锁了。那就去解锁下吧。

一、登录数据库服务器

su oracle;

sqlplus "/as sysdba";

alter user xx account unlock;

重新登,发现还是锁着的,怀疑是有应用服务一直在尝试连数据库导致锁定,遂先把服务给停掉了。

二、查看用户状态

Oracle修改用户密码引发的问题_第1张图片

发现状态是LOCKED(TIMED),也就是用户登录失败次数超过限制被锁定,且设置了时效的。

三、查看profile配置

 SELECT resource_name,resource_type,limit FROM dba_profiles WHERE profile='DEFAULT'

Oracle修改用户密码引发的问题_第2张图片

发现FAILED_LOGIN_ATTEMPTS字段是10,也就是失败10次后就锁定。

相关字段解释:

(1) 对数据库资源做限制
sessions_per_user  每个用户名所允许的并行会话数
cpu_per_session    一个会话一共可以使用的cpu时间,单位是百分之一秒
ccpu_per_call     一次sql调用(解析、执行和获取)允许使用的cpu时间
connect_time     限制会话连接时间,单位是分钟
idle_time         允许空闲会话的时间,单位是分钟
logical_reads_per_session  限制会话对数据块的读取,单位是块
logical_reads_per_call    限制sql调用对数据块的读取,单位是块
composite_limit         指定一个会话的总的资源消耗,以service units单位表示
private_sga          限制会话在sga中shared pool中私有空间的分配

(2) 对密码做限制
failed_login_attempts    帐户被锁定之前可以错误尝试的次数
password_life_time      密码可以被使用的天数,单位是天,默认值180天
password_reuse_time      密码可重用的间隔时间(结合password_reuse_max)
password_reuse_max     密码的最大改变次数(结合password_reuse_time)
password_lock_time       超过错误尝试次数后,用户被锁定的天数,默认1天
password_grace_time     当密码过期之后还有多少天可以使用原密码
password_verify_function   该字段允许将复杂的PL/SQL密码验证脚本做为参数传递到create

 

然后按网上大部分的说法,将这个限制去掉或加大失败次数即可。

alter profile DEFAULT limit FAILED_LOGIN_ATTEMPTS UNLIMITED;

然后重新将用户解锁,一般这样下来就可以了。但我发现并没有成功。

原因就出在第三步,当前用户并没有采用默认的profile配置,而网上提供的方法都是默认default 的

查看当前用户采用的profile配置名,发现并不是default

 select profile from dba_users where username='xx'

所以要重新修改下

alter profile xxprofilename limit FAILED_LOGIN_ATTEMPTS UNLIMITED;

再去解锁用户,就OK了。

 

 

你可能感兴趣的:(其它,数据库)