公司服务器一直都是使用 .NET+SQLSERVER的开发方式,有个项目需要进行读取远程Oracle的需求。由于oracle 基本不会,也是一边做一遍摸索。

首先是使用工具测试是否已经联通,因为之前用mysql时都是用的Navicat,所以直接在网上下载了Navicat for Oracle,但是死活都连不上,报试过网上所有的方法,下载inistallclient ,修改OCI,加入环境变量,新建tnsnames.ora都没用,一直是Cannot load OCI DLL,126错误,也试过把Navicat与oracle client以及服务器的版本全部统一,照样报错,最后下载Oracle 官方的sqldeveloper,一次成功,话说还是java的牛逼啊。SQLDeveloper 下载地址

接着,使用ADO.NET开始做Oracle连接,发布到服务器上,结果报错 System.Data.OracleClient需要Oracle客户端软件版本8.1.7或更高版本。 试过网上的方案:

1.安装inistallclient 新建环境变量 ,不行

2.web.config 连接直接写成     <add name="ClientOracle" providerName="System.Data.OracleClient" connectionString="Password=XXXX;User ID=XXXX;Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=XXXX)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=ORCL)));" /> 还是不行

3.将oci.dll等4个dll放到System32文件夹下 还是不行

4.安装了Oracle 11g 完全版,依旧不行

5.使用ODBC方式进行连接,还是不行。。。(试的64位,32位没试)

最后的最后,使用Visual Studio Nuget下载安装Oracle.ManagedDataAccess包才成功,而且此包只需要一个DLL和web.config的配置,不需要oracle 客户端。

在生成的web.config中

<configSections>
<section name="oracle.manageddataaccess.client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.122.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
</configSections>
<connectionStrings>
<add name="OracleDataAccess"
connectionString="DATA SOURCE=SampleDataSource;PERSIST SECURITY INFO=True;USER ID=XXXX;Password=XXXX;"
providerName="Oracle.ManagedDataAccess.Client" />
</connectionStrings>
<system.data>
<DbProviderFactories>
<remove invariant="Oracle.ManagedDataAccess.Client" />
<add name="ODP.NET, Managed Driver" invariant="Oracle.ManagedDataAccess.Client" description="Oracle Data Provider for .NET, Managed Driver" type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.122.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
</DbProviderFactories>
</system.data>
<oracle.manageddataaccess.client>
<version number="*">
<dataSources>
<dataSource alias="SampleDataSource" descriptor="(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=XXXX)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL))) " />
</dataSources>
</version>
</oracle.manageddataaccess.client>

只需要修改标红的部分,就可以正常使用ADO.NET的方式进行连接了,在创建链接时使用 new Oracle.ManagedDataAccess.Client.OracleConnection(strConn)进行。

另外过去常用的Oracle.DataAccess(ODP.NET),走的是Unmanaged,需要oci.dll程序库,因此还需要安装Oracle Client,而且32位与64位版本是有区分的,Oracle.DataAccess.dll执行时需要存取Oracle客户端档案,还要排除NTFS权限问题,Path环境变量等问题,比较繁琐。

而Managed ODP.NET 不需要安装Oracle Client 只需要一个Oracle.ManagedDataAccess.dll就可以,而且是Any CPU 不必再为32位/64位苦恼

虽然此技术早已推出,但是还是给oracle新手们一个帮助吧

