【发布时间】: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