如何解决Oracle DB 密码重置为相同密码问题
我有一个奇怪的问题,我无法弄清楚
数据库:Oracle 11g 用户: DBA_USERS 表中的 PASSWORD_VERSIONS 列最初的值为 10g 11g。
V$PARAMETER 中的 sec_case_sensitive_logon 值为空
SYS.USER$ 表在 PASSWORD 和 SPARE4 列中有一些值。
我想再次将用户 SAMPLEUSER 的密码重置为相同的密码。
执行将用户密码重置为相同旧密码的步骤(由数据库人员执行)
1.将 PASSWORD_VERSIONS 列值更新为 10g(不确定是在以下步骤中更新还是手动更新)
2.从SYS.USER$表的PASSWORD列中获取Hash值。
3.使用旧的哈希值(来自 sys.user$ 中的密码列)重置密码 -- 更改由值 'hashvalue' 标识的用户 SAMPLEUSER
现在用户无法连接到数据库,因为密码错误。这是什么问题。 有没有可能解决这个问题?
解决方法
将 PASSWORD_VERSIONS 列值更新为 10g
您不应直接更新数据字典视图。
,您使用的是哪个版本的客户端?如果您在 alter user 命令中提供的唯一哈希是 10G 版本,那么您可能没有为更高版本的客户端重新创建正确的哈希。
设置 PASSWORD_VERSIONS 的唯一方法是更改服务器 sqlnet.ora 文件中的 SQLNET.ALLOWED_LOGON_VERSION 参数 (11g) SQLNET.ALLOWED_LOGON_VERSION_SERVER(12c 及更高版本)参数并重新启动服务器。这将更改数据库可以支持的客户端类型,因为特定的客户端版本将需要特定的密码哈希值。除非您实际支持 10g 客户端,否则不应将其设置为 10。它应该始终/仅设置为匹配您架构中支持的最低客户端版本。
在 Oracle 11g 中,SQLNET.ALLOWED_LOGON_VERSION 的设置有以下作用:
- SQLNET.ALLOWED_LOGON_VERSION = 10 将允许 10G 和 11G 密码
- SQLNET.ALLOWED_LOGON_VERSION = 11 将只允许 11G 密码
在 Oracle 12 及更高版本中,SQLNET.ALLOWED_LOGON_VERSION 的设置有以下作用:
- SQLNET.ALLOWED_LOGON_VERSION_SERVER=11 将继续生成 10G、11G 和 12c 密码版本
- SQLNET.ALLOWED_LOGON_VERSION_SERVER=12 将 生成 11G 和 12C 密码版本,并删除 10G 密码版本。
- SQLNET.ALLOWED_LOGON_VERSION_SERVER=12a 将 仅生成 12c 密码版本
请参阅以下链接,了解 Oracle 如何创建和存储密码哈希,以及使用“按值识别”和 10g、11g 和 12c 密码的多种哈希类型的示例:
鉴于 SQLNET.ALLOWED_LOGON_VERSION 或 SQLNET.ALLOWED_LOGON_VERSION_SERVER 的设置(特别是让摆脱最不安全的 10G 密码,如果可能): >
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。