Oracle 11g密码过期问题

时间:2021-04-09 20:50:47

Oracle 11g默认用户密码会在使用180天后过期,我们可以通过dba_users数据字典看一下用户的信息。

SQL> select username,account_status,lock_date,expiry_date,created,profile from dba_users;

结果如下:

Oracle 11g密码过期问题

我们可以看到账号的创建时间与过期时间相差180天。对于生产系统,账号是不能发生变动的,因此我们希望能够将账号的过期时间改为:永不过期。如何修改呢?在Oracle数据库中,用户对系统资源的限制与对用户口令的管理都是通过概要文件实现的,如果在创建用户时不指定概要文件,则使用的概要文件为数据库默认概要文件,体现在上图中的PROFILE=DEFAULT。

可以通过dba_profiles数据字典查询信息

SQL> select * from dba_profiles where profile=upper('default'); 

结果如下:

Oracle 11g密码过期问题

这里对几个参数进行解释:

  • PASSWORD_LIFE_TIME:密码的有效天数,到达天数后,密码将置为过期,需要重新设置密码;
  • FAILED_LOGIN_ATTEMPTS:用户登录允许失败的次数,用户登录失败的次数达到该值后,账户被锁定,只有解锁后才能登录数据库
  • PASSWORD_LOCK_TIME:登录失败后,账号被锁定的时间;
  • PASSWORD_GRACE_TIME:用户密码到期前这几天中,会收到密码过期的警告,当到达过期天数后,原口令过期

对于大部分概要文件参数的修改语法为:

SQL> ALTER PROFILE profile_name LIMIT pro_parameter  [integer | UNLIMITED | DEFAULT]

在这里,我们需要密码有效天数改为无限制,直接使用下面命令即可修改:

SQL> ALTER PROFILE default LIMIT password_life_time UNLIMITED;

虽然这只是一个小问题,但往往由于不注重这样的小问题,在生产中造成巨大的损失,我们不可不防。