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

0    1154    4

Tags:

👉 本文共约1068个字,系统预计阅读时间或需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中,增加以下这行:

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信dbaup66,谢谢!
AiDBA后续精彩内容已被站长无情隐藏,请输入验证码解锁本文!
验证码:
获取验证码: 请先关注本站微信公众号,然后回复“验证码”,获取验证码。在微信里搜索“AiDBA”或者“dbaup6”或者微信扫描右侧二维码都可以关注本站微信公众号。

标签:

Avatar photo

小麦苗

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

您可能还喜欢...

发表回复