在 Centos 上安装 Oracle cilent 和 Perl

Oracle cilent and Perl installation on Centos

我无法安装 DBD-Oracle。

我已经按照以下步骤安装了 oracle 客户端:

  1. 我已经下载了即时客户端 ZIP 文件。

  2. 将包解压缩到目录 "/opt/oracle/product/instantclient_12_1".

  3. 创建了适当的 libclntsh.solibocci.so 链接:

    cd /opt/oracle/product/instantclient_12_1
    ln -s libclntsh.so.12.1 libclntsh.so
    ln -s libocci.so.12.1 libocci.so
    
  4. 设置环境变量LD_LIBRARY_PATH为第2步创建的目录:

    export LD_LIBRARY_PATH=/opt/oracle/product/instantclient_12_1:$LD_LIBRARY_PATH
    

echo $LD_LIBRARY_PATH returns:

    /opt/oracle/product/instantclient_12_1:/opt/oracle/instantclient_12_1:/usr/lib/oracle/11.2/client64/lib

也将此路径添加到 ldconfig 配置 /etc/ld.so.conf

ldconf -v returned
/opt/oracle/product/instantclient_12_1:
        libclntsh.so.12.1 -> libclntsh.so.12.1
        libociei.so -> libociei.so
        liboramysql12.so -> liboramysql12.so
        libocijdbc12.so -> libocijdbc12.so
        libmql1.so -> libmql1.so
        libnnz12.so -> libnnz12.so
        libclntshcore.so.12.1 -> libclntshcore.so.12.1
        libipc1.so -> libipc1.so
        libons.so -> libons.so
        libocci.so.12.1 -> libocci.so.12.1
  1. 已更新 PATH 环境变量:

    export PATH=/opt/oracle/instantclient_12_1:$PATH
    

现在我正在尝试安装 DBD-Oracle,按照这些步骤

  tar xfvz DBD-Oracle.tar.gz
  cd DBD-Oracle
  perl Makefile.PL
  make
  make install

无论如何得到这个错误:

Trying to find an ORACLE_HOME
Your LD_LIBRARY_PATH env var is set to ''

      The ORACLE_HOME environment variable is not set and I couldn't guess it.
      It must be set to hold the path to an Oracle installation directory
      on this machine (or a machine with a compatible architecture).
      See the appropriate README file for your OS for more information.
      ABORTED!

但是这些变量不为空:

echo $LD_LIBRARY_PATH
/opt/oracle/product/instantclient_12_1:/opt/oracle/instantclient_12_1:/usr/lib/oracle/11.2/client64/lib
 echo $ORACLE_HOME
/opt/oracle/product/instantclient_12_1/

我一直在 AIXCentOSRedHatSolaris 上编译 DBD::Oracle。我建议你制作一个脚本(特别是如果你使用 sudo 来编译这些东西)。这是我用来设置环境变量的脚本(有些是额外的,有些是用于测试的)并制作模块:

# These are usually pre-set in my environment:
export ORACLE_PATH=/usr/lib/oracle/11.2/client64/bin
export ORACLE_BASE=/usr/lib/oracle
export ORACLE_HOME=/usr/lib/oracle/11.2/client64
export ORACLE_DOC=/usr/lib/oracle/11.2/client64/doc
export ORACLE_SID=Mydbsid
# My PATH include my /perl/bin directory

# My script starts here:
ulimit

/perl/bin/perl -MCPAN -e 'install(qw(LWP HTTP::Date))'
/perl/bin/perl -MCPAN -e 'install(qw(Bundle::CPAN))'
/perl/bin/perl -MCPAN -e 'install(qw(Bundle::libnet Bundle::LWP Bundle::DBD::CSV Bundle::Net::LDAP))'

export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib
export TNS_ADMIN=my_tnsnames.ora_directory
export ORACLE_USERID=Username/Password@Mydbsid

/perl/bin/perl -MCPAN -e 'install(qw(DBD::Oracle))'

export DBICTEST_ORA_DSN mydbsid
export DBICTEST_ORA_USER Username
export DBICTEST_ORA_PASS Password
export DBI_DRIVER Oracle
export DBI_DATABASE Mydbsid
export DBI_USERNAME Username
export DBI_PASSWORD Password

/perl/bin/perl -MCPAN -e 'install(qw(Time::Piece Date::Simple DateTime::Format::Oracle Math::Base36 Class::DBI::Plugin::DeepAbstractSearch Class::Trigger DBIx::ContextualFetch DBIx::Class))'
/perl/bin/perl -MCPAN -e 'install(qw(Task::Kensho))'
# It continues, but nothing more database-orientated appears later.

后面的环境变量用于测试其他模块(例如DBIx::Class),这些模块稍后会出现在我的构建中。

我已经为 Oracle 10 和 11 完成了此操作,但还没有为 Oracle 12 完成此操作。