2016-09-14 87 views
-5

我在执行我的Perl脚本时收到以下错误消息。 以下是我在编译脚本时遇到的错误消息。Perl脚本无法连接到Oracle数据库

install_driver(Oracle)的失败:无法加载 '/xxx/usr/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:打开失败:没有这样的文件或目录 /xxx/usr/local/lib/perl5/5.10.0/sun4-solaris/ DynaLoader.pm line 203. at(eval 99)line 3 编译在(eval 99)第3行的require中失败。 也许所需的共享库或dll未安装在预期的位置 at/xxx/xxxx/xxxx/xxxx/XXXX/CommonOracle.pm line 71

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

+0

此处您可以在[请求]以及如何构建[mcve] – Aleksej

回答

1

您似乎忘记提问了。我们假设这是“我该如何解决这个问题?”

与数据库通信需要在您的系统上安装一些东西。

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

  • 您需要为您的数据库引擎使用Perl数据库驱动程序(对于您的情况,这是DBD :: Oracle)。如果你从头开始安装(如cpancpanm命令那样),那么你几乎肯定也需要上述客户端库的开发版本。如果您正在安装预构建的二进制版本(Linux上的.rpm或.apt,但我不知道Solaris的等价物),那么您将不需要这些版本。

  • 您将需要Perl DBI库。

它在我看来就像DBD :: Oracle安装。这意味着DBI也将被安装。但DBD :: Oracle在查找客户端库时遇到了问题。这是令人惊讶的,因为他们需要安装DBD :: Oracle。

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

DBD :: Oracle是如何安装的?你有一个安装日志,你可以检查错误?

+0

感谢您的回复。但我没有安装日志。 perl模块已安装。我将尝试再次检查Perl DBI库。如果Oracle版本升级,会影响吗? –

+1

这不是DBI库问题。它似乎是Oracle客户端库。我会尝试重新安装DBD :: Oracle,并看看如何。 –

0

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