Perl脚本无法连接到Oracle数据库

时间:2016-09-14 07:56:44

标签: oracle perl

我在执行Perl脚本时收到以下错误消息。 以下是我在编译脚本时收到的错误消息。

install_driver(Oracle)失败:无法加载&x 39x /usx/local/lib/perl5/site_perl/5.10.0/sun4-solaris/auto/DBD/Oracle/Oracle的.so' 对于模块DBD :: Oracle:ld.so.1:perl:fatal:libclntsh.so.10.1:open failed:没有这样的文件或目录 /xxx/usr/local/lib/perl5/5.10.0/sun4-solaris/DynaLoader.pm第203行。  在(eval 99)第3行 在(eval 99)第3行的require中编译失败。 也许所需的共享库或DLL没有安装在预期的位置  at /xxx/xxxx/xxxx/xxxx/XXXX/CommonOracle.pm第71行

最近,Oracle已在我的系统中从10.2升级到11.0。请帮我解决这个问题?我不是我系统的管理员。我需要更改LD_LIBRARRY_PATH吗?我正在使用Solaris OS。

2 个答案:

答案 0 :(得分:1)

你似乎忘了问一个问题。我们假设它是“如何解决这个问题?”

与数据库通信需要在系统上安装许多东西。

  • 您需要使用您正在使用的数据库系统的客户端库。这将是可能位于/ usr / lib下的共享对象(.so)文件。

  • 您将需要数据库引擎的Perl数据库驱动程序(在您的情况下,这是DBD :: Oracle)。如果你通过从头构建它来安装它(如let request = this.http.request(url); intercept(request).subscribe(res => { //do something }); cpan命令那样),那么你几乎肯定也需要上述客户端库的开发版本。如果您正在安装预构建的二进制版本(.rpm或.apt在Linux上 - 我不知道Solaris的等效版本)那么您将不需要这些版本。

  • 您将需要Perl DBI库。

在我看来,安装了DBD :: Oracle。这意味着也将安装DBI。但DBD :: Oracle无法找到客户端库。这是令人惊讶的,因为他们需要安装DBD :: Oracle。

因此,我怀疑Oracle客户端库不再安装或已安装,但不在DBD :: Oracle寻找它们的地方。

如何安装DBD :: Oracle?您是否有可以检查错误的安装日志?

答案 1 :(得分:0)

问题已经解决。库路径中缺少lib文件“libclntsh.so.10.1”。我已复制该文件,问题已解决