最近公司跟我换了新电脑:2代i3+8G内存,由于32位的win7最多只能用3.25G内存,而用ramdisk4g划出4.75G来作硬盘又觉太浪费,遂想用64位的系统.

从网上下载了冷风的64位win7后先装系统再装驱动再装常软件,除部份驱动需重新安装外,一路安好.但是在安装ODAC组件时,出了如下问题:

1.常用的plsql与sqldbx只有32位版本,只能使用32位的ODAC,

2.在64位系统上,如果使用32位的ODAC,asp.net程序时会报异常:尝试加载Oracle客户端库时引发BadImageFomatException。如果在安装32位Oracle客户端组件的情况下以64位模式运行,将出现此问题。

3.32位的ODAC安装时无法向注册表写入必要信息,分布式服务Oracle Services for MTS无法安装.

后来在网上疯狂搜索,发现出了这个问题的人还不少,其实,Oracle的客户端版本与服务端版本没有必然限制,32/64位的客户端访问32/64位的服务器没有任何问题,32位的客户/服务端装在32位的操作系统上,32/64位的客户/服务端装在64位的操作系统上也没有任何问题,主要是这些客户端与其它程序的兼容性问题.看来64位的系统想普及,还需时日啊.

当然,解决的方法也是有的,主要思路就是不管32/64位的ODAC都一并装上去,然后plsql与sqldbx通过32位的ODAC来访问数据库,asp.net程序通过64位的ODAC来访问数据库/使用分布式事务.

首先,安装64位的ODAC(install.bat oramts).由于操作系统也是64位的,这样就只需按照常规方式,在环境变量(Path)里加上其目录与其bin目录的路径,然后去注册表里修改语言设置(NLS_LANG),再加上监听文件路径(TNS_ADMIN),asp.net程序就可以通过64位的ODAC来访问数据库/使用分布式事务了.

然后,安装32位的ODAC(install.bat basic).由于操作系统是64位的,无法操作注册表,这样安装后无法在注册表里写入必要数据,使用时也无法从中读取必要设置.这样相关的设置就只能通过环境变量来读取.还是在环境变量(Path)里加上其目录与其bin目录的路径,然后在环境变量里加上语言设置(NLS_LANG)与监听文件路径(TNS_ADMIN),然后在plsql与sqldbx的程序设置里,将oci文件路径强制指定为32位的ODAC路径,这样程序就可以正常使用了.

这里有几点需要说明:

1.如上所述,在Path里既有32位ODAC的路径又有64位ODAC的路径,这样相关程序会不会读取错误呢?结论是不会,32位的plsql与sqldbx会跳过64位的oci去调用32位的oci,而64位的asp.net程序则会跳过32位的oci去调用64位的oci.这样大家互不冲突

2.32位的程序与64位的程序可以共同指向同一个监听目录,使用同一个监听文件.

3.环境变量的更改与生效之间有时间差,可以不到1秒,也可能几分钟,所以最可靠的方式是重启.

补:现在我发现了一种更简单的方式:对于64位系统上的64位的IIS,如果是IIS6,则通过命令行注册,将iis的64位模式改为32位模式,如果是IIS7,则通过应用程序池的高级设置,将"启用32位应用程序"设置为True,即可只用单独安装32位的ODAC.不过对于需要使用Oracle分布式事务的,则还是需要安装64位的ODAC,因为32位的ODAC中的分布式事务无法在64位系统中安装.

参考的文章:

  1. 问题解决,见3楼。看来tnsnames.ora里面配置还是有很多学问的。。。。。
  2. 64位win7的plsql问题
  3. PL/SQL Developer在64位windows上的使用
  4. C#在64位操作系统上连接Oracle的问题和解决方案
  5. 我的奮鬥-System.Data.OracleClient on Windows 2008 x64
  6. 在Win 7 64bit下成功配置Oracle 10g心得
  7. 64bit win7 oracle11gR2 installation
  8. IIS6+64位系统VS 32位APP
  9. 关于X64位系统IIS7下支持32位asp.net程序
  10. 64位windows IIS 32位与64位转换方法
  11. 1

转载于:https://www.cnblogs.com/ljzforever/archive/2011/10/20/2219400.html

