一、查看用户所属Profile的密码策略设置
select * from dba_profiles where profile=‘DEFAULT’ and resource_type=‘PASSWORD’;
其中:
PASSWORD_LIFE_TIME
密码有效期(天),超过时间密码可能会过期,取决于是否设置了PASSWORD_GRACE_TIME
PASSWORD_GRACE_TIME
密码到期之后可以继续使用的天数,在这段时间内如果登录系统,会提示密码在几天内过期
PASSWORD_REUSE_TIME
密码历史记录保留时间(天),密码在多少天之后可以被重用
PASSWORD_REUSE_MAX
密码历史记录保留次数,密码在修改多少次之后可以被重用
FAILED_LOGIN_ATTEMPTS
最大连续登录失败次数,超过则锁定用户
PASSWORD_LOCK_TIME
超过最大连续登录失败次数后用户锁定时间(天)
PASSWORD_VERIFY_FUNCTION
密码复杂度验证函数
二、密码期限/次数相关设置
执行语句:
ALTER PROFILE DEFAULT LIMIT
PASSWORD_LIFE_TIME 90
PASSWORD_GRACE_TIME 5
PASSWORD_REUSE_TIME UNLIMITED
PASSWORD_REUSE_MAX UNLIMITED
FAILED_LOGIN_ATTEMPTS 3
PASSWORD_LOCK_TIME UNLIMITED;
三、密码复杂度设置
脚本示例:,可根据实际情况修改使用。
示例中,密码最小长度为8位,需同时包含数字、字母、特殊字符。
由于Oracle 10g对密码大小写不敏感,在Oracle 11g中可在上述脚本加入以下内容,并将sec_case_sensitive_logon参数设置为TRUE,强制密码同时包含大小写字母:
– Check the password uses mixed case
if upper(password) = password or lower(password) = password then
raise_application_error(-20012, ‘Password is not mixed case’);
end if;
执行语句,启用密码复杂度验证函数:
ALTER PROFILE DEFAULT LIMIT
PASSWORD_VERIFY_FUNCTION verify_function;