默認情況下,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>