作者:肖凤斌 E-mail:binsweet@gmail.com 转载请保留该信息
随着越来越多的公司的数据库迁移到Oracle下,很多软件公司的系统面临一个开发的问题。
当你选择B/S方式时,意味着要牺牲很多效率和功能;选择C/S方式,又要面临系统安装Oracle客户端和发布的问题。
那么我们有哪些可行方案呢?
1、.net remoting--------开发较复杂
2、仍然为C/S方式,数据库访问通过web service----增加服务器web压力,效率低
3、asp.net -------潮流,但功能有限。但省去了客户端安装,现在流行AJAX,很多成熟系统都在转
如果你多C/S模式的开发效率高、实现功能强大的优点仍然念念不忘,那么,你也可以采用如下方法:
利用Oracle 的Instant Client来免去Oracle客户端的安装
利用VS2005的在线发布免去安装之苦
如何实现:
其实很简单:
在oracle网站上下载:Instant Client http://www.oracle.com/technology/software/tech/oci/instantclient/htdocs/winsoft.html
当前版本:Version 11.1.0.6.0
/******************************
2008-09-08 后记
有人在pb6.5+oracle8.17下按本文使用时提示“oracore11.dll没有找到”,可升级到11.1.0.7 解决问题。
原文如下:
There's a known issue that ociw32.dll has a dependency on oracoreX.dll. It's fixed in 10204 if you want to revert to using the 10.2 instant client, and will also be fixed in 11g when 11.1.0.7 comes out.
If you need/want to continue using the 11g client (note that Microsoft doesnt support their driver/provider with anything past 8i) you'll need to use the full 11g client install instead of the instant client that comes with ODAC.
Or use Oracle's oledb provider instead.
抱歉,该情况我没有遇到过,所以猜测11.1.0.7 应该没问题吧。
******************************/
注意下载instantclient-basic-win32,而不是instantclient-basiclite-win32,因为basiclite只支持英文和西欧字符集
下载后解压缩,只用到四个文件
- OCI Instant Client Data Shared Library
- oraociei11.dll (Basic version)
- Client Code Library
- oci.dll
- Security Library
- orannzsbb11.dll
- OCCI Library
- oraocci11.dll
同时创建一个tsanames.ora 文件并配置(不要告诉我你不知道tsanames.ora怎么配置),把这五个放到你的可执行程序目录下即可。
发布的时候也一同发布即可。
这样就不用安装Oracle客户端了。
至于VS2005的在线发布,你可以用 项目---属性---发布选项来发布。发布后第一次访问要通过网页,并进行安装(自动安装的),以后就不用安装了,况且如果版本不一致,还会自动下载更新本地程序。
这样,两个问题都解决了。
8月21日补充
如果是asp.net程序
需要在系统环境变量path中加上Instant Client所在的目录,如果Instant Client放在D:/InstantClient
第二步:
在注册表中
[HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Session Manager/Environment]
"LD_LIBRARY_PATH"="D:/InstantClient"
"NLS_LANG"="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"
"TNS_ADMIN"="D:/InstantClient"
重启计算机,就可以了