将Oracle与Perl结合使用

将Oracle与Perl结合使用,oracle,perl,Oracle,Perl,我整天都在尝试安装perl-DBD-Oracle-1.19-1.el5.x86_64.rpm包。它不断给我以下错误: perl-DBD-Oracle-1.19-1.el5.x86_64 from /perl-DBD-Oracle-1.19-1.el5.x86_64 has depsolving problems --> Missing Dependency: libnnz10.so()(64bit) is needed by package perl-DBD-Oracle-1.19-

我整天都在尝试安装perl-DBD-Oracle-1.19-1.el5.x86_64.rpm包。它不断给我以下错误:

perl-DBD-Oracle-1.19-1.el5.x86_64 from /perl-DBD-Oracle-1.19-1.el5.x86_64 has depsolving problems
  --> Missing Dependency: libnnz10.so()(64bit) is needed by package perl-DBD-Oracle-1.19-    1.el5.x86_64 (/perl-DBD-Oracle-1.19-1.el5.x86_64)
perl-DBD-Oracle-1.19-1.el5.x86_64 from /perl-DBD-Oracle-1.19-1.el5.x86_64 has depsolving problems
  --> Missing Dependency: libocci.so.10.1()(64bit) is needed by package perl-DBD-Oracle-1.19-1.el5.x86_64 (/perl-DBD-Oracle-1.19-1.el5.x86_64)
perl-DBD-Oracle-1.19-1.el5.x86_64 from /perl-DBD-Oracle-1.19-1.el5.x86_64 has depsolving problems
  --> Missing Dependency: libocijdbc10.so()(64bit) is needed by package perl-DBD-Oracle-1.19-1.el5.x86_64 (/perl-DBD-Oracle-1.19-1.el5.x86_64)
perl-DBD-Oracle-1.19-1.el5.x86_64 from /perl-DBD-Oracle-1.19-1.el5.x86_64 has depsolving problems
  --> Missing Dependency: libclntsh.so.10.1()(64bit) is needed by package perl-DBD-Oracle-1.19-1.el5.x86_64 (/perl-DBD-Oracle-1.19-1.el5.x86_64)
perl-DBD-Oracle-1.19-1.el5.x86_64 from /perl-DBD-Oracle-1.19-1.el5.x86_64 has depsolving problems
  --> Missing Dependency: libociei.so()(64bit) is needed by package perl-DBD-Oracle-1.19-1.el5.x86_64 (/perl-DBD-Oracle-1.19-1.el5.x86_64)
据我所知,我已经安装了所有正确的库,即

oracle-instantclient-basic-10.2.0.5-1.x86_64.rpm
oracle-instantclient-devel-10.2.0.5-1.x86_64.rpm
oracle-instantclient-sqlplus-10.2.0.5-1.x86_64.rpm
perl-DBI-1.52-2.el5.x86_64.rpm
它投诉的所有文件都已安装,例如它声称缺少的第一个依赖项是libnnz10.so,但它安装在/usr/lib/oracle/10.2.0.5/client64/lib/libnnz10.so中。此外,如果我要求yum解决此依赖关系,则它会解决,例如

> yum provides */libnnz10.so
Loaded plugins: product-id, security, subscription-manager
Updating Red Hat repositories.
Excluding Packages in global exclude list
Finished
oracle-instantclient-basic-10.2.0.5-1.x86_64 : Instant Client for Oracle Database 10g
Repo        : installed
Matched from:
Filename    : /usr/lib/oracle/10.2.0.5/client64/lib/libnnz10.so
我已经设置了

ORACLE_HOME="/usr/lib/oracle/10.2.0.5/client64"
LD_LIBRARY_PATH="/usr/lib/oracle/10.2.0.5/client64/lib"
我还将上面的lib dir添加到路径中

那么,为什么百胜说它可以解决问题,但又说它不能解决问题呢?

是众所周知最难安装的著名CPAN模块之一。在过去的十年中,我安装了许多CPAN模块,每次我必须安装时,我都会呼吸急促,为数小时的疼痛做好准备

我最近安装在64位Ubuntu 12.04.2 LTS桌面上。让我看看我是否记得我做了什么

从我下载的Oracle站点:

  • instantclient-basic-linux.x64-11.2.0.3.0.zip
  • instantclient-sdk-linux.x64-11.2.0.3.0.zip
  • instantclient-sqlplus-linux.x64-11.2.0.3.0.zip
我创建了一个目录
/usr/local/oracle
,更改为该目录,并解压缩了所有三个文件

然后我跑:

LD_LIBRARY_PATH=/usr/local/oracle/instantclient_11_2 \
  ORACLE_HOME=/usr/local/oracle/instantclient_11_2 \
  cpan DBD::Oracle

我可能遗漏了什么。祝你好运。

看起来它可以安装在更新版本的Red Hat上。我们在虚拟机上安装了6.4,所有安装都很好,所以看起来这就是答案。

感谢您的回复。不幸的是,这似乎不起作用。我设置了一个新的虚拟机来尝试它。当我运行cpan时,它说它无法确定我的oracle版本。我已经包括了一个我认为需要的额外步骤,那就是为libclntsh.so和libocci创建2个符号链接。so@MikeKulls不幸的是,现在有了一个轻量级的Oracle Java适配器,您可以将其放入jar中用于可移植的Oracle程序,但是Perl没有一种不需要编译就可以访问Oracle的简单方法我认为解决方案是放弃Perl而使用Java。Perl真的是狗的早餐。它唯一的可取之处是正则表达式,我认为Java无论如何都可以做到。实际上,我很想使用C#,但它并不真正适用于Linux,至少不以受支持的方式。@MikeKulls我非常喜欢Perl——当你有轻量级的工作要做时,它比Java灵活得多;脚本可以在不需要重新编译的情况下进行修改。甲骨文是狗的早餐。我不能真正评论Java,因为我没有太多使用它,但我的工作并不是很轻,编译在我看来是一个优势。它可以阻止人们在我的工作中到处乱跑,做我不知道的“简单”更改,并在以后意外地覆盖。我真的很喜欢C#,我知道它很大程度上是Java的复制品。我只是发现,使用Perl,您最终会依赖于车库中某个人编写的一些缺乏文档的模块。