Oracle 12.2中的一個引數說明(r12筆記第76天)
這種感覺怎麼形容呢,就和我看到的這個動態圖效果差不多,好比左邊是Oracle的使用者,右邊是Oracle的產品組。
所以Oracle 12c中這個引數又有變化,關鍵你有變化,含義還和以前不一樣了,這就讓人很糾結了。
這個問題得從我最近做的一個測試說起。
我配置了一個PDB,但是建立使用者之後,怎麼連線都提示錯誤。
$ sqlplus test/oracle@tcymob0
SQL*Plus: Release 12.2.0.1.0 Production on Fri May 26 18:13:24 2017
Copyright (c) 1982, 2016, Oracle. All rights reserved.
ERROR:
ORA-01017: invalid username/password; logon denied
這個問題讓我很疑惑,我幾乎是排查了所有網路的配置,但是似乎都不奏效,無意中想起這個引數,把它啟用之後,就可以正常連線,禁用大小寫敏感,連線就會失敗,這個配置讓我有些沮喪,有種碰到了bug的感覺。
這一點上就要自我批評了,如果能夠靜下心來仔細看看這個引數的含義,而不是想當然,這個問題的分析就會容易的多。
Ensure that the SEC_CASE_SENSITIVE_LOGON parameter is not set to FALSE if the SQLNET.ALLOWED_LOGON_VERSION_SERVER parameter is set to 12 or 12a. This is because the more secure password versions used for this mode only support case-sensitive password checking. For compatibility reasons, Oracle Database does not prevent the use of FALSE for SEC_CASE_SENSITIVE_LOGON when SQLNET.ALLOWED_LOGON_VERSION_SERVER is set to 12 or 12a. Setting SEC_CASE_SENSITIVE_LOGON to FALSE when SQLNET.ALLOWED_LOGON_VERSION_SERVER is set to 12 or 12a causes all accounts to become inaccessible. If SQLNET.ALLOWED_LOGON_VERSION_SERVER is set to 11 or a lower value, then Oracle recommends that you set SEC_CASE_SENSITIVE_LOGON to TRUE, because the more secure password versions used in Exclusive Mode (when SQLNET.ALLOWED_LOGON_VERSION_SERVER is 12 or 12a) in Oracle Database 12c do not support case insensitive password matching.
官方文件的描述在這裡發現和11g有了很大的差別,這個引數的設定目前是向下相容,但是在新版本中已經過期,在設定的時候務必需要保證sqlnet.ora中的設定需要相容,檔案中的引數SQLNET.ALLOWED_LOGON_VERSION_SERVER如果是12,12a就需要保證SEC_CASE_SENSITIVE_LOGON不為false
明白了這一點再來看這個問題就會清晰很多了。不過說來也是,如果我知道了問題的原委再來看詳細的解釋就會清晰很多,但是如果我不知道,這個過程又是一個非常痛苦的經歷。