System.Data.OleDb.OleDbException: 未找到 Oracle 客户端和网络组件

时间:2021-06-29 07:45:45
执行一个webservice方法以后出现下面的Error.
os: windows 2003
.net framework : 3.5
已经安装了oracle数据库,但还是提示找不到,请高手指点。


System.Data.OleDb.OleDbException: 未找到 Oracle 客户端和网络组件。这些组件是由 Oracle 公司提供的,是 Oracle 8i 版 (或更高) 客户软件安装的一部分。

在安装这些组件之前,将无法使用此提供程序。
   在 System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr, OleDbConnection connection)
   在 System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject)
   在 System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup)
   在 System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
   在 System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
   在 System.Data.OleDb.OleDbConnection.Open()
   在 System.Data.Common.DbDataAdapter.QuietOpen(IDbConnection connection, ConnectionState& originalState)
   在 System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
   在 System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
   在 System.Data.Common.DbDataAdapter.Fill(DataSet dataSet)
   在 _database.ReturnDataset(String _sql)
   在 WS.Database.ReturnResult(String _sql)

20 个解决方案

#1


不光要安装Oracle,还要安装Oracle Data Provider for .NET。

#2


webservice 连不上Oracle  是不是少驱动??

#3


这个是用的是OleDb,所以他使用oracle自己的驱动应该就可以了。
以前也没有安装过Oracle Data Provider for .NET。

或者能不能给一个Oracle Data Provider for .NET的下载链接?
谢谢
引用 1 楼 caozhy 的回复:
不光要安装Oracle,还要安装Oracle Data Provider for .NET。

#4


需要在Net Manager里面配置 服务。你配了没?

#5


引用 3 楼 asangel 的回复:
这个是用的是OleDb,所以他使用oracle自己的驱动应该就可以了。
以前也没有安装过Oracle Data Provider for .NET。

或者能不能给一个Oracle Data Provider for .NET的下载链接?
谢谢
引用 1 楼 caozhy 的回复:
不光要安装Oracle,还要安装Oracle Data Provider for .NET。


怎么不用 System.Data.OracleClient呢?

#6


要解决以上问题,只要给Authenticated  Users  组加*问Oracle  Home目录的权限即可1、以Administrator权限登录Windows  2、启动Window  资源浏览器找到ORACLE_HOME目录,如C:\Oracle\ora92  3、右键弹出菜单,选择该目录共享与安全(Win2000下要点击属性)  4、点击  “安全”  页签  5、在组和用户名称列表中点击“Authenticated  Users”  项.  6、在该用户的权限列表中,将“读取和运行”的选择框置为不选中状态  7、再次点击“读取和运行”的选择框,将其设置为选中状态  8、点击“高级”按钮并在权限项目中确定“Authenticated  Users”  是否拥有“读取并运行”权限并应用于“该文件夹,及子文件夹和文件”.  如果不是,双击这样,并确保权限可以“应用于”  “该文件夹,及子文件夹和文件”.  该项非常重要你一定要核查.  9、点击“确定”  按钮  10、重启动,  以使得所有的修改生效


我遇到过 这样的问题

#7


权限设置要应用到所有子目录

#8


引用 3 楼 asangel 的回复:
或者能不能给一个Oracle Data Provider for .NET的下载链接?


http://www.oracle.com/technology/tech/dotnet/index.html

#9


这样也是试了,还是不行
引用 6 楼 jijunwu 的回复:
要解决以上问题,只要给Authenticated  Users  组加*问Oracle  Home目录的权限即可1、以Administrator权限登录Windows  2、启动Window  资源浏览器找到ORACLE_HOME目录,如C:\Oracle\ora92  3、右键弹出菜单,选择该目录共享与安全(Win2000下要点击属性)  4、点击  “安全”  页签  5、在组和用户名称列表中点击“Authenticated  Users”  项.  6、在该用户的权限列表中,将“读取和运行”的选择框置为不选中状态  7、再次点击“读取和运行”的选择框,将其设置为选中状态  8、点击“高级”按钮并在权限项目中确定“Authenticated  Users”  是否拥有“读取并运行”权限并应用于“该文件夹,及子文件夹和文件”.  如果不是,双击这样,并确保权限可以“应用于”  “该文件夹,及子文件夹和文件”.  该项非常重要你一定要核查.  9、点击“确定”  按钮  10、重启动,  以使得所有的修改生效


我遇到过 这样的问题

#10


看了一下,oracle数据库已经安装了Oracle Data Provider for .NET
引用 8 楼 cooolchen 的回复:
引用 3 楼 asangel 的回复:

或者能不能给一个Oracle Data Provider for .NET的下载链接?



http://www.oracle.com/technology/tech/dotnet/index.html

#11


哪位高手知道需要哪些 “Oracle 客户端和网络组件” 的文件,
把这些文件放到哪里webservice可以找到呢?
是不是放到system32下面肯定可以找到?
谢谢

#12


CHECK

#13


我把oracle92/bin下面的dll全部copy到system32下面以后,
又出现了下面的错误,

System.Data.OleDb.OleDbException: 发生了一个 Oracle 错误,但无法从 Oracle 中检索错误信息。
   在 System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr, OleDbConnection connection)
   在 System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject)
   在 System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup)
   在 System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
   在 System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
   在 System.Data.OleDb.OleDbConnection.Open()
   在 System.Data.Common.DbDataAdapter.QuietOpen(IDbConnection connection, ConnectionState& originalState)
   在 System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
   在 System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
   在 System.Data.Common.DbDataAdapter.Fill(DataSet dataSet)
   在 _database.ReturnDataset(String _sql)
   在 WSMES.Database.ReturnResult(String _sql)

#14


up

#15


先直接用sqlplus连接看看.

在检查检查net manager里面是否配置正确.

#16


用sqlplus可以正确连接
引用 15 楼 xray2005 的回复:
先直接用sqlplus连接看看.

在检查检查net manager里面是否配置正确.

#17


第一种方法:



找到 Oracle 9i 客户端的安装目录,我的是d:\oracle,右键属性-〉安全-〉选择上面的用户Authenticated Users,将权限的读取及运行(默认应该就是选中的),将选中点击为不选中(就是勾去掉),然后在点击选中,然后应用,确定,然后重新启动系统。看起来是没有进行操作,但实际上还是有作用的,原因不清楚,有人说是Oracle的BUG 。



第二种方法:



找到Oracle 9i 客户端的安装目录,我的是 d:\oracle,右键属性-〉安全-〉添加Everyone这个用户,并赋给完全控制的权限,然后应用,确定,然后重新启动系统。

#18


该回复于2009-10-11 09:02:58被版主删除

#19


下载:
http://www.oracle.com/technology/global/cn/software/tech/windows/odpnet/index.html
Oracle Developer Tools for Visual Studio 

引用Oracle.DataAccess.dll就可以了

#20


虽然问题没有解决,但是非常感谢楼上的各位。

#1


不光要安装Oracle,还要安装Oracle Data Provider for .NET。

#2


webservice 连不上Oracle  是不是少驱动??

#3


这个是用的是OleDb,所以他使用oracle自己的驱动应该就可以了。
以前也没有安装过Oracle Data Provider for .NET。

或者能不能给一个Oracle Data Provider for .NET的下载链接?
谢谢
引用 1 楼 caozhy 的回复:
不光要安装Oracle,还要安装Oracle Data Provider for .NET。

#4


需要在Net Manager里面配置 服务。你配了没?

#5


引用 3 楼 asangel 的回复:
这个是用的是OleDb,所以他使用oracle自己的驱动应该就可以了。
以前也没有安装过Oracle Data Provider for .NET。

或者能不能给一个Oracle Data Provider for .NET的下载链接?
谢谢
引用 1 楼 caozhy 的回复:
不光要安装Oracle,还要安装Oracle Data Provider for .NET。


怎么不用 System.Data.OracleClient呢?

#6


要解决以上问题,只要给Authenticated  Users  组加*问Oracle  Home目录的权限即可1、以Administrator权限登录Windows  2、启动Window  资源浏览器找到ORACLE_HOME目录,如C:\Oracle\ora92  3、右键弹出菜单,选择该目录共享与安全(Win2000下要点击属性)  4、点击  “安全”  页签  5、在组和用户名称列表中点击“Authenticated  Users”  项.  6、在该用户的权限列表中,将“读取和运行”的选择框置为不选中状态  7、再次点击“读取和运行”的选择框,将其设置为选中状态  8、点击“高级”按钮并在权限项目中确定“Authenticated  Users”  是否拥有“读取并运行”权限并应用于“该文件夹,及子文件夹和文件”.  如果不是,双击这样,并确保权限可以“应用于”  “该文件夹,及子文件夹和文件”.  该项非常重要你一定要核查.  9、点击“确定”  按钮  10、重启动,  以使得所有的修改生效


我遇到过 这样的问题

#7


权限设置要应用到所有子目录

#8


引用 3 楼 asangel 的回复:
或者能不能给一个Oracle Data Provider for .NET的下载链接?


http://www.oracle.com/technology/tech/dotnet/index.html

#9


这样也是试了,还是不行
引用 6 楼 jijunwu 的回复:
要解决以上问题,只要给Authenticated  Users  组加*问Oracle  Home目录的权限即可1、以Administrator权限登录Windows  2、启动Window  资源浏览器找到ORACLE_HOME目录,如C:\Oracle\ora92  3、右键弹出菜单,选择该目录共享与安全(Win2000下要点击属性)  4、点击  “安全”  页签  5、在组和用户名称列表中点击“Authenticated  Users”  项.  6、在该用户的权限列表中,将“读取和运行”的选择框置为不选中状态  7、再次点击“读取和运行”的选择框,将其设置为选中状态  8、点击“高级”按钮并在权限项目中确定“Authenticated  Users”  是否拥有“读取并运行”权限并应用于“该文件夹,及子文件夹和文件”.  如果不是,双击这样,并确保权限可以“应用于”  “该文件夹,及子文件夹和文件”.  该项非常重要你一定要核查.  9、点击“确定”  按钮  10、重启动,  以使得所有的修改生效


我遇到过 这样的问题

#10


看了一下,oracle数据库已经安装了Oracle Data Provider for .NET
引用 8 楼 cooolchen 的回复:
引用 3 楼 asangel 的回复:

或者能不能给一个Oracle Data Provider for .NET的下载链接?



http://www.oracle.com/technology/tech/dotnet/index.html

#11


哪位高手知道需要哪些 “Oracle 客户端和网络组件” 的文件,
把这些文件放到哪里webservice可以找到呢?
是不是放到system32下面肯定可以找到?
谢谢

#12


CHECK

#13


我把oracle92/bin下面的dll全部copy到system32下面以后,
又出现了下面的错误,

System.Data.OleDb.OleDbException: 发生了一个 Oracle 错误,但无法从 Oracle 中检索错误信息。
   在 System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr, OleDbConnection connection)
   在 System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject)
   在 System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup)
   在 System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
   在 System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
   在 System.Data.OleDb.OleDbConnection.Open()
   在 System.Data.Common.DbDataAdapter.QuietOpen(IDbConnection connection, ConnectionState& originalState)
   在 System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
   在 System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
   在 System.Data.Common.DbDataAdapter.Fill(DataSet dataSet)
   在 _database.ReturnDataset(String _sql)
   在 WSMES.Database.ReturnResult(String _sql)

#14


up

#15


先直接用sqlplus连接看看.

在检查检查net manager里面是否配置正确.

#16


用sqlplus可以正确连接
引用 15 楼 xray2005 的回复:
先直接用sqlplus连接看看.

在检查检查net manager里面是否配置正确.

#17


第一种方法:



找到 Oracle 9i 客户端的安装目录,我的是d:\oracle,右键属性-〉安全-〉选择上面的用户Authenticated Users,将权限的读取及运行(默认应该就是选中的),将选中点击为不选中(就是勾去掉),然后在点击选中,然后应用,确定,然后重新启动系统。看起来是没有进行操作,但实际上还是有作用的,原因不清楚,有人说是Oracle的BUG 。



第二种方法:



找到Oracle 9i 客户端的安装目录,我的是 d:\oracle,右键属性-〉安全-〉添加Everyone这个用户,并赋给完全控制的权限,然后应用,确定,然后重新启动系统。

#18


该回复于2009-10-11 09:02:58被版主删除

#19


下载:
http://www.oracle.com/technology/global/cn/software/tech/windows/odpnet/index.html
Oracle Developer Tools for Visual Studio 

引用Oracle.DataAccess.dll就可以了

#20


虽然问题没有解决,但是非常感谢楼上的各位。

#21