未安装Oracle客户端的服务器上,使用ASP.NET远程连接Oracle的更多相关文章

  1. Asp.Net 远程连接Oracle数据库

    Asp.Net 远程连接Oracle数据库 首先从微软停止.Net FrameWork支持Oracle数据库的研发,转为第三方提供说起,微软是很有实力的公司,他在桌面领域令其他对手望其项背,产品战线也 ...

  2. linux服务器上的mysql允许远程连接

    首先进入mysql: 输入GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION; 这里是 ...

  3. 【Oracle XE系列之二】PLSQL Developer 远程连接Oracle XE数据库

    1.去http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html下载Instant Cli ...

  4. .net远程连接oracle数据库不用安装oracle客户端

    asp.net远程连接oracle数据库不用安装oracle客户端的方法下面是asp.net连接远程Oracle数据库服务器步骤: 1.asp.net连接oracle服务器需要添加Sytem.Data ...

  5. .net远程连接oracle数据库不用安装oracle客户端的方法

    .net远程连接oracle数据库不用安装oracle客户端的方法步骤: 1.添加Sytem.Data.OracleClient命名空间. 2.连接时需要ConnectionString字符串,出现在 ...

  6. 转:不用安装Oracle客户端,远程连接Oracle数据库

    转摘自: http://blog.sina.com.cn/s/blog_90b20fe70101az2z.html Oracle数据库安装过程较为繁琐,而且卸载更加麻烦,如果卸载不干净,下次安装Ora ...

  7. 未备案域名打开国内服务器上的网站(绑定国外空间并判断url后跳转引用)

    场景:由于域名没备案不能绑定国内服务器,通过先绑定国外空间,在空间着陆页判断当前url,打开不同的页面.页面上通过iframe引用国内服务器上的目标网站. 实现:未备案域名打开国内服务器上的网站. 国 ...

  8. Oracle客户端与服务器字符集不统一的处理

    当Oracle客户端与服务器的字符集不统一时. 症状: 如:ORA-00283: ?????????? 提示信息中有好多问号. 解决方法: 1查询服务器的字符集: SQL> conn / as ...

  9. IIS 之 Web 服务器上的 ASP.NET 进程模型设置

    配置 Microsoft Internet 信息服务 (IIS) Web 服务器上的 ASP.NET 进程模型设置. processModel 节只能在 Machine.config 文件中进行设置, ...

随机推荐

  1. 使用IEDriverServer.exe驱动IE11,实现自动化测试

            +  下载IEDriverServer   http://dl.pconline.com.cn/download/771640-1.html 解压缩得到IEDriverServer.e ...

  2. linux alias 用法

    转自linux alias http://www.maomao365.com/?p=2597 : linux中命令别名设置: <span style="color:blue;font- ...

  3. Latch导致MySQL Crash

    作者:沃趣科技数据库专家 董红禹 问题概述 最近我们遇到一个MySQL的问题,分析后很有代表意义,特地写出来供大家参考.出现问题是,数据库先是被置为只读,然后过了一段时间,MySQL直接Crash掉了 ...

  4. Servlet(一):Hello Servlet

    今天介绍的专题是servlet和jsp,属于web开发中的基础,先来实际操作一下servlet,创建你的第一个web小项目. 1.新建一个maven项目. 鼠标右键单击eclipse左边项目栏的空白区 ...

  5. Ubuntu 12.04上安装HBase并运行

    Ubuntu 12.04上安装HBase并运行 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 一.HBase的安装 在官网上下载HBase-1.1.2 ...

  6. Teradata数据库访问链条

  7. xpath 解析 及案例

    xpath解析 编码流程: 1.实例化一个etree对象,且将页面源码加载到该对象中 2.使用xpath函数,且在函数中必须作用一个xpath表达式进行标签的定位 3.使用xpath进行属性和文本的提 ...

  8. Python实现矿池

    自建P2POOL矿池详细教程(高级篇)http://8btc.com/article-1804-1.html p2pool比特币矿池教程综合篇(包含linux矿池教程)https://www.cybt ...

  9. Centos 7 安装JAVA环境 jdk1.8

    在Linux环境(Centos 7)安装jdk1.8,有以下两种方式 方式一.安装openjdk #   yum install java-1.8.0-openjdk* -y 方式二.使用wget下载 ...

  10. Python中使用class(),面向对象有什么优势 转自知乎

    https://www.zhihu.com/question/19729316 首先我是辣鸡,然后这个问题的确有点意思 首先,类是一个集合,包含了数据,操作描述的一个抽象集合 你可以首先只把类当做一个 ...