需要访问Oracle数据库应用程序的部署

工作中一个项目需要从Oracle数据库中读取数据,部署时总是提示“需要 oracle 客户端软件 8.1.7 或更高版本” 从网上找资料也是说安装完Oracle 客户端之后需要设置权限之类的,但是一个几十兆的软件给客户附加一个几百兆的Oracle客户端上去,总感觉不爽吧,从网上查到 有 Oracle 9i 精简版客户端12.1M,于是想到访问Oracle无非就是使用了Oracle的一些Dll 和系统环境变量或者注册表里的某些键值,安装Oracle 9i 精简版客户端应该足够了。经过几个小时的 权限设置、连接串设置、配置文件设置 折磨后解决方法如下:

1. 安装 Oracle 9i 精简版客户端,修改tnsnames.ora文件(默认路径C:\Oracle\ora90\network\ADMIN),修改内容如下:

   # TNSNAMES.ORA Network Configuration File: C:\oracle\ora90\network\admin\tnsnames.ora

# Generated by Oracle configuration tools.


#sample


#DATABASENAME =

#  (DESCRIPTION =

#    (ADDRESS_LIST =

#      (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))

#    )

#    (CONNECT_DATA =

#      (SERVICE_NAME = servicename)

#    )

#  )


ORACLE =  #这个名称在后面的连接字符串上用到了

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = iii)(PORT = 1521))  #修改红色的 iii 为Oracle数据库服务器的名称或IP地址

    )

    (CONNECT_DATA =

      (SERVICE_NAME = oracle) #修改红色的oracle 为数据库名称

    )

  )


ORACLEBCV =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = 130.81.100.136)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SERVICE_NAME = scbus)

    )

  )

REPORT =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = 9.83.70.14)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SERVICE_NAME = report)

    )

  )

修改注册表中 Oracle子键 NLS_LANG 的值和Oracle数据服务器上的一致,否则查询过来的内容是乱码。最后重启机器。


2. 连接Oracle数据库的连接字符串写法

  <add name="DataAccessLibrary.Properties.Settings.ConnectionString"

      connectionString="Provider=MSDAORA;Data Source=oracle;Persist Security Info=True;Password=outpadm;User ID=outpadm" 

      providerName="System.Data.OleDb" />             #黄色的部分要和上面配置文件里黄色的部分一样


这样问题解决,在xp下访问win2003下的 Oracle 10G 数据库 成功。

虽然用了很长时间,但是感觉这样在客户那部署时会省下将近20-30分钟的时间。

   

原文地址:https://www.cnblogs.com/zhaobl/p/1428360.html