初始化首次测试请使用用户名: scott, 口令: tiger
正在尝试使用以下用户 ID 连接:scott
测试没有成功。
ORA-28040: 没有匹配的验证协议
...
正在尝试使用以下用户 ID 连接:system
测试没有成功。
ORA-12638: 身份证明检索失败
...
初始化首次测试请使用用户名: scott, 口令: tiger
正在尝试使用以下用户 ID 连接:scott
测试没有成功。
ORA-12528: TNS: 监听程序: 所有适用例程都无法建立新连接
...
C:oracleproduct10.2.0client_1NETWORKADMIN
+++
ORA-12638:身份证明检索失败
本地Sqlplus 连一远程数据库,出现 ORA-12638: 身份证明检索失败,pl/sql developer 也是同样的问题,tnsping 是没有问题的。
找到本地的sqlnet.ora文件,注释掉 SQLNET.AUTHENTICATION_SERVICES= (NTS),
或者把nts 替换为none 即可。
注:SQLNET.AUTHENTICATION_SERVICES 表示oracle将采用何种验证方式,
nts表示采用本地操作系统认证
none表示将采用口令文件方式认证
当然,设定了none后,本地的操作系统认证将不被许可,oracle将采用口令文件认证(此时 remote_login_passwordfile=exclusive)如connect /as sysdba 登录,后报错RA-01031: insufficient privileges,实际上是要你输入sysdba的用户名和密码
(https://www.cnblogs.com/login2012/p/6202729.html
+++
这里要检查几个地方
1)当前oracle允许远程吗?
2)对当前oracle客户端连接的最低版本进行调整。
我们可以根据这两个原则来检查.
1、oracle允许远程吗?
查询参数 REMOTE_LOGIN_PASSWORDFILE是不是 EXCLUSIVE
SQL> show parameter REMOTE_LOGIN_PASSWORDFILE
NAME TYPE VALUE
———————————— ——————————
remote_login_passwordfile string EXCLUSIVE
SQL>
如果不是 EXCLUSIVE,则设置为 EXCLUSIVE即可。
2、对当前oracle客户端连接的最低版本进行调整。
打开sqlnet.ora文件,比如我的路径为:
C:appAdministratorvirtualproduct12.2.0dbhome_1etworkadmin sqlnet.ora
在文件里面添加两个参数(我这里允许客户端为8i的就可以连接)
SQLNET.ALLOWED_LOGON_VERSION_SERVER=8
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8
保存,然后重启oracle服务就可以了。
注意:有时候设置成功后,使用正确的用户名和密码登录,又出现 “ORA-01017用户名/口令无效;登录被拒绝”,这里需要修改密码后,才能登录。
Tag: Oracle错误 Oracle19c