最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
如何调整Oracle用户密码复杂度策略
时间:2026-08-25 09:33:49 编辑:袖梨 来源:一聚教程网
必须重新执行utlpwdmg.sql并显式绑定到profile才生效;直接修改脚本内容无效,因Oracle只调用profile中PASSWORD_VERIFY_FUNCTION字段指定的函数,需先查用户profile及绑定函数,再以SYS AS SYSDBA执行脚本并ALTER PROFILE绑定。
直接改 utlpwdmg.sql 文件内容没用,必须重新执行脚本并绑定到 profile 才生效。
确认当前生效的密码验证函数
很多问题出在“以为改了就生效”,其实 profile 没更新。先查清楚谁在管密码校验:
- 查用户用哪个 profile:
SELECT profile FROM dba_users WHERE username = 'YOUR_USER'; - 查该 profile 绑定的函数:
SELECT limit FROM dba_profiles WHERE profile = 'DEFAULT' AND resource_name = 'PASSWORD_VERIFY_FUNCTION'; - 如果返回
NULL,说明没启用复杂度;如果是verify_function_11G或ora12c_strong_verify_function,说明已启用但可能版本不匹配
执行 utlpwdmg.sql 前必须满足的三个条件
跳过任一检查,脚本会编译成功但函数不触发校验,或者直接报错。
- 必须以
SYS AS SYSDBA连接,SYSTEM或普通 DBA 权限不够 -
RESOURCE_LIMIT必须为TRUE:运行SHOW PARAMETER resource_limit,若为FALSE,先执行ALTER SYSTEM SET resource_limit = TRUE; - 路径要对——Oracle 12c+ 自带的脚本在
$ORACLE_HOME/rdbms/admin/utlpwdmg.sql,别用网上下载的同名文件覆盖原版
修改密码规则时能动和不能动的地方
常见需求是调低长度、去掉特殊字符要求,但改法不对等于关掉校验。
- 可安全调整:
min_length(11g)、length(12c+)、min_uppercase/upper、min_lowercase/lower、min_digits/digit、min_special/special - 禁止删或注释掉
raise_application_error分支前的任意校验逻辑,否则函数可能提前返回TRUE - 别在函数里加
DBMS_OUTPUT.PUT_LINE—— 登录鉴权阶段没有输出上下文,还可能因权限报ORA-06502
改完之后必须做的两步操作
只改脚本或只改函数定义,都不算完成。
- 重新执行脚本:
@?/rdbms/admin/utlpwdmg.sql(注意是@,不是START) - 显式绑定到 profile:
ALTER PROFILE DEFAULT LIMIT PASSWORD_VERIFY_FUNCTION ora12c_strong_verify_function;(12c+ 推荐)或verify_function_11G(11g 兼容) - 验证是否生效:用测试用户执行
ALTER USER test_user IDENTIFIED BY simple123;,看是否报ORA-28003及具体错误码
最常被忽略的是 profile 绑定这一步——函数编译成功 ≠ 生效;还有人把 utlpwdmg.sql 改完后忘了重新执行,只改了源文件,数据库里还是旧函数。