PL/SQL连接Oracle数据库ORA-12638身份证明检索失败

PL/SQL连接Oracle数据库ORA-12638身份证明检索失败

问题的发现与解决

我在使用PL/SQL连接Oracle数据库时显示身份证明检索失败信息,但是我通过navicat连接该数据库能够成功连接,经过研究发现把sqlnet.ora文件修改一下就可以解决该问题:

SQLNET.AUTHENTICATION_SERVICES= (NTS)

修改为

SQLNET.AUTHENTICATION_SERVICES= (BEQ,NONE)

sqlnet.ora文件的位置在 安装目录\product\11.2.0\dbhome_1\NETWORK\ADMIN\sqlnet.ora

然后我们再来研究一下sqlnet.ora文件到底起了什么作用:

sqlnet.ora文件

它简单来说就是一个Oracle的配置文件,里面有一些配置项,程序读取配置项进行一些配置,sqlnet.ora中的内容:

SQLNET.AUTHENTICATION_SERVICES= (BEQ,NONE)
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)

SQLNET.AUTHENTICATION_SERVICES指定启动一个或多个认证服务

认证服务就是指Oracle的身份验证服务,你登陆Oracle时,有的时候不需要输入用户名,有的时候既需要输入用户名,也需要输入密码。那什么时候什么都不需要输入,什么时候都需要输入呢?这就和这里指定的认证服务有关系了。一般有以下三种取值:

  1. NONE:作用是不允许通过OS系统用户登录数据库,需要提供用户名及密码;
  2. ALL:作用是允许所有的登录方式;
  3. NTS:作用是允许本地操作系统用户认证;
  4. BEQ:进程间直接通信,不需要走网络监听,性能更高;

NAMES.DIRECTORY_PATH指定CLIENT NAME解析方法的次序

我们连接数据的时候,会有以下的语法格式的输入:

CONNECT username/password [@db_alias] AS [SYSOPER | SYSDBA] ;

这个db_alias就是在tnsnames.ora中定义的数据库的别名。NAMES.DIRECTORY_PATH当第一个指定为TNSNAMES时,就先到tnsnames.ora文件中去找对应的db_alias;如果找不到,就再按指定的第二种方式去找;如果都找不到,就将指定的db_alias当做主机名在网络上进行解析,得到数据库服务器的地址。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值