密码版本的概念
什么是Oracle的密码版本(Password Version)呢? 这里所说的密码版本(Password Version) 术语指的是身份验证协议的版本,而不是Oracle Database的版本.虽然它看起来像数据库版本一样,实际意义并不相同.一般不同的密码版本对应不同密码哈希算法,需通过配置参数和重置用户密码实现.
sqlnet文件中的参数allowed_logon_version_server可以设置如下值:
- 12a: for Oracle Database 12c release 12.1.0.2 or later authentication protocols (strongest protection)
- 12: for Oracle Database 12c release 12.1 authentication protocols (default and recommended value)
- 11: for Oracle Database 11g authentication protocols
- 10: for Oracle Database 10g authentication protocols
- 9: for Oracle9i Database authentication protocol
- 8: for Oracle8i Database authentication protocol
Oracle数据库密码版本用于控制服务器接受的客户端连接的最低版本。这个参数的值代表了不同的客户端认证版本,每个数字代表一个特定的认证协议版本。服务器在身份验证特定账户所需的密码版本方面也更具限制性。客户端是否能够身份验证特定账户取决于服务器的SQLNET.ALLOWED_LOGON_VERSION_SERVER参数设置,以及指定账户存在的密码版本。密码版本的列表可以在 DBA_USERS.PASSWORD_VERSIONS 中看到。
ALLOWED_LOGON_VERSION_SERVER参数值密码版本客户端要求客户端版本要求Exclusive Mode12a12CO7L_MROracle 12c release 1 (12.1.0.2) client或后面版本才能连接数据库Yes1211G,12CO5L_NPOracle 11g release 2 (11.2.0.3) client或后续版本才能连接数据库Yes1110G,11G,12CO5L使用 Oracle Database 10g 及更高版本的客户端可以连接到服务器,使用早于 Oracle Database 11.2.0.3 版本且未应用关键补丁更新 CPUOct2012 或更高版本补丁的客户端必须使用 10G 密码版本。No1010G,11G,12CO5L同上一行No910G,11G,12CO4L同上一行No810G,11G,12CO3L同上一行No设置连接到Oracle 数据库时允许的最低身份验证协议,有些版本协议有排他模式(Exclusive Mode),不允许低版本的客户端连接到数据库,此时可能会报下面错误:- – ORA-28040: No matching authentication protocol error
- – ORA-03134: Connections to this server version are no longer supported
复制代码 如果没有sqlnet.ora或sqlnet.ora中没有设置参数allowed_logon_version_server, 这个参数有没有默认值呢? 答案是有, 从Oracle 12.2这个版本开始,参数allowed_logon_version_server的默认值是12.
查看密码版本
查看数据库用户的密码版本可以使用下面SQL:- SET LINESIZE 720
- COL USERNAME FOR A30
- SELECT USERNAME,PASSWORD_VERSIONS,ACCOUNT_STATUS FROM DBA_USERS ORDER BY USERNAME;
复制代码 修改密码版本
没有直接的命令修改Oracle账号的密码版本,密码版本取决于sqlnet.ora中的参数SQLNET.ALLOWED_LOGON_VERSION_SERVER, 如果数据库迁移或一些需求,需要你修改数据库
密码版本,你可以按照下面步骤修改.
步骤1: 修改$ORACLE_HOME/network/admin下的sqlnet.ora参数文件- ---For Generating all Password Versions 10G, 11G and 12c
- SQLNET.ALLOWED_LOGON_VERSION_SERVER=8 or 9 or 10 or 11
- ---For Generating the 11G and 12c password Versions
- SQLNET.ALLOWED_LOGON_VERSION_SERVER=12
- ---For Generate only 12c Password Versions
- SQLNET.ALLOWED_LOGON_VERSION_SERVER=12a
复制代码 具体选择哪一个密码版本,取决于你的具体需求.具体参考上面的表格.
步骤2: 重新修改账号密码- ALTER USER xxxx IDENTIFIED BY '*******';
复制代码 如果使用账号的原始密码,也要执行上面SQL
步骤3: 检查验证账号的密码版本- SET LINESIZE 720
- COL USERNAME FOR A30
- SELECT USERNAME,PASSWORD_VERSIONS,ACCOUNT_STATUS FROM DBA_USERS ORDER BY USERNAME;
复制代码 参考资料
https://docs.oracle.com/en/database/oracle/oracle-database/18/spmsu/finding-and-resetting-user-passwords-10g-password-version.html
https://docs.oracle.com/en/database/oracle/oracle-database/19/netrf/parameters-for-the-sqlnet.ora.html#GUID-B2908ADF-0973-44A9-9B34-587A3D605BED
扫描上面二维码关注我如果你真心觉得文章写得不错,而且对你有所帮助,那就不妨帮忙“推荐"一下,您的“推荐”和”打赏“将是我最大的写作动力!本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接.
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |