Oracle 调整密码管理策略 PROFILES

802 阅读2分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

Oracle 数据库如果不修改密码有效期,默认180天之后会报错!

程序报错:java.sql.SQLException: ORA-28001: the password has expired

关于报错 ORA-28001 的说明:

28001, 00000, "the password has expired"
// *Cause:   The user's account has expired and the password needs to be
//           changed
// *Action:  change the password or contact the DBA

原因就是所有用户的密码都失效了!

查看当前使用的profile:

set pages0
set line222
col profile for a20
col resource_name for a30
col resource_type for a20
col limit for a20
select * from dba_profiles order by 1;

utlpwdmg.sql是用户建立密码复杂度校验函数的脚本!该脚本位置在 $ORACLE_HOME/rdbms/admin/,11g中该脚本与10g相比做了一些调整、改进。

启用密码管理:

@?/rdbms/admin/utlpwdmg.sql

调整密码策略:

alter profile default limit  password_life_time unlimited;
alter profile default limit  password_lock_time unlimited;
alter profile default limit  password_grace_time unlimited;
alter profile default limit  FAILED_LOGIN_ATTEMPTS 10;
  • PASSWORD_LIFE_TIME 90 --用于指定口令有效期
  • PASSWORD_GRACE_TIME 10 --用于指定口令宽限期(为了强制用户定期改变口令,以上二者必须同时设置.)
  • PASSWORD_REUSE_TIME 1800 --用于指定口令可重用时间.
  • PASSWORD_REUSE_MAX UNLIMITED --用于指定在重用口令之前口令需要改变的次数.(需要主要,使用口令历史选项时,只能使用以上两种其中的一个选项.并将另一个选项设置为UNLIMITED.)
  • FAILED_LOGIN_ATTEMPTS 3 --用于指定连续登陆的最大失败次数.
  • PASSWORD_LOCK_TIME 1/1440 --用于指定帐户被锁定的天数.
  • PASSWORD_VERIFY_FUNCTION verify_function; --如果要禁用口令校验函数,可以将PASSWORD_VERIFY_FUNCTION选项设置为NULL.

修改之后不需要重启动数据库,会立即生效。

oracle11g启动参数resource_limit  不管是false还是true,密码策略都是生效的。


本次分享到此结束啦~

如果觉得文章对你有帮助,点赞、收藏、关注、评论,一键四连支持,你的支持就是我创作最大的动力。

❤️ 技术交流可以 关注公众号:Lucifer三思而后行 ❤️