默认情况下,Oracle数据库使用不允许不区分大小写的密码的独占模式来管理密码版本。
在默认安装中,SQLNET.ALLOWED_LOGON_VERSION_SERVER
参数设置12
为启用独占模式。独占模式要求基于密码的身份验证协议对正在进行身份验证的帐户使用区分大小写的密码版本(11G
或12C
)之一。独占模式不包括使用10G
早期版本中使用的密码版本。升级到Oracle Database 12 c第 2版(12.2)后,使用10G
密码版本的帐户将无法访问。这是因为默认情况下服务器以独占模式运行,而独占模式不能使用旧10G
密码版本来验证客户端。服务器没有用于验证客户端的密码版本。
版本10g中的用户帐户使用10G
密码版本。因此,您应找到使用10G
密码版本的用户帐户,然后重置这些帐户的密码。这将根据SQLNET.ALLOWED_LOGON_VERSION_SERVER
参数的设置生成相应的密码版本,如下所示:
SQLNET.ALLOWED_LOGON_VERSION_SERVER=8
产生这三个密码版本10G
,11G
和12C
。SQLNET.ALLOWED_LOGON_VERSION_SERVER=12
生成密码11G
和12C
密码版本,并删除10G
密码版本。SQLNET.ALLOWED_LOGON_VERSION_SERVER=12a
仅生成12C
密码版本。
1. 如果您首先将SQLNET.ALLOWED_LOGON_VERSION_SERVER
设置8,如果将用户帐户从Oracle数据库版本10 g(或更早版本)版本导入当前数据库版本,那么因为10G
密码版本不区分大小写,这些用户仍然可以使用任何情况下的密码登录数据库(大小写都可以)。
2. 当这样的用户更改其密码,新的11G
和12C
正在自动生成的密码版本,并且其密码将自动成为区分大小写,因为该实例的初始化参数的默认值SEC_CASE_SENSITIVE_LOGON
是TRUE
。(意识到SEC_CASE_SENSITIVE_LOGON
不推荐使用,但目前保留是为了向后兼容, 但是如果强行将SEC_CASE_SENSITIVE_LOGON 改为false ,那么更改用户密码使用alter user xxx identified by values 'user$.spare4' 的方式,将会报ora-01017)
SEC_CASE_SENSITIVE_LOGON
是TRUE
。
注: 在18C中不推荐使用SEC_CASE_SENSITIVE_LOGON参数。 它仅为了向后兼容而保留。 (文档ID 2502204.1)
您可以查询DBA_USERS
数据字典视图以查找用户帐户具有的所有密码版本的列表 ,版本参数受 sqlnet.ora SQLNET.ALLOWED_LOGON_VERSION_SERVER 参数影响。
例如:
SELECT USERNAME,PASSWORD_VERSIONS FROM DBA_USERS; USERNAME PASSWORD_VERSIONS ------------------------------ ----------------- JONES 10G 11G 12C ADAMS 10G 11G CLARK 10G 11G PRESTON 11G BLAKE 10G
PASSWORD_VERSIONS
列显示该帐户存在的密码版本列表。
10G
是指早期不区分大小写的Oracle密码版本,
11G
是指基于SHA-1的密码版本,
12C
是指基于SHA-2的SHA-512密码版本。
SYS@orcl>show parameter sec_case_sensitive_logon #该参数默认为true NAME TYPE VALUE ------------------------------------ ---------------------- ------------------------------ sec_case_sensitive_logon boolean TRUE SYS@orcl>create user huyi identified by huyi; User created. SYS@orcl>grant create session to huyi ; Grant succeeded. SYS@orcl>select USERNAME,PASSWORD_VERSIONS from dba_users where username='HUYI'; USERNAME PASSWORD_VERSIONS -------------------- -------------------- HUYI 11G 12C SYS@orcl>select NAME,PASSWORD,SPARE4 from user$ where name='HUYI'; NAME PASSWORD SPARE4 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- HUYI S:C4908554DA822CC7940B9B358C4379F6281F520A160D847754DFCE9C93C0;T:53C08F48F150A31703C2661D1658198473C0AEEC4301B8628ACB18877A4199139A3C8C08E20AFDB1CB2D3A027B37CB327BB5260B7493E0E2EA241620B87EE9D9B78706C CBF9CC4CB8CCBBDA78287D9C0 SYS@orcl>alter user huyi identified by 123; User altered. SYS@orcl>select NAME,PASSWORD,SPARE4 from user$ where name='HUYI'; NAME PASSWORD SPARE4 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- HUYI S:A5C3F5954E1A36063AE193B8DFAA96F2E7EC585B60685BFAA93F73F20B30;T:3EFBB5D5BB94C821CD3B4C41F66C942F4BEA3995527544200BED5DA8DFEFA491C32DC4D100FE4F004C637BA9BC8E33884BE9608E6571F504BBEFA05BB32C73A81CE1A0B F4C6BC6B6D1ABB2291C0909B5 SYS@orcl>alter user huyi identified by 123; User altered. SYS@orcl>select NAME,PASSWORD,SPARE4 from user$ where name='HUYI'; NAME PASSWORD SPARE4 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- HUYI S:35E35BF21655390E8F9CF476F81BA7D789DFA28B67F09E6A08D6CCA071CC;T:788BBFA7178299B95B3A7AF927D831352AF0B47ED166146BE8A44F6EAD7C09986472A0B73E576EB9DAFAAC46CC34ACA671A436B06B3243834B7D60DC48D39BB8867EF8F 7230A9D7D9B81EA76A6618DC3 #注,更改相同的密码值,SPARE4的值也是不一样的。 SYS@orcl>alter user huyi identified by values 'S:35E35BF21655390E8F9CF476F81BA7D789DFA28B67F09E6A08D6CCA071CC;T:788BBFA7178299B95B3A7AF927D831352AF0B47ED166146BE8A44F6EAD7C09986472A0B73E576EB9DAFAAC46CC34ACA671A436B06B3243834B7D60DC48D39BB8867EF8F7230A9D7D9B81EA76A6618DC3'; User altered. SYS@orcl>conn huyi/123 Connected.
SYS@orcl>alter system set sec_case_sensitive_logon=false ; #更改参数为false ,不区分大小写 System altered. SYS@orcl>select NAME,PASSWORD,SPARE4 from user$ where name='HUYI'; NAME PASSWORD SPARE4 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- HUYI S:35E35BF21655390E8F9CF476F81BA7D789DFA28B67F09E6A08D6CCA071CC;T:788BBFA7178299B95B3A7AF927D831352AF0B47ED166146BE8A44F6EAD7C09986472A0B73E576EB9DAFAAC46CC34ACA671A436B06B3243834B7D60DC48D39BB8867EF8F 7230A9D7D9B81EA76A6618DC3 SYS@orcl>alter user huyi identified by values 'S:35E35BF21655390E8F9CF476F81BA7D789DFA28B67F09E6A08D6CCA071CC;T:788BBFA7178299B95B3A7AF927D831352AF0B47ED166146BE8A44F6EAD7C09986472A0B73E576EB9DAFAAC46CC34ACA671A436B06B3243834B7D60DC48D39BB8867EF8F7230A9D7D9B81EA76A6618DC3'; User altered. oracle[test01]/home/oracle> sqlplus huyi/123 SQL*Plus: Release 12.2.0.1.0 Production on Thu Jun 27 23:50:43 2019 Copyright (c) 1982, 2016, Oracle. All rights reserved. Enter user-name: ERROR: ORA-01017: invalid username/password; logon denied #ORA-01017 登录失败 SYS@orcl>alter system set sec_case_sensitive_logon=true ; #更改为默认值 oracle[test01]/home/oracle> sqlplus huyi/123 #登录成功 SQL*Plus: Release 12.2.0.1.0 Production on Thu Jun 27 23:51:17 2019 Copyright (c) 1982, 2016, Oracle. All rights reserved. Connected to: Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production TEST@orcl>