这种感觉怎么形容呢,就和我看到的这个动态图效果差不多,好比左边是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
明白了这一点再来看这个问题就会清晰很多了。不过说来也是,如果我知道了问题的原委再来看详细的解释就会清晰很多,但是如果我不知道,这个过程又是一个非常痛苦的经历。