`
honley
  • 浏览: 117125 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

免Oracle客户端安装的开发部署方法

 
阅读更多

一、问题描述

在开发C#.Net客户端程序时,使用了ODAC连接数据库,其开发环境需要安装ODP.NET插件,实际上是安装了一个Oracle Client。其连接Oracle的字符串直接配置到了这个Oracle Client下的配置文件中(%ORA_HOME%\client_1\NetWork\tnsnames.ora)中,信息如下:

 

HJSYSDB =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.18.52)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = ORCL)
    )
  )

 

 

由于连接字符串的IP和数据库实例需要在这个特定文件中配置,与所开发的客户端程序分离,对于项目的部署来说多出了两步:1Oracle客户端的安装(480M多);2)数据库连接的手动配置。

 

为减少多余的安装过程以及便于将数据库连接的配置放置到项目程序中,使程序部署更简单化,需要一种免Oracle客户端的安装部署方法。

 

二、问题解决

直接使用ODP.net提供的动态库(最小支持),放置到项目启动目录下,如下文件:

 

oci.dll
ociw32.dll
Oracle.DataAccess.dll
oraocci11.dll
oraociei11.dll
OraOps11w.dll

 

 

在项目的app.config中增加以下配置,为应用程序提供数据库连接驱动:

 


<system.data>    
   <DbProviderFactories>
      <remove invariant="Oracle.DataAccess.Client" />
      <add name="Oracle Data Provider for .NET" invariant="Oracle.DataAccess.Client"
           description="Oracle Data Provider for .NET"
           type="Oracle.DataAccess.Client.OracleClientFactory, Oracle.DataAccess, Version=4.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
    </DbProviderFactories>
  </system.data>

 

 

由于没有使用Oracle客户端的连接实例,在程序中的连接需要做特别指定数据库连接的IP和数据库实例信息,如下所示:

            string connectionString = 
                  " DATA SOURCE=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)"
                + "(HOST=192.168.18.52)(PORT=1521))"
                + "(CONNECT_DATA=(SERVICE_NAME=ORCL)));"
                + "USER ID=data;PASSWORD=data;";

            using (OracleConnection connection = new OracleConnection(connectionString))
            {
                string sql = "**********";
                connection.Open();
                OracleCommand cmd = new OracleCommand(sql, connection);
                OracleDataAdapter dataReader = new OracleDataAdapter(cmd);
                DataSet dataSet = new DataSet();
                dataReader.Fill(dataSet);
                gridControl1.DataSource = dataSet.Tables[0];
            }

 

如果使用实体集,之前直接使用Oracle客户端提供的连接字符串,App.config中的配置是这样的(留意HJSYSDB):

  <connectionStrings>
    <add name="DataEntities"
         connectionString="metadata=res://*/Models.DataModel.csdl|res://*/Models.DataModel.ssdl|res://*/Models.DataModel.msl;
         provider=Oracle.DataAccess.Client;
         provider connection string=&quot;
         DATA SOURCE=HJSYSDB;
         PERSIST SECURITY INFO=True;USER ID=DATA&quot;"
         providerName="System.Data.EntityClient" />
  </connectionStrings>

 

使用免安装的方法后,实体集的连接字符串也需要做相应的修改,其中改变的主要内容是DATA SOURCE的配置,其中包括了数据库服务器的IP地址以及数据库实例。

  <connectionStrings>
    <add name="DataEntities"
         connectionString="metadata=res://*/Models.DataModel.csdl|res://*/Models.DataModel.ssdl|res://*/Models.DataModel.msl;
         provider=Oracle.DataAccess.Client;
         provider connection string=&quot;
         DATA SOURCE=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.18.52)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL)));
         PERSIST SECURITY INFO=True;USER ID=DATA&quot;"
         providerName="System.Data.EntityClient" />
  </connectionStrings>

 

 

三、问题总结

1、使用ODP.net提供的Oracle.DataAccess.dll时,需要注意连接服务器的Oracle版本及程序所部署系统的版本问题。

 

2、Web程序的相关配置与此方法大致相同。

分享到:
评论

相关推荐

    精简ORACLE10客户端(运行时)支持WIN10 64/32

    使用压缩包内的ora10client.exe安装精简的oracle客户端,全部选择默认安装,会将ODBC的驱动名字设置为Oracle in instantclient10_2,支持XP win7 32/64 win10 32/64可连接 服务器oracle版本:经测试oracle10g和oracle...

    oracle 19c 客户端

    Oracle 19c 客户端简版, 适合开发应用服务器安装部署

    Oracle InstantClient 10.2.0.4 (With ODBC driver) Windows Installer- Part 3

    Oracle InstantClient是一个简化的Oracle客户端,其安装、配置过程都很简单,5分钟即可完成。 InstantClient一般不用于开发环境,而是为简化需要通过OCI访问Oracle数据库的应用程序的部署而设计的。 本安装程序...

    Oracle InstantClient 10.2.0.4 (With ODBC driver) Windows Installer- Part 1

    Oracle InstantClient是一个简化的Oracle客户端,其安装、配置过程都很简单,5分钟即可完成。 InstantClient一般不用于开发环境,而是为简化需要通过OCI访问Oracle数据库的应用程序的部署而设计的。 本安装程序...

    c# oracle 免客户开发

    在做过的项目中,经常有连接Oracle数据库的情况,但是由于种种原因,无法在部署程序的电脑上安装Oracle客户端。这里提供了一种简单的,无需安装和多余配置的方法。适用于.NET C#。

    Oracle InstantClient 10.2.0.4 (With ODBC driver) Windows Installer- Part 2

    Oracle InstantClient是一个简化的Oracle客户端,其安装、配置过程都很简单,5分钟即可完成。 InstantClient一般不用于开发环境,而是为简化需要通过OCI访问Oracle数据库的应用程序的部署而设计的。 本安装程序...

    OracleDataAccess 64

    但是一般服务器都是64位的,安装的也是64位的Oracle客户端,如果要部署使用Oracle.DataAccess连接Oracle的应用程序时,可能会遇到版本上的问题。 主 要版本问题有两种,一种是32位版和64位版的问题,如果我们开发...

    C#通过webservice连接Oracle 9i数据库

    C#运行的程序电脑不需要安装Oracle客户端,只需要将webservice接口部署在已经安装有客户端的机子上,即可实现操作Oracle 9i数据库!

    如何使用Oracle 10gR2 Instant Client Light执行程序部署

    Oracle 10g Release 2(10gR2)中推出的新版本Instant Client Light容量更小。它的共享库容量只有32MB。...在过去,即使可以使用Instant Client部署程序,也还需要完整的客户端开发包去连接Oracle库中的代码。

    Oracle Database 11g初学者指南--详细书签版

    3.10 安装Oracle 11g客户端软件 71 3.11 本章测验 75 第4章 SQL:结构化查询语言 77 4.1 SQL语句的组成 78 4.1.1 DDL 78 4.1.2 DML 79 4.2 基本的insert和select语句 79 4.2.1 insert 79 4.2.2 select 80 ...

    instantclient_11_2

    Oracle Instant Client使应用程序能够连接到本地或远程Oracle数据库以进行开发和生产部署。Instant Client库提供必要的网络连接以及基本和高端数据功能,以充分利用Oracle数据库。它是流行语言和环境的Oracle API的...

    Oracle_Database_11g完全参考手册.part3/3

    通过学习《Oracle Database 11g完全参考手册》,您可以了解如何实现最新的安全措施,如何调优数据库的性能,如何部署网格计算技术。附录部分内容丰富、便予参照,包括Oracle命令、关键字、功能以及函数等。 目录 ...

    Oracle_Database_11g完全参考手册.part2/3

    通过学习《Oracle Database 11g完全参考手册》,您可以了解如何实现最新的安全措施,如何调优数据库的性能,如何部署网格计算技术。附录部分内容丰富、便予参照,包括Oracle命令、关键字、功能以及函数等。 目录 ...

    ORACLE SOA 11g 环境搭建手册 for Linux

    3.3. 客户端配置 38 4. 使用RCU配置资料档案库 40 4.1. 运行RCU 40 5. 安装WebLogic 42 5.1. 启动安装程序 42 6. 安装SOA套件 45 6.1. 启动安装程序 45 6.2. 配置SOA 47 6.3. 启动SOA 52 7. 开发一个SOA组合应用 53 ...

    SSL 和windows及浏览器等兼容性报告

    ssl引擎提供的选项是从 自从Netscape开发SSL2.0以来的早期。TLS的引入使问题变得更具有挑战性,因为服务器和客户端根据各个ssl引擎提供不同的可用选项。 (OpenSSL、NSS、SChannel等)他们用。事实证明,找到中间地带...

    oracle驱动包11.2.0.4.rar

    ODP.NET 托管式驱动程序完全由.NET Framework 提供程序编写,支持开发人员在 10 MB 以下的部署软件包中部署单个程序集。 ODP.NET 非托管式驱动程序是使用 Oracle 数据库客户端的传统 Oracle ADO.NET 提供程序。

    VB+Tuxedo.zip

    本软件是通过VB语言去调用oracle的中间件Tuxedo,客户端不需要安装Tuxedo客户端,通过DLL直接去调用,这样方便了客户端的开发及环境部署!

    ejb3+ant开发实例

    在工作之余整理出了基于ejb3的简单企业级开发demo,本实例采用了两个项目来实现(一个客户端和一个服务器端),并且采用ant进行打包、部署,默认采用oracle11g数据库 客户端可以安装到任何java web服务器中(例如...

Global site tag (gtag.js) - Google Analytics