oracle 12c 密码有效期

今天以system用户登陆一个oracle 12c的测试数据库时,提示密码过期:

oracle 12c 密码有效期

此时没有出现修改密码的提示!

在服务器上通过sqlplus工具访问提示修改密码:

oracle 12c 密码有效期

这里先不修改密码。

检查用sys用户以sysdba身份登陆数据库,查看此时的dba_users视图:

oracle 12c 密码有效期

可以看到system用户状态已过期。

查看DEFAULT配置文件中对密码的配置:

oracle 12c 密码有效期

可以看到,默认的配置允许用户尝试输入密码10次(FAILED_LOGIN_ATTEMPTS),连续输入10次后还是错误的话,oracle会锁账号1天(PASSWORD_LOCK_TIME)。密码有效期是180天(PASSWORD_LIFE_TIME),到期前7天(PASSWORD_GRACE_TIME)oracle会提示用户修改密码。

这时通过sqlplus工具更改system用户的密码:

oracle 12c 密码有效期

然后再次查看dba_users视图:

oracle 12c 密码有效期

可以看到,system用户的状态已恢复为OPEN,失效日期更新为2018/08/27 11:45:46。

由此可知,如果一个oracle数据库用户的密码被设置了有效期,那么,在重置了密码后oracle会自动更新密码下一次的失效日期。DBA需要关注用户密码的失效日期,保证用户的状态。

另外,经过测试发现,oracle 12c中,cdb和pdb之间的配置文件(profile)是相互独立的,需要分别设置,例如:profile中PASSWORD_LIFE_TIME的limit默认都是180天的有效期,我们可以将cdb中的system密码设置为360天的有效期,pdb中的system密码设置成无限期。