oracle11g免安装小巧客户端

  在我的写的windows7,windows server2008静默安装配置oracle11g(服务器版)已经对oracle11g的全自动安装服务进行了详细配置,可是对于一个很小的.net应用程序来说,安装如此庞大的服务器版本的软件实在是用高射炮打鸟,根本不必要的,而在官方网上有一个win32_11gR1_client.zip客户端,自己查看压缩包属性也有488M,也不小啊,也不太适合一个很小的只有几M的应用程序使用。不得已,自己上网搜索,发现了这个还可以自己打造。凭借对原来绿色软件制作的经验,我也自己安装了win32_11gR1_client.zip客户端,记录下注册表设置,然后删除安装,保留下安装文件夹里的所有文件。然后把我那个很小应用软件(需要访问远程的oracle数据库)放在这个文件夹里。删除一下直接感觉无用的文件,先抽取可能用不着的文件,保留放在另一个备用的文件夹里,然后运行程序。如果程序能运行,那么继续抽取可能用不着文件;如果不能运行,那么可以确定这个文件是程序需要的,经过一步一步这样的反复处理。我得到了如下精简的oracle客户端。

  在这个文件夹里发现了.net应用程序必须具备的DLL组件:

  1. oci.dll
  2. oraops11w.dll
  3. oraociei11.dll
  4. msvcr71.dll
  5. oracle.DataAcess.dll
  6. 可选:oraocci11.dll
  7. 可选:orannzsbi1.dll
  8. 还有一个ora文件,在11g可以不要,在9g中需要,基于现在大部分都用11g,这个文件可省略。

  在上文中记录了注册的表设置,这里正好可以建立一个reg注册表文件,通过注册表就可以配置这个精简免安装客户端了。但是因为有人可能不懂注册表,所以不推荐这们用。在这里推荐你设置系统path环境变量,这大部分人都会,现在把以上文件复制到一个空的文件夹,重命名为oracleclient,这就是我们制作的免安装客户端。使用时在path环境变量中添加你的系统中这个oracleclient客户端路径就可以了。也可以把这个文件里DLL直接放在你要运行的.net程序里,那样也不需要配置环境变量,不过如果那样做的话,也直限你那个程序能用了。

以下提供本文下载连接

    OracleClient11g下载

 

(这里插一段来自大石头的关于版本不兼容的说明)

The provider is not compatible with the version of Oracle client

提供程序与此版本的 Oracle 客户机不兼容

这个可是开发.Net For Oracle程序中最常见的错误了。

实际上,这是使用ODP.Net经常遇到的问题,在ODP.Net中,Oracle.DataAccess.dll=>OraOps11w.dll=>oci.dll,前面两者的版本必须100%匹配(OraOps11w.dll里面通过硬编码写死了的)(也许这就是Oracle官方把OraOps11w.dll跟Oracle.DataAccess.dll放在一起的原因)。后面两者的版本似乎要求不高,是C++之间的引用。

而.Net的Oracle驱动,版本要求就非常低了,只要能找到oci.dll,基本上就能很好工作,它不会去检查版本什么的。如果找不到oci.dll呢,就会报这个错误:

System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本。

当然,oralce11g只在环境变量中设置path就行;如果是oracle9i310运行时光有OCI目录(在环境变量Path中设置)不行,还得设置环境变量ORACLE_HOME为OCI目录,否则报错(因为oci.dll要用别的dll):

OCIEnvCreate 失败,返回代码为 -1,但错误消息文本不可用。

 

言归正传!

最新的ODP.Net驱动无法使用oracle9g运行时,请直接使用oracle11g的。

此外oracle驱动还有

           Devart dotConnect for Oracle,不过它是收费的。据网友说他很好用,没用过。

    DataDirect 产品说明非常吸引人,唯一一个100%托管代码数据提供者,不需要Oracle OCI客户端库,自己可以查看。

 

 

posted @ 2012-12-28 17:17  thickThinker  阅读(4798)  评论(2编辑  收藏  举报