ORA-12560: TNS:protocol adapter error 或 OraOLEDB.Oracle provider is not registered on local machine

本文介绍了在VB.net中遇到ORA-12560: TNS:protocol adapter error和OraOLEDB.Oracle provider is not registered on the local machine错误时的解决办法。首先检查DB Connect String是否正确,其次确认Oracle服务和监听口是否开启。针对OraOLEDB.Oracle提供者未注册的问题,可能的原因包括权限问题、sqlnet.ora配置错误或注册表注册丢失,可通过修改配置、注册dll或重装客户端来解决。

ORA-12560: TNS:protocol adapter error

报错信息

使用VB.net 连接Oracle DB时, 遇到以下两个报错:

  1. ORA-12560: TNS:protocol adapter error, TNS: 协议适配器错误
  2. The 'OraOLEDB.Oracle' provider is not registered on the local machine.

前期基础检查

先检查一些基础的配置是否有问题。如 配置的DB Connect String

  1. Oracle DB Connect String 的信息 是否与 TNS文件(tnsnames.ora)设定的 是否一致。
  2. Oracle DB Connect String 是否配置有误等等。
  3. 例如
<add key="CommonDB" value="Provider=OraOLEDB.Oracle;Data Source=testDB;User Id =test;password=test"/>

<!--缺少了 [Data Source=]-->
<add key="CommonDB" value="Provider=OraOLEDB.Oracle;testDB;User Id =test;password=test"/>
DB Connect String 缺少了 Data Source=, 也会报错:ORA-12560: TNS:protocol adapter error,

进一下检查,其他解决方法

一:检查监听口是否开启。在开始-运行,输入services.msc或者在控制面板-管理工具,进入服务。找到OracleOraDb11g_home1TNSListener,检查是否开启。
二:检查实例的服务是否开启。同步骤1,进入服务,找到OracleService数据库名,检查是否开启。
二:找到xxxxx\product\11.2.0\dbhome_1\NETWORK\ADMIN文件夹下的listener.ora文件和tnsnames.ora文件
查看

LISTENER_ORCL =
  (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))

即HOST=xxxxxx都修改成为HOST = localhost 或者是当前ip地址(地址可能和本机地址不匹配)
重新执行lsnrctl start


The ‘OraOLEDB.Oracle’ provider is not registered on the local machine的原因

在网上查了一下是OraOLEDB.dll 没有注册到注册表中。
找到11g相应的OraOLEDB11.dll所在位置,在命令行中进行注册
regsvr32 app/<user>/product/11.1.0/db_1/BIN/OraOLEDB11.dll (dll的路徑)

这种情况有3种可能的原因

1.装Oracle 的机器是不是NTFS的?如果是的话,将/Ora81下的BIN的权限,全部放开,给所有用户。
(不然在B/S结构下会因为没有权限访问目录而报这个错误)

2.如果数据库服务器是Oracle816的。在服务器的那台机器上找Ora81/network/ADMIN下的sqlnet.ora文件,把里面的
SQLNET.AUTHENTICATION_SERVICES= (NTS)改成
SQLNET.AUTHENTICATION_SERVICES= (NONE)
(这种会造成某些机器上报驱动初始化失败的错误,在用OracleClient下出现过一次)

3.如果以上都没有解决问题。可以考虑是不是注册表里的注册真的丢失了。(可能性比较小,windows还是比较安全的)
regsvr32 …/ORACLE_HOME/bin/OraOLEDB.dll
再不行可以重装一下客户端试试。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值