不知道大家在win7 64位系统下用 PB连接oracle数据库时,是否遇到过“oracle library oci.dll could not be loaded”问题。
今天,在win7 64位系统下用 PB连接oracle数据库时,一直出现上述错误,在百度上找了很久,都没有找到一个完整的解决方案,咨询了很多人,(他们都说是我的PB和oracle没装好,但我装的时候没出现任何问题,一切都很顺利,而且PB和oracle都能正常使用,就是用PB连接oracle时怎么也连不上,一直找不到解决方案,于是听取了他们的意见,抱着一线希望,把PB和oracle都卸了重装,可是,还是同样的错误啊!!!要崩溃了)问题依然没有得到解决。
但是,功夫不负有心人,在经过自己无数次的尝试与失败之后,终于解决了这个问题,所以留下这篇随笔与大家分享,也给自己留下个纪念。
首先,说一下我的电脑系统与安装的软件:
(1)win7 64位 专业版
(2)PowerBuilder11.5
(3)Oracle Database 11g Release 2 (11.2.0.1.0) for Microsoft Windows (x64)
http://www.oracle.com/technetwork/database/enterprise-edition/downloads/112010-win64soft-094461.html(oracle下载地址)
具体的软件下载过程与安装过程我这里就不在讲解,百度上都有
现在讲解我PB连接Oracle数据库的过程及出现的问题和解决方法
一、安装好PB和oracle之后,就可以在PB里连接oracle数据库了
具体连接步骤为:打开DB Profile—>选中O 10 Oracle 10g—>New(也可以直接点击右键选择New Profile...)—>填写好Connection中的Profile name,Server,Login ID,Password和System中的PowerBuilder Catalog Table Owner(注:该项与Connection中Login ID一样,如果不一样会出项如下错误:)
填好之后可以选择Preview中的Test Connection测试连接,但是我在测试的时候,就出现了如下错误:
原因:我安装的Oracle是64位的,里面的oci.dll也是64位的,PB需要要使用32位的oci.dll,所以连接时就无法加载oci.dll,
因此就需要下载一个32位的 instant client来支持PB调用。由此得到以下解决方案:
解决方案其实很简单,就三步
第一步:下载一个Instant Client for Microsoft Windows (32-bit) (注:这个是关键,一定要下32位的,千万别下成了下64位的)
(下载地址:http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html)
如果下成了64位的还是会出现同样的问题,问题并不能得到解决(原因上面已经说清楚了)
第二步:将下载的压缩包解压得到instantclient_11_2文件夹,然后将文件夹复制到Oracle安装目录下的Product文件夹下,
以我的为例:放在D:\Oracle\app\zy\product里,即:D:\Oracle\app\zy\product\instantclient_11_2;
第三步:在Oracle安装目录下找到NETWORK文件夹,然后将整个NETWORK文件夹复制到D:\Oracle\app\zy\product\instantclient_11_2文件夹里,
(以我的为例:我的NETWORK文件夹在如下目录里D:\Oracle\app\zy\product\11.2.0\dbhome_1)
如果没有复制NETWORK文件到instantclient_11_2文件夹里夹或者复制得不全,都会出现如下错误:
完成以上三步之后,问题就解决了。重新打开PB,根据上面的连接步骤连接,就能连接成功了。
如下图:
如图就连接成功了,在Database中就能看到连接好的数据库了。
另外:在连接的过程中可能会遇到如下问题:
出现这个问题说明你监听器没开,解决办法很简单,到服务里开启就行
具体步骤:点击开始菜单—>在搜索框中输入“服务”—>点击打开—>找到以下两项,将其开启即可:
今天就和大家分享这些内容,如有不正确的地方,欢迎大家批评指正,关于以上问题,大家如有更好解决方案,欢迎大家前来交流!