公司服务器一直都是使用 .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. selenium的基本用法

    selenium需要配合一个driver  我使用的是chrome的driver 注意一定要下载对应浏览器版本的driver 否则会报错的 http://chromedriver.storage.go ...

  2. The process could not read file xxx due to OS error 53

      在不同地域的两个SQL Server服务器上配置了复制(Replication)用于同步数据(生产环境配置有Replication,测试环境也配有Replication),两地通过专线连接起来,这 ...

  3. Python介绍及环境搭建

    摘自http://www.cnblogs.com/sanzangTst/p/7278337.html Python零基础学习系列之二--Python介绍及环境搭建   1-1.Python简介: Py ...

  4. win10监听剪切板变化

    一.第一步导入api #region [DllImport("user32.dll")] public static extern bool AddClipboardFormatL ...

  5. 看到一个想收藏的的AJAX小列子

    用户登录的验证可以使用 form 表单提交,也可以使用 ajax 技术异步提交. AJAX 即 Asynchronous Javascript And XML(异步 JavaScript 和 XML) ...

  6. MySQL常用命令(一)

    (1)库的基础操作 查看已有库: show databases; 创建库(制定默认字符集): ccreate database 库名 default charset=utf8; 查看创建库的语句: s ...

  7. [Hive_5] Hive 的 JDBC 编程

    0. 说明 Hive 的 JDBC 编程 1. hiveserver2 介绍 hiveserver2 是 Hive 的 JDBC 接口,用户可以连接此端口来连接 Hive 服务器 JDBC 驱动类为 ...

  8. Cobalt Strike 服务器搭建及使用

    Cobalt Strike使用中的一些坑(一) http://www.cnblogs.com/miaodaren/articles/7829793.html cobaltstrike3.8服务器搭建及 ...

  9. 基于python的Selenium使用小结

    之前介绍过基于Unittest和TestNG自动化测试框架,然而基于Web端的测试的基础框架是需要Selenium做主要支撑的,这里边给大家介绍下Web测试核心之基于Python的Selenium 一 ...

  10. 《Java大学教程》—第7章 类的实现

    统一建模语言(UML)用方框代表类.方框被分成3部分,第一部分是类名,第二部分是类的属性,第三部分是类的方法.类的属性(属性名称:属性类型):类的方法(方法名称(参数类型):返回值类型).静态的类的属 ...