自从发布了一篇博客Oracle免客户端For .Net(增加分析Devart和DataDirect)后,非常非常多的同学前来问各种Oracle客户端运行时安装配置的问题,严重影响了我们团队的正常工作和日常交流。我甚至多次怀疑我是不是不应该发那篇博文,但是又不忍心删除!
我们写那篇博文的初衷,仅仅是为使用我们的数据映射框架XCode(包含ORM)进行Oracle开发的同学而准备!
只是因为这些技术点对于非XCode用户也有用,所以才发出来。不曾想,给我们自己带来这么多的麻烦。
这里先为XCode用户做一点补充,非XCode用户请直接跳过,看结尾!
1,新版本XCode内置Oracle客户端运行时的环境检测,自动在这些目录查找OCI:当前目录、上一级的OracleClient目录、各个盘下的OracleClient目录
2,XCode支持在连接字符串里面通过DllPath=X:\OracleClient来指定OCI目录
3,如果XCode检测不到任何Oracle客户端运行时,会自动到服务器下载一份,并部署到C:\OracleClient。可以自己拷贝到别的盘去
4,所以,XCode用户可以用MSSQL或SQLite等数据库开发好应用程序,然后部署的时候修改连接字符串为Oracle的连接字符串即可,XCode会为你准备好环境。
5,XCode所支持的各大数据库,只要有连接字符串,就可以工作!
6,除MSSQL外,使用其它数据库全部会自动下载相应的驱动(分x86和x64):Access、SqlCe、SQLite、Oracle、MySql、Firebird、PostgreSQL
7,如果生产环境机器不能上网,可以自己把驱动等相关文件拷贝带走。只有用Oracle时会有一个目录放在C:\OracleClient,其它数据库下载的驱动文件全部放在当前目录。(主要是因为OCI那个目录太大)
8,XCode只做下载驱动来使用,不修改系统环境变量和注册表等任何东西,绝对绿色。
9,如果你只想要一个Oracle客户端运行时,可以用我们代码生成器XCoder上新增的一个功能(“Oracle客户端运行时检查”),它会给你准备好一个可用环境
最新版XCoder下载链接:http://www.kuaipan.cn/file/id_2378544298616942.html
非XCode用户请看:
1,只要有OCI,可以不用安装Oracle的任何东西,就可以连上数据库,可能需要配置一下环境变量和注册表
2,该方法无视任何编程语言,非.Net的也可以。比如那个PL Dev,只需要拷贝OCI,然后选项里面指定oci目录即可
3,如果你怀疑上述两点,你可以不用看本文了
4,OCI.dll的版本和Oracle.DataAccess.dll要求的版本必须一致,不一致就自己凑,找到一致的
5,.Net程序调用Oracle.DataAccess.dll,而Oracle.DataAccess.dll会找OCI.dll,顺序是:当前目录、配置文件指定目录、环境变量Path、系统目录
6,如果上面一点没看懂,只怪你Windows没学好。目录搜索逻辑是Windows开发的基本功。
7,再次重申,所做的一次,配置环境变量也好,配置注册表也好,只是为了找到OCI.dll!!!
8,哦,忘了一点,注意OCI所在目录的权限,也许应用程序没有权限执行OCI.dll。另外注意各个目录配置可能导致的DLL版本冲突。
100,据Oracle官方论坛说,官方即将推出纯托管的驱动,到时候只要一个dll就行,再也没有这么多烦人的事情。如果上面这么多办法都不行,就等等吧。
10000,如果还不行,那就用XCode算了!
最后:
在确定你有仔细阅读、思考这两篇博文的内容之前,请不要打搅我们!仅作技术交流,我们不承担任何后果!
欢迎各种.Net及逆向工程的交流,QQ群:1600800
我不相信神话,我只相信汗水!我不相信命运,我只相信双手!