RAC下使用者登入失敗ORA-01017

studywell發表於2019-09-19

1.1.      RAC下使用者登入失敗ORA-01017

1.1.1.   參考

記一個12c的chm bug導致的ORA-01017

https://blogs.oracle.com/database4cn/12cchm-bugora-01017

 

SEC_CASE_SENSITIVE_LOGON and ORA-1017

 

官方文件:

GIMR (Management Database) Registers Into Same Service that the Database Instance also registers On RAC (文件 ID 2024572.1)

MGMTDB registers Database Service (文件 ID 2063662.1)

 

 

1.1.2.   問題現象

一個19.3叢集資料庫,發現所有所有使用SCANIP登入CDB或PDB連線報ORA-01017錯誤,錯誤內容:“使用者名稱/口令無效; 登入被拒絕”。

首先,重置使用者名稱密碼,確認了使用者名稱和密碼正確無問題。

實際測試過程如下:

1)        兩個節點都提供服務,1節點重啟後,

mgmt和scanip 在2節點,

透過scan連線失敗;

1節點物理和vip都失敗

2節點兩ip都成功;

 

2)        兩個節點都提供服務,2節點重啟後

mgmt和scanip 在1節點,

透過scan連線失敗;

1節點物理和vip都失敗

2節點兩ip都成功;

 

3)        兩個節點都提供服務,兩個節點都重啟後

mgmt在1節點,scanip切換到2節點

透過scan連線失敗;

1節點物理和vip都失敗

2節點兩ip都成功;

 

4)        關閉1節點,只用2節點提供服務

mgmt在2節點,scanip切換到2節點

透過scan連線成功;

2節點兩ip都成功;

 

1.1.3.   網上資料

 

 

 

 

1.1.4.   問題分析

 

仔細回憶做過的變更,為什麼只有1節點有問題?!

修改過profile配置,如執行alter system set sec_case_sensitive_logon=false scope=both sid='*';

查相關文件,發現 Lockout of all database authenticated users getting error ORA-01017: invalid username/password; logon denied ( 文件 ID 2040705.1)

該mos提示,修改set sec_case_sensitive_logon引數為false後,必須修改sqlnet.ora檔案中SQLNET.ALLOWED_LOGON_VERSION_SERVER小於12,否則將導致所有連線登入失敗,同時報ORA-01017錯誤。

看到這,回憶起為解決ORA-01017錯誤,保證低版本客戶端可連線資料庫,修改oracle使用者下的sqlnet.ora檔案。檔案新增如下內容,即將密碼版本從預設12降低到9,支援Oracle 10G客戶端訪問。:

SQLNET.ALLOWED_LOGON_VERSION_SERVER=9

SQLNET.ALLOWED_LOGON_VERSION_CLIENT=9

SQLNET.INBOUND_CONNECT_TIMEOUT = 120

當時記得兩個節點都增加了該內容,今天檢查發現2節點增加了內容,1節點沒有增加該內容。

1節點sqlnet.ora新增引數後,資料庫連線恢復正常。

這就解釋了為什麼2節點能登入,而1節點登入不了。

 

按官方文件建議:

維持set sec_case_sensitive_logon為預設值TRUE,以提高資料庫安全性,可執行如下語句:alter system set sec_case_sensitive_logon=true scope=both sid='*';

同時在叢集所有節點增加sqlnet.ora內容,內容如下:,

SQLNET.ALLOWED_LOGON_VERSION_SERVER=9

SQLNET.ALLOWED_LOGON_VERSION_CLIENT=9

SQLNET.INBOUND_CONNECT_TIMEOUT = 120

增加內容後,需重新修改資料庫使用者名稱密碼,以支援低版本10G資料庫客戶端。當然,如素有客戶但11.2.0.4以上,則不需要修改sqlnet.ora檔案。

檢視使用者支援的密碼版本:select username, password_versions from DBA_USERS where username='SYSTEM';

 

1.1.5.   分析過程走過的彎路:

一種說法是叢集名和CDB資料庫名相同,叢集MGMTDB註冊到CDB服務下,導致使用者連線CDB失敗,可參考文件:

MGMTDB registers Database Service (Doc ID 2063662.1)

GIMR (Management Database) Registers Into Same Service that the Database Instance also registers On RAC (Doc ID 2024572.1)

搭建測試叢集,建立和叢集名相同CDB,未發現服務異常問題,可正常訪問CDB,初步排除是CDB和叢集名相同衝突導致。該bug可能以在19.3修復。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29519108/viewspace-2657636/,如需轉載,請註明出處,否則將追究法律責任。

相關文章