32-bit到64-bit 开发及升级经验

最近我们团队的开发机从

32xp升级到64win7, 期间小研究了一下现做个总结希望对大家有帮助

背景描述:

DEV Env.

Original

New

OS

Windows XP (x86)

Windows 7(x64)

Dev. Tool

VS2008 (x86)

VS2008 (x86)

Oracle Client

Oracle 10g (x86)

Oracle 10g (x86)

SQL Tools

Toad for oracle 6.1.2 (x86)

Toad for oracle  6.1.2 (x86)

 

装好64bit Win7,安装VS2008正常,安装Oracle 10g正常,但是run我们的程式,却连不上DB.详情看错误检索部分.

 

64位下开发要注意以下:

1.       VS2008没有64,所以要以管理员身份运行

2.       Toad32,会被默认安装到Program Files (x86),我们用的这个版本的Toad是没有办法识别带有括号的路径的(不确定新版本的Toad有没有修复这个问题,但是最好还是放到别的地方去).

3.       如果安装的是32位的Oracle Client,那么Winform程式一定要用x86来编译,貌似是因为编译的platform决定了会调用哪一种oci.dll

 

错误检索:

1.       Could not create an environment: OCIEnvCreate returned -1OCIEnvCreate失败,返回代码为-1,但错误消息文本不可用)

解决方法:管理员身份运行VS2008,若不行,再尝试删除C:\app\***\product\11.2.0\下面无效的client文件夹(若提示错误则重启后删除)

 

2.       尝试加载Oracle客户端库时引发BadImageFormatException。如果在安装32Oracle客户端组件的情况下以64位模式运行,将出现此问题。

解决方法:安装Oracle提供的ODTwithODAC (32-bit Oracle Data Access Components (ODAC)
with Oracle Developer Tools for Visual Studio)

http://www.oracle.com/technetwork/topics/dotnet/utilsoft-086879.html

 

关于ODTwithODAC:

官网中提到:

Each 32-bit ODAC client download below supports connectivity to Oracle Database versions 9.2, 10.1, 10.2, and 11.1, and 11.2. 

ODACoracle提供用于Windows Oracle数据访问组件的组件,Oracle客户端驱动程序组成,包括ODP.NETODBCOLE DBOO4O以及Oracle Services for MTS.

 

我们开发环境安装的是32-bitODAC,但是程式中的oracle连接类的是以AnyCPU在跑的,换句话说,64CPU下运行的ADO.NET通过32ODAC访问数据库组件的时候,必须要安装Oracle提供的ODTwithODAC.并且只是给asp.net,如果是winform程式,只要用x86平台编译就可以了.

 

为什么不直接装一个64-bitOracle Client?

因为我们的程式无法以x64来编译, (需要改到太多东西,并且有风险).而且现存Toad也不能识别x64

oralce client.

 

posted @ 2011-07-30 10:17  IT鸟  阅读(1195)  评论(0编辑  收藏  举报