Perl DBD::Oracle 模块安装

标签 perl oracle

有人可以指导我如何安装 Perl DBD::Oracle模块?

这是我到目前为止所做的:

  • 平台:RHEL 5.8 64 位
  • 已安装 Perl DBI 包
  • 安装了适用于 Linux 64 位的 Oracle Instant 客户端(用于即时客户端的基本 + sdk + sqlplus 组件
  • 已设置正确的$ORACLE_HOME$LD_LIBRARY_PATH
  • 然后当我做 perl Makefile.pl它失败并出现以下错误:

    I'm having trouble finding your Oracle version number... trying harder
    
    WARNING: I could not determine Oracle client version so I'll just
    default to version 8.0.0.0. Some features of DBD::Oracle may not work.
    Oracle version based logic in Makefile.PL may produce erroneous results.
    You can use "perl Makefile.PL -V X.Y.Z" to specify a your client version.
    
    Oracle version 8.0.0.0 (8.0)
    DBD::Oracle no longer supports Oracle client versions before 9.2
     Try a version before 1.25 for 9 and 1.18 for 8! at Makefile.PL line 271.
    
  • 即时客户端版本:11.1.0
  • DBD::Oracle版本是 1.44

  • 如果您已使用 Oracle 即时客户端成功安装,那么您能否告诉我我缺少什么?

    是否可以安装DBD::Oracle不使用 Oracle 即时客户端?

    最佳答案

  • 如果缺少 ExtUtils-MakeMaker 模块 (sudo yum install perl-ExtUtils-MakeMaker),请安装
  • 安装 Perl DBI 模块 ( $ yum install perl-DBI )
  • 为 Oracle 即时客户端手动安装以下三个 RPM(来自 Instant Client Downloads for Linux x86-64。示例适用于 v11.2.0.3.0-1:将以下命令调整为实际版本。)
    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
    

  • 我使用的是 64 位 Linux 机器,因此请相应地选择您的 RPM 文件名。像 sudo yum -y install oracle-instantclient*rpm应该做)
  • 设置以下变量:
    export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib
    export ORACLE_HOME=/usr/lib/oracle/11.2/client64
    

    MacOS 用户将需要:
    DYLD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/
    

    另加 ORACLE_HOME给您的PATH多变的。
  • 下载 DBD::Oracle 来自 CPAN
  • 解压模块并按给定顺序运行以下命令:
    perl Makefile.PL
    make
    sudo make install
    

  • 如果您收到有关缺少 gcc 的投诉,您可以(暂时)安装它,然后将其删除。

    完毕 !!!

    我遇到的问题是由于错误的LD_LIBRARY_PATH .我已将其设置为 /usr/lib/oracle/11.2/client64而正确的值为/usr/lib/oracle/11.2/client64/lib .

    当然,对于像我这样的新手来说,这是一个很好的学习。

    关于Perl DBD::Oracle 模块安装,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11407513/

    相关文章:

    mysql - Perl Mysql - 如何根据一个 "main"匹配项搜索特定数据?

    java - 为什么我无法使用 XMLType 从 CLOB XML 中将此值提取到 JDBC 查询中?

    perl - 为什么.t 文件的顶部有一个#!perl?

    bash - Perl Pack 在 Shell 变量上解压

    arrays - 为什么这个函数显示的是一个数组的数组而不是一个数组?

    oracle - 如何处理 pl/sql 中的 invalid_identifier 异常?

    java - SQL,JAVA查询根据主键检索所有列

    sql - 是否可以在 Oracle PL/SQL 中执行此操作?

    oracle - 如何根据表 FK 关系在 PL/SQL 中生成 DELETE 语句?

    perl - 使用 HTML::TreeBuilder 在 perl 中定位带有段落的 div