如何在64位win7下通过ODAC来访问Oracle服务器相关推荐

  1. 如何在64位Win7下使用震动手柄

    我有一个北通的c033手柄,买的比较早了,只有winxp的驱动,在64位的Win7下只能当成普通手柄来用,没有震动了.google了很久才知道,原来Win7只支持微软自家产的XBOX360手柄,现在很 ...

  2. 如何在64位WIN7下安装64位的解压版mysql-5.6.37-winx64.zip

    1.到mysql官网下载 https://cdn.mysql.com//Downloads/MySQL-5.6/mysql-5.6.37-winx64.zip 2.将解压缩后的文件放到自己想要的地方, ...

  3. mysql 5.6.14 64位_如何在64位WIN7下安装64位的解压版MySQLmysql-5.6.14

    展开全部 安装MySQLmysql-5.6.14可以参考32313133353236313431303231363533e59b9ee7ad9431333361306264如下安装步骤: 1.将解压缩 ...

  4. arduinowin7_Arduino在64位WIN7下无法安装驱动的解决办法

    本人购买Arduino UNO R3连接在64位WIN7下,安装官方驱动后显示如下图错误: 硬件列表显示未知设备,如下图: 多次反复安装仍无法识别,在网上搜索都说是精简版的Win7 ghost删除了大 ...

  5. 招商银行U盾/网盾(专业版)在64位win7下不能运行的解决方法

    自从换win7后,小生的招行U盾一直不能正常使用,严重影响网上支付.经多方查询并亲身试验,以下方案绝对有效,就不必烦劳小生本人亲自研究了,感谢原作者! 在64位win7下,很多软件都不能正常运行,让人 ...

  6. 解决中64位Win7系统上PLSQL无法连接ORACLE的方法(PLSQL无法识别ORACLE_HOME的配置)

    解决中64位Win7系统上PLSQL无法连接ORACLE的方法(PLSQL无法识别ORACLE_HOME的配置) 参考文章: (1)解决中64位Win7系统上PLSQL无法连接ORACLE的方法(PL ...

  7. VC6在64位Win7下调试无法退出的问题(缺少TLLOC.DLL和DM.dll)

    win7 64位VC++6.0调试代码无法关闭窗口解决方法 VC6在64位Windows7下调试的时候,再结束调试,程序无法退出. 问题描述:当我击F5开始一个项目的调试时,程序在我设置的断点处停止, ...

  8. matlab2012生成dll,64位win7下vc2010如何調用matlab2012a中生成的dll文件

    本文說是原創,但核心部分是參考http://blog.sina.com.cn/s/blog_a5fdbf0101018n91.html(大家可以先看看這篇文章),在此再次感謝debug童鞋.debug ...

  9. matlab2012生成dll,64位win7下vc2010如何调用matlab2012a中生成的dll文件

    本文说是原创,但核心部分是参考http://blog.sina.com.cn/s/blog_a5fdbf0101018n91.html(大家可以先看看这篇文章),在此再次感谢debug童鞋.debug ...

最新文章

  1. [导入]日志 20071211(WCF,实验室产品)
  2. Linux内核模块简介
  3. 第十三课:磁场中的运动电荷
  4. 玩转spring MVC(九)---Spring Data JPA
  5. git push错误解决方案
  6. javaee版eclipse导包出现未找到类问题
  7. echarts初次使用,自定义china-map省份默认颜色
  8. Android 发短信功能实现
  9. c++ 小游戏 NO 4 eye
  10. Python3开启自带http服务
  11. matlab指数e是如何表示,Matlab中表达e怎么操作?表达e方法详解
  12. js里的一些even事件
  13. 从PCC到MIC(2)
  14. 使用服务器出现error:cannot connect to X server
  15. “二进制负数 补码右移和原码算术右移 产生的真值偏差”分析
  16. idea去掉不想commit的文件
  17. Ubuntu18 ROS运行报错exit code -11
  18. signature=dedda52028ba9cc6699359258f4ed5db,Нужны ли антибиотики при интравитреальных инъекциях?...
  19. 疫情反弹,传统企业如何做好线上营销获客?
  20. 不知道自己该做啥?我该咋办

热门文章

  1. 利用Memcache解决数据库高并发访问的瓶颈问题
  2. 64 bit Ubuntu support 32 bit binary
  3. PYPL 12 月 IDE 榜单:Eclipse 有望超越 Visual Studio
  4. error: jump to label ‘XXXX’ [-fpermissive]
  5. Mysql Innodb 引擎优化(-)
  6. JavaScript之浅复制【拷贝】与深复制【拷贝】【二】
  7. 测试人员必学的软件快速测试方法(三)
  8. 创业公司Starry拟推1G网速的无线宽带服务
  9. Codeforces 809A - Do you want a date?(数学+排序)
  10. Spring MVC 实现原理