创世魂 发表于 2021-4-9 13:49:19

【方案】火山PC连接Oracle可能遇到的坑

本帖最后由 创世魂 于 2021-4-9 13:53 编辑

首先ado作为一个专业数据库中间件,可以连接多种数据库类型的库,本身肯定是没有任何问题的。
只要出现问题,那一般都是驱动问题,或者系统环境问题导致的。。。


下面整理一下可能遇到的问题:


一、 64位无法使用、32位程序可以用

火山PC连接oracle数据库方法: https://www.lkuaiy.com/ArticleForumInsidePage?id=16179397281233   

二、64位程序,利用ADO连接Oracle数据库

地址:https://www.cnblogs.com/liaocheng/p/4807137.html


防止上面地址失效,下面把二、里面的内容贴出来。



刚好手头项目解决了ADO连接Oracle数据库的问题,记录下来,防止忘记。


项目情况:用32位环境完成算法动态库,结果后来需要升级到64位环境,由64位的软件来调用,则在64位设置下生成算法动态库,发现数据库连接失败。数据库使用的是Oracle10,而连接技术使用的是比较熟悉的ADO。


1.首先怀疑的是ADO预编译所引用的msado15.dll版本问题,找来了64位msado15.dll,一样重现问题。


2.怀疑是连接语句依靠的\network\admin\tnsnames.ora文件不对,所以在程序中写死IP和端口,仍然重现问题。


其间忙于其他项目,只有用32位代替跑着,将其磕置。结果意外发现了64位在两位同事的电脑上能顺利运行,但在有些电脑上又出问题。所以确定为系统环境的问题,最终定位到ODAC。



问题最后解决了,但是还是未能完全脱离配置


1.连接语句写成这样,避免依赖tnsnames.ora文件


Provider=OraOLEDB.Oracle.1; Password=密码; Persist Security Info=True;User ID=用户名;\
Data Source=\"(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = IP)(PORT = 1521)) )(CONNECT_DATA = (SID = 数据库)))\"


其中可以将用户名、密码、数据库ID、IP、端口这些提出来写成配置文件,方便更改。


2.安装对应的ODAC,64位的下载地址http://www.oracle.com/technetwork/database/windows/downloads/index-090165.html。
相对来说,32位的ODAC是EXE安装文件,简单粗暴,直接自动安装好一切,所以当时没有出问题。64位的ODAC驱动是由Oracle官方提供的XCOPY版本,安装过程参考微软官方http://support2.microsoft.com/kb/2831123/zh-tw。


(1)解压XCOPY


(2)用命令行CD到(1)的目录下


(3)命令行运行其中的install.bat文件:install.bat all c:\oracle\ODAC_64 odac


(4)C盘出现目录c:\oracle\ODAC_64,进行系统环境配置:path里面增加C:\oracle\ODAC_64和C:\oracle\ODAC_64\bin


(5)完成



最后,这样的配置在一台机器上出现了报错的问题,发现是由于该机器上安装的东西过多,path环境混乱,Oracle版本指向不明,所以将C:\oracle\ODAC_64和C:\oracle\ODAC_64\bin 这个路径放到path属性的最前面即可。





阿丘 发表于 2021-4-9 20:40:05

连接成功了
页: [1]
查看完整版本: 【方案】火山PC连接Oracle可能遇到的坑