zoukankan      html  css  js  c++  java
  • [置顶] 64位Win2008_VS2012使用ODP.NET遭遇问题和解决办法

    最近为使用Oracle11G数据库做个快速开发的小程序,使用64位Win2008+Vs2012环境,结果碰壁连环,幸好不算太笨,终于解决了,特记录一下。

    测试环境: Oracle11g (11.2.0.3_64bit)安装在64位Win2008上,同机安装Vs2012,C#语言。

    在项目引用system.data.oracleclient后,提示:Ms仅在.net framework 4尚支持system.data.oracleclient,今后的版本将不再提供这个组件了。

    于是想改用Oracle提供的组件。

    匆忙到Oracle官网下载了ODAC 11.2 Release 4 (11.2.0.3.0) ,32位和64位的都下了,很想当然地就安装了64位的ODP.Net,结果vs2012里的server explore里添加数据库连接时,根本不出现Oracle提供的组件选项。仔细看了一下,release 说明,只支持到VS2010,白忙了!

    不死心,再下ODAC 11.2 Release 5 (11.2.0.3.20),32位和64位的都下了,爬网,网友说Vs2012是32位的,就安装了32位的ODP.Net,结果vs2012里的server explore里添加数据库连接时,出现Oracle提供的组件选项,心中一喜,有门。可是输入参数后报错:" Ora-12560:TNS:... " 。 按错误号检查了数据库服务、监听、TNSname等,似乎没有错。另外这个组件的界面也乖乖的,输入连接的验证用户名(小写)后,再输入密码,用户名就变成大写字母了的,让人不放心。

    继续爬网,看到网友“安裝ODAC 11.2 Release 5後Visual Studio無法使用Oracle資料來源”一文,有些启发。但感觉问题还是出在安装程序做了坏事,破坏了原来能用的TNSNAME设置。当然,删除老版本是对的。

    为测地删除我电脑上已安装的ODAC 11.2 Release 5,干脆再下载了最新版的ODAC 11.2.0.3.60 beta,然后先删除了ODAC 11.2 Release 5,再安装ODAC 11.2.0.3.60 beta,安装过程中还提示连接串参数了,心想终于快天亮了。安装顺利,Vs2012里添加连接,出现的界面也正常了(不象release 5那个怪了),输入参数,点击“测试连接”,依旧报错:" Ora-12560:TNS:... " 。

    幸好检查下,lsnrctl service, 发现只有一个服务在听,缺少了2个实例(我的电脑上安装了2个不同的数据库实例NFD和ORCL)的TCP侦听,但是又不想用网友的办法手工修改machine.config的DbProviderFatories,于是启动 Net Configuration Assistant重新配置了一下,监听和本地命名,再重启了一下2个实例的服务和Listener服务,再看lsnrctl service,正常了,如下:

    C:Userszyc>lsnrctl services

    LSNRCTL for 64-bit Windows: Version 11.2.0.3.0 - Production on 16-7月 -2013 11:0
    1:49

    Copyright (c) 1991, 2011, Oracle.  All rights reserved.

    正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=zycBackupSvr)(PORT=1521)))
    服务摘要..
    服务 "CLRExtProc" 包含 1 个实例。
      实例 "CLRExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
        处理程序:
          "DEDICATED" 已建立:0 已被拒绝:0
             LOCAL SERVER
    服务 "nfd" 包含 1 个实例。
      实例 "nfd", 状态 READY, 包含此服务的 1 个处理程序...
        处理程序:
          "DEDICATED" 已建立:0 已拒绝:0 状态:ready
             LOCAL SERVER
    服务 "nfdXDB" 包含 1 个实例。
      实例 "nfd", 状态 READY, 包含此服务的 1 个处理程序...
        处理程序:
          "D000" 已建立:0 已被拒绝:0 当前: 0 最大: 1022 状态: ready
             DISPATCHER <machine: ZYCBACKUPSVR, pid: 4988>
             (ADDRESS=(PROTOCOL=tcp)(HOST=zycBackupSvr)(PORT=44919))
    服务 "orcl" 包含 1 个实例。
      实例 "orcl", 状态 READY, 包含此服务的 1 个处理程序...
        处理程序:
          "DEDICATED" 已建立:1 已拒绝:0 状态:ready
             LOCAL SERVER
    服务 "orclXDB" 包含 1 个实例。
      实例 "orcl", 状态 READY, 包含此服务的 1 个处理程序...
        处理程序:
          "D000" 已建立:0 已被拒绝:0 当前: 0 最大: 1022 状态: ready
             DISPATCHER <machine: ZYCBACKUPSVR, pid: 4964>
             (ADDRESS=(PROTOCOL=tcp)(HOST=zycBackupSvr)(PORT=44968))
    命令执行成功

    就这样,在vs2012里,数量添加了Oracle数据库连接,打开了久违的Db。

  • 相关阅读:
    javascript的基本语法
    javascript的初步认识
    就诊管理(数据结构小学期)
    软件工程课程总结
    每日学习(个人作业2)
    每日学习(个人作业2)
    每日学习(个人作业2)
    每日学习(个人作业2)
    Java中后端Bigdecimal传值到前端精度丢失问题
    这学期的加分项
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3194309.html
Copyright © 2011-2022 走看看