背景:在windows2008 r2 64位上搭建64位oracle 11g,之后在同一个系统上添加IIS,部署web,但由于web程序为32位程序,不能通过本机的数据库客户端连接本机的数据库,需通过在本机上安装32位客户端,让web可连接。本文借鉴的是一台主机同时支持x86与x64客户端安装 ,原文转自http://www.cnblogs.com/volnet/archive/2012/05/22/2513968.htm,以及其他例如关于oracle错误的文章。
系统:windows2008 r2 x64 数据库:oracle 11g x64 web:asp.net
1.在服务器上安装的windows2008 r2 x64,安装oracle11g,新建实例及初始化数据,添加IIS7.0,部署asp.net程序,在应用池中开启32位模式。
2.接着访问web,试着登录,则出现了未在本地计算机上注册“OraOLEDB.Oracle,此时在网上搜到了很多关于这个错误的解决方法,总结如下:
A.在确保服务器已安装“Oracle Provider for OLE DB”提供程序的前提下找到Oracle的安装目录,如“D:\oracle92”,为该目录添加Everyone用户,并给予完全控制权限,在高级中确定是否将权限应用子目录和子文件等,重新注册oraoledb11.dll,regsvr32 app/<user>/product/11.1.0/db_1/BIN/OraOLEDB11.dll。
但这时候试过各种方法还是不行了,我试了好久各种凌乱。
3.该看一台主机同时支持x86与x64客户端安装 这个教程,开始安装odac,这篇文章讲的是一台主机同时支持两种客户端,但我们这里因为是在装有oracle的系统上,并不需要安装X64的客户端,取我所需足矣。
4.下载Oracle Data Access Components(ODAC) Xcopy的X86版本:
x86:http://www.oracle.com/technetwork/database/windows/downloads/index-101290.html 关于版本的选择,可选择Release 11.2.0.3.0 Production
5.将下载到的ODAC112030Xcopy_32bit.zip安装到任意目录,(临时的,一会可以删掉)。
6.开始->运行->cmd->cd 该文件夹
7.运行命令 install.bat all {目标路径:也就是最后要被安装的目录} odac 例如:install.bat all C:\Oracle\ODAC112030Xcopy_32bit odac
8.将其加入到系统环境变量中:
PATH的值中增加:C:\Oracle\ODAC112030Xcopy_32bit;C:\Oracle\ODAC112030Xcopy_32bit\bin; 该值以实际情况为准。
9.在C:\Oracle\ODAC112030Xcopy_32bit路径下建立network\ADMIN\tnsnames.ora,可将oracle11g下的直接拷贝过去。
10.重启服务器,这一步非常重要。
11.关于测试,因为已经有现有的web程序来调试了,有兴趣的可以看一下一台主机同时支持x86与x64客户端安装 中写一个Console程序测试的一段。(跳过)
12.使用PL/SQL Developer测试连接是否可以连接,因为PL/SQL只支持x86的OCI.DLL,所以,在设置环境路径的时候,应该把32bit的相关路径放在前面,这样就可以正确运行了。在这一步时可能会出现Could not load "……\bin\oci.dll"等,设置PLSQL Developer中设置Oracle_Home和OCI Library。如PLSQL中文乱码,则在D:\Oracle\ODAC112030Xcopy_32bit\bin路径下查看oracle.key可以查到字符集放在这个位置:SOFTWARE\Wow6432Node\ORACLE\KEY_odac修改NLS_LANG为SIMPLIFIED CHINESE_CHINA.ZHS16GBK。
13.此时用web访问登陆时可能还会出现未在本地计算机上注册“OraOLEDB.Oracle 这个错误,可以为C:\Oracle目录添加Everyone用户,并给予完全控制权限,在高级中确定是否将权限应用子目录和子文件等,重新注册oraoledb11.dll,regsvr32 C:\Oracle\ODAC112030Xcopy_32bit\bin\raOLEDB11.dll。
14.最好再次重启,如果还是不行,看人品,再谷歌度娘。