select username,profile from dba_users ; 确认用户使用的profile 文件,默认为default
select * from dba_profiles where profile='PROFILE_NAME'; PROFILE_NAME 为根据上步查出的结果
FAILED_LOGIN_ATTEMPTS 用户登录时允许输入密码错误的次数 默认10
PASSWORD_LOCK_TIME 由于达到输入口令错误次数造成账号锁定后,锁定的时间 单位是天,1/1440(1 分钟) ,5/1440 (5 分钟),10/24/60 (10 分钟)
PASSWORD_LIFE_TIME 密码使用的最长时间,超过这个时间后密码将失效必须重设密码
PASSWORD_GRACE_TIME 密码到达这个时间后将提示用户修改密码,在达到PASSWORD_LIFE_TIME 时间前用户可以修改密码。这个时间一般要小于PASSWORD_LIFE_TIME
更改上述限制: 已default profile 的FAILED_LOGIN_ATTEMPTS 为例:
alter profile default limit FAILED_LOGIN_ATTEMPTS 6;
alter profile default limit PASSWORD_LOCK_TIME 5/1440;
alter profile default limit PASSWORD_LIFE_TIME ;
alter profile default limit PASSWORD_GRACE_TIME 80;
alter profile default limit PASSWORD_VERIFY_FUNCTION $ORACLE_HOME/rdbms/admin/utlpwdmg.sql;
// 解除用户锁定
SQL> alter user hr account unlock;
PASSWORD_VERIFY_FUNCTION 指定密码验证函数该函数通过 $ORACLE_HOME/rdbms/admin/utlpwdmg.sql 脚本创建,可以修改该脚本之后限制数据库的密码验证,如密码长度 ,复杂度等
以下内容为该文件中的注释,每个注释后面是相应的验证 plsql 语句:
-- Check for the minimum length of the password 密码的最小长度,可以更改最小长度为 8
-- Check if the password contains at least one letter, one digit and one 密码至少包含一个字母 一个数字 和一个特殊字符 (默认)
-- Check if the password is too simple. 检查密码是否过于简单,比如是某个单词等,可以将预知的过于简单的密码写在里面
注意该脚本的后面有 更改 default profile 的默认设置,如果该设置不符合要求应将其注释掉,以免对 profile 造成影响,注释方法每行前加 --
密码验证文件修改完毕后,在 sqlplus 里执行该文件 @?/rdbms/admin/utlpwdmg.sql
create user hi identified by hello#2011;
grant connect,resource to hi;
password hi
drop user hi;