首页 » ORACLE » Alert: SEC_CASE_SENSITIVE_LOGON and ORA-1017 after upgrade to 12.2 、18c、19c

Alert: SEC_CASE_SENSITIVE_LOGON and ORA-1017 after upgrade to 12.2 、18c、19c

从oracle 12c R2开始SEC_CASE_SENSITIVE_LOGON=FALSE的配置会认为deprecated ,12.2默认参数值为TRUE.  如果升级后该参数还是从以前版本带到新版本中,那就使情况变的复杂,有可能会遇到ora-1017密码错误的提示, 在配置静态监听时就更有意思。

当升级12c的版本以后如果遇到ORA-1017密码错误,如果密码在未动且正确,或修改了密码后还提示密码错误,首先要检查的是dba_user.password_versions和DB home sqlnet.ora参数中的SQLNET.ALLOWED_LOGON_VERSION_SERVER和SQLNET.ALLOWED_LOGON_VERSION_CLIENT。

PASSWORD_VERSIONS在12.2之前如12.1 有可能是10G 11G 或10G 11G 12C, 并且文件sqlnet.ora文件中SQLNET.ALLOWED_LOGON_VERSION_SERVER默认已成为12,如果是升级后默认password_verison不是会改变,无论是expdp还是RMAN,但是手动新建的用户的password_version会是11G 12C. 如果SQLNET.ALLOWED_LOGON_VERSION_SERVER=12a, 那手动创建和修改后的password_verison就只有12c,但是此时11.2.0.4以下的客户端登录就会提示:

ORA-28040: No matching authentication protocol

所以sqlnet.ora中的ALLOWED_LOGON_VERSION_SERVER的变化影响alter user 修改密码后的password_version.

在12C r2版本的数据库中如果修改SEC_CASE_SENSITIVE_LOGON=FALSE,如果用户是从11g 升上来的并且password_verison为10g 11g, 那连接是就会提示:

ORA-01017: invalid username/password; logon denied

即使使用alter user现在修改用户的密码,从dba_user.password_versions确认已经为”11G 12C”,用户也无法登录还是会提示ora-1017, 因为该SEC_CASE_SENSITIVE_LOGON=FALSE设置与默认的SQL*Net身份验证协议(SQLNET.ALLOWED_LOGON_VERSION_SERVER=12)冲突, 最简单的解决方法就是修改SEC_CASE_SENSITIVE_LOGON=TRUE

当ALLOWED_LOGON_VERSION_SERVER=12 or 12a时,要确保SEC_CASE_SENSITIVE_LOGON不能配置为false. 在值为12 或 12a时,只支持密码区分大小这种更安全的密码验证,所以如果SEC_CASE_SENSITIVE_LOGON=false会导致所有用户无法登录,除了sysdba。

  • Oracle Database 12.1: SQLNET.ALLOWED_LOGON_VERSION_SERVER defaults to 11
  • Oracle Database 12.2 and later: SQLNET.ALLOWED_LOGON_VERSION_SERVER defaults to 12

如何解决ORA-1017 在12C r2后的版本中 ?

1,SEC_CASE_SENSITIVE_LOGON=TRUE

像上面说的配置SEC_CASE_SENSITIVE_LOGON=TRUE,这也是ORACLE趋势性的建议,为了更加安全,应该把该参数配置为TRUE,并且修改sqlnet.ora中的ALLOWED_LOGON_VERSION_SERVER=12 or 12a,然后重置密码,把password_versions中的10g 11g 删掉。但是低于12c版本的降无法访问。

2,SQLNET.ALLOWED_LOGON_VERSION_SERVER

在sqlnet.ora文件中增加SQLNET.ALLOWED_LOGON_VERSION_SERVER低于12,重启监听, 如果用户当前的password_version没有10g 还需要重置密码。

如果客户端使用Oracle Database 10 g,则客户端将收到ORA-03134: Connections to this server version are no longer supported错误消息。如果连接,请将SQLNET.ALLOWED_LOGON_VERSION_SERVER值设置为8。确保DBA_USERS.PASSWORD_VERSIONS帐户的值包含该值10G。可能需要重置该帐户的密码。

更多参考 Database Net Services Reference

3, 在12c 中配置static listener 非1521 port

另外发现如果数据库中配置SEC_CASE_SENSITIVE_LOGON=false,  在12C R2配置多个监听在非1521时,配置静态监听,local_listener中不包含该Port, 即使password_version包含10g, SQLNET.ALLOWED_LOGON_VERSION_SERVER低于12,登录也是提示ORA-1017.

这中情况下把SEC_CASE_SENSITIVE_LOGON=true或把 静态监听的port 加入到local_listener中都是可以解决的。猜测是监听程序默认是以12.2 默认行为,在没有配置local_listener时,listener不知道db的参数配置。

 

升级12C注意事项: 连接失败 ORA-28040 ORA-1017

Oracle 12c 关于密码(password)的几个新特性小结

相关一些MOS

12.2: ORA-28040 Followed by ORA-1017 When Client is Under Version 12. ( Doc ID 2296947.1 )
The new Exclusive Mode default for password-based authentication in Oracle 12.2 conflicts with case-insensitive password configurations. All user login fails with ORA-1017 after upgrade to 12.2 ( Doc ID 2075401.1 )
12c Database Alert.log File Shows The Message: Using Deprecated SQLNET.ALLOWED_LOGON_VERSION Parameter ( Doc ID 2111876.1 )

打赏

, ,

目前这篇文章有1条评论(Rss)评论关闭。

  1. PornDodo | #1
    2020-03-17 at 10:41

    You’re great. Learn from you!