【问题标题】:Error using DBD::Oracle with instantclient 11.2将 DBD::Oracle 与 Instantclient 11.2 一起使用时出错
【发布时间】:2013-03-08 20:56:55
【问题描述】:

我想在 Mac OS X 10.8 上使用 perl 模块 DBD::Oracle。 我通过 CPAN 安装了 DBI。 下载了 Oracle 即时客户端 11.2(basic、sqlplus 和 jdk)。 将其解压到 /usr/local/oracle。

$ ls /usr/local/oracle/instantclient_11_2/
BASIC_README        libnnz11.dylib      ojdbc6.jar
SQLPLUS_README      libocci.dylib.11.1  sdk
adrci           libociei.dylib      sqlplus
genezi          libocijdbc11.dylib  uidrvci
glogin.sql      libsqlplus.dylib    xstreams.jar
libclntsh.dylib     libsqlplusic.dylib
libclntsh.dylib.11.1    ojdbc5.jar

然后安装 DBD::Oracle。 现在,当我想使用 DBD::Oracle 时,它​​会报错。

install_driver(Oracle) failed: Can't load '/Library/Perl/5.12/darwin-thread-multi- 
2level/auto/DBD/Oracle/Oracle.bundle' for module DBD::Oracle: 
dlopen(/Library/Perl/5.12/darwin-thread-multi-2level/auto/DBD/Oracle/Oracle.bundle, 1): 
Library not loaded: /ade/b/2649109290/oracle/rdbms/lib/libclntsh.dylib.11.1
Referenced from: /Library/Perl/5.12/darwin-thread-multi-  
2level/auto/DBD/Oracle/Oracle.bundle
Reason: image not found at /System/Library/Perl/5.12/darwin-thread-multi-    
2level/DynaLoader.pm line 204.

我有 DYLD_LIBRARY_PATH=/usr/local/oracle/instaclient_11_2 我不知道我做错了什么。

已解决: 尝试运行 sqlplus 时出现同样的错误。我将我的 oracle 客户端目录添加到我的全局 PATH 变量中,它现在正在工作。

看到他们在本教程中做了同样的事情:http://www.janhellevik.no/?p=521

【问题讨论】:

  • 我对 Mac OS X 的动态加载器了解不多,无法回答您的问题,但该路径 (/ade/b/2649109290/oracle/rdbms/lib/libclntsh.dylib.11.1) 看起来确实有问题。这看起来像是在 Oracle 中构建 Oracle 客户端库的人使用的路径,而且它似乎仍然在 Oracle 库中进行编码。
  • 通过将我的 oracle 客户端目录添加到我的全局 PATH 变量来解决。不是最好的解决方案,但对我来说已经足够了:)

标签: oracle perl cpan instantclient


【解决方案1】:

看看这个:perl DBD::Oracle Module installtion

以上信息是关于 Linux 环境的。但是你可能会得到一些关于如何在 MAC OSX 上配置 DBD::Oracle 的线索。

在 linux 上,您需要 oracle 即时客户端的 “Basic、SQLPLUS 和 Devel” 二进制文件。这是我的 Linux 机器上的目录列表:

# pwd
/usr/lib/oracle/11.2/client64/lib
# ls -l
total 185232
-rw-r--r-- 1 root root       368 Sep 17  2011 glogin.sql
lrwxrwxrwx 1 root root        17 Jul  9  2012 libclntsh.so -> libclntsh.so.11.1
-rw-r--r-- 1 root root  52761218 Sep 17  2011 libclntsh.so.11.1
-rw-r--r-- 1 root root   7955322 Sep 17  2011 libnnz11.so
lrwxrwxrwx 1 root root        15 Jul  9  2012 libocci.so -> libocci.so.11.1
-rw-r--r-- 1 root root   1971762 Sep 17  2011 libocci.so.11.1
-rw-r--r-- 1 root root 118408281 Sep 17  2011 libociei.so
-rw-r--r-- 1 root root    164836 Sep 17  2011 libocijdbc11.so
-rw-r--r-- 1 root root   1503303 Sep 17  2011 libsqlplusic.so
-rw-r--r-- 1 root root   1477446 Sep 17  2011 libsqlplus.so
-rw-r--r-- 1 root root   2095661 Sep 17  2011 ojdbc5.jar
-rw-r--r-- 1 root root   2714016 Sep 17  2011 ojdbc6.jar
-rw-r--r-- 1 root root    300666 Sep 17  2011 ottclasses.zip
-rw-r--r-- 1 root root     66779 Sep 17  2011 xstreams.jar

这是我安装的 oracle 即时客户端 RPM 的列表:

# rpm -qa | grep -i oracle
oracle-instantclient11.2-basic-11.2.0.3.0-1
oracle-instantclient11.2-devel-11.2.0.3.0-1
oracle-instantclient11.2-sqlplus-11.2.0.3.0-1

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-12
    • 2016-11-05
    • 2021-12-06
    • 2015-07-15
    • 2016-05-04
    • 2014-02-10
    • 2016-04-03
    相关资源
    最近更新 更多