1. 云栖社区>
  2. PHP教程>
  3. 正文

64位windows上访问64位oracle 12c

作者:用户 来源:互联网 时间:2017-12-01 20:46:55

oraclewindows访问12c

64位windows上访问64位oracle 12c - 摘要: 本文讲的是64位windows上访问64位oracle 12c,64位windows上访问64位oracle 12c,这会有啥问题。没啥问题。问题是,我64位操作系统的机器上装了个oracle 10g。而oracle 10g好像是不区分啥32位、64位的,一律32位。此前,我在ASP.NET项目中,连接

64位windows上访问64位oracle 12c,这会有啥问题。

没啥问题。问题是,我64位操作系统的机器上装了个oracle 10g。而oracle 10g好像是不区分啥32位、64位的,一律32位。

此前,我在ASP.NET项目中,连接无论是oracle 10g,还是oracle 12c,都没有问题,只须在对应的IIS的应用程序池上开启32位支持即可。为啥要开启32位支持呢。原因是本机的oracle是10g的,32位,它充当了客户端的角色,凡访问oracle,不管外部内部,都要这个客户端支持。

由于IIS的强大,asp.net程序被支持得很好,连接oracle的途径畅通无阻。直到近期我开发一个WIN FORM桌面程序。这个可没有IIS的支持。于是就报错了:

数据连接不成功,请检查该数据库是否已启动尝试加载oracle客户端时引发BadImageFormatException.如果在安装32位Oracle客户端组件的情况下以64位模式运行,将出现此问题。

怎么办呢。难道我要装一个64位的oracle客户端。真麻烦。

依照以前的经验(.NET访问ORACLE心得:疯狂重启IIS,如有神助),我决定不装这个客户端,仅到oracle站点下载一个包,然后修改一下系统环境的PATH。

1、首先到oracle官方站点下载64位的 instantclient-basic-windows.x64-12.1.0.2.0.zip。

里面有几个dll。看上去,.NET是依赖于其中的oci.dll来访问oracle。

2、然后将这个包的路径加到系统环境变量PATH里

主要是让系统能找到里面的oci.dll。据说系统会自动忽略32位的oci.dll,转而用这个64位的。

3、PATH设置好以后,程序依然报错。靠。查看PATH,生效了,但不知为什么,程序还是报错。一怒之下,重启,问题解决。真贱,不重启都不行。

估计是系统初始化时,会加载这个PATH的。然后加载完就完了,才不管你这个PATH是否已经修改。

以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索oracle , windows , 访问 12c ,以便于您获取更多的相关知识。