12c中报错ORA-28040 No matching authentication protocol 或 ORA-01017 invalid username password

0    773    4

Tags:

👉 本文共约1074个字,系统预计阅读时间或需5分钟。

现象

在Oracle 12c中,本地sqlplus / as sysdba可以正常登陆,但是SYS用户和普通用户远程都不能登陆,报错“ORA-01017: invalid username/password; logon denied”,如下:

表面看,的确是用户名和密码不对。

其实,这是由于12c中的参数sec_case_sensitive_logon配置不当导致的。

在Oracle 11g之前,Oracle用户密码是不区分大小写的。从Oracle 11g开始,密码区分大小写,采用参数SEC_CASE_SENSITIVE_LOGON控制,该参数值默认为TRUE,表示密码区分大小写。但是,在Oracle 12c中,由于该参数已经废弃,所以,不建议修改该参数值。如果将该参数值设置成FALSE,那么启动的时候会有提示:ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instance。

但是,设置成FALSE仍然生效,即忽略密码大小写验证。另外,如果把 sec_case_sensitive_logon设置为false,将导致正常用户无法登录,即使密码都是正确的,也会报 ora-01017错误,用户密码错误 SettingSEC_CASE_SENSITIVE_LOGON to FALSE when
SQLNET.ALLOWED_LOGON_VERSION_SERVER is set to 12 or 12a causes all accounts to become inaccessible

还有另外一个原因,若SYS本地可以登录,但是远程不能登录,那么去看看你是否创建了密码文件,有关密码文件:

解决办法

方法1

把这个参数SEC_CASE_SENSITIVE_LOGON设置为 TRUE.即可恢复正常访问,但密码区分大小写。

方法2

如果还是不想区分大小写,那么可以在sqlnet.ora中,增加以下这行:

再修改一下密码,即可以正常登录!

如果报错“ORA-28040: No matching authentication protocol”,那么解决办法也是修改sqlnet.ora文件。

在rac环境中,需要修改oracle用户的sqlnet.ora文件。

总结

如果你的环境是从11升级到12c环境,那么需要考虑如下2个方面的内容:

1、参数sec_case_sensitive_logon的值,另外需要修改sqlnet.ora。

2、配置wm_concat函数。请参考:https://www.xmmup.com/ora-00904-wm_concat-invalid-identifiercuowujiejue.html

本人提供Oracle、MySQL、PG等数据库的培训和考证业务,私聊QQ646634621或微信db_bao,谢谢!

3、一定要记得创建密码文件,否则SYS用户远程登录会报错“ORA-01017: invalid username/password; logon denied”,如下:

参考

Oracle的SYS用户登录报权限不足(ORA-01031: Insufficient Privileges)的常见原因有哪些?

http://blog.itpub.net/26736162/viewspace-2131338/

标签:

头像

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复

嘿,我是小麦,需要帮助随时找我哦
  • 18509239930
  • 个人微信

  • 麦老师QQ聊天
  • 个人邮箱
  • 点击加入QQ群
  • 个人微店

  • 回到顶部
返回顶部