我的选择组合如下:
OS : Microsoft Window Server 2008 R2 SP1 (64位)
DataBase: 适用于Microsoft Windows (32位) 的 Oracle Database 11g 第2版 (11.2.0.1.0)
Query Tool: PL/SQL Developer Version 8.0.4.1514
最近,由于项目组的数据库服务器意外崩溃,导致数据库文件损坏,无法启动和访问。没法办,只能重装数据库了。
由于机器是64位的,我当时就直接选择了适用于Microsoft Windows (64位) 的 Oracle Database 11g 第2版 (11.2.0.1.0),安装完成后又安装了与之匹配的适用于 Microsoft Windows (64位) 的 Oracle Database 11g 第 2 版 Client (11.2.0.1.0),然后重启了机器。结果发现,可以从其它安装了客户端的机器上用自己编写的.net Website访问数据库,但是在数据库服务器本机却不可以,运行时提示“数据连接不成功,请检查该数据库是否已启动尝试加载oracle客户端时引发BadImageFormatException.如果在安装32位Oracle客户端组件的情况下以64位模式运行,将出现此问题”。原因是:我们通常程序都是在32位机器上编译的,现在发布后拿到64位机器上部署,导致不能直接运行,也就是不匹配。
既然是不匹配,那卸掉64位的,装上32位的DataBase和Client不就可以了吗,实验结果是错误的。其实,只要安装32位的DataBase就可以了,因为DataBase里已经包含了ORACLE的全部功能。到此,数据库安装这块已经结束了,但新的情况又出现了:“使用System.Data.OracleClient访问Oracle数据库时收到如下信息System.Data.OracleClient requires Oracle client software version 8.1.7 or greater.”。原因是Oracle 11g Release 2 在安装到Windows的NTFS分区下时的安全认证设置不正确,引起本机的Authenticated Users用户无法看到ORACLE_HOME目录下的内容,这导致在ASP.NET以Authenticated Users权限使用System.Data.OracleClient连接Oracle数据库时报出以上错误。要解决以上问题,只要给Authenticated Users 组加上访问Oracle Home目录的权限即可:
1、以Administrator权限登录Windows
2、启动Window 资源浏览器找到ORACLE_HOME目录,如C:\Oracle\ora92
3、右键弹出菜单,选择该目录共享与安全(Win2000下要点击属性)
4、点击 “安全” 页签
5、在组和用户名称列表中点击“Authenticated Users” 项
6、在该用户的权限列表中,将“读取和运行”的选择框置为不选中状态
7、再次点击“读取和运行”的选择框,将其设置为选中状态
8、点击“高级”按钮并在权限项目中确定“Authenticated Users” 是否拥有“读取并运行”权限并应用于“该文件夹,及子文件夹和文件”。如果不是,双击这样,并确保权限可以“应用于” “该文件夹,及子文件夹和文件”。该项非常重要你一定要核查
9、点击“确定”按钮
10、重启动, 以使得所有的修改生效
至此,问题解决了。以上只是我个人的一些处理方案,也许还有其它更好的方案。