dbd perl oracle

Perl DBD:: Instalación del módulo Oracle



cpan install dbi oracle (4)

¿Alguien podría guiarme sobre cómo instalar el módulo DBD::Oracle Perl DBD::Oracle ?

Esto es lo que he hecho hasta ahora:

  • Plataforma: RHEL 5.8 64 bit.
  • Paquete Perl DBI instalado
  • Cliente instantáneo de Oracle instalado para Linux de 64 bits (componente basi + sdk + sqlplus para el cliente instantáneo
  • Han establecido los $ORACLE_HOME y $LD_LIBRARY_PATH correctos
  • Entonces cuando hago perl Makefile.pl falla con el siguiente error:

    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.

  • La versión de cliente instantáneo: 11.1.0

  • La versión DBD::Oracle es 1.44

Si se ha instalado correctamente con el cliente instantáneo de Oracle, ¿podría, por favor, hacerme saber qué me falta?

¿Es posible instalar DBD::Oracle sin usar el cliente instantáneo de Oracle?


Esto es lo que hice en CentOS 7.2 usando paquetes yum y CPAN. Esto supone que está utilizando la versión 12.1 de Oracle, pero me imagino que la mayoría de las versiones funcionarán de esta manera.

Instalar Oracle Instant Client

yum install oracle-instantclient12.1-basic-12.1.0.2.0-1 oracle-instantclient12.1-devel-12.1.0.2.0-1 oracle-instantclient12.1-sqlplus-12.1.0.2.0-1

Copia demo crea archivos

La instalación espera que el archivo * .mk esté en /usr/share/oracle/12.1/client64 pero la instalación del paquete yum los coloca en /usr/share/oracle/12.1/client64/demo.

sudo cp /usr/share/oracle/12.1/client64/demo/* /usr/share/oracle/12.1/client64

Modificar .bashrc

Agrega las siguientes líneas a tu ~ / .bashrc

export ORACLE_HOME=/usr/lib/oracle/12.1/client64 export LD_LIBRARY_PATH=/usr/lib/oracle/12.1/client64/lib export PATH=$ORACLE_HOME:$PATH

Ahora fuente el archivo

source ~/.bashrc

Actualizar CPAN y DBI

Actualice CPAN y DBI a la última

cpan> install CPAN cpan> reload cpan cpan> install DBI

Instala DBD :: Oracle

cpan> install DBD::Oracle


También puede leer mi artículo Cómo instalar DBD :: Oracle, que contiene todos los pasos necesarios para instalar el módulo DBD :: Oracle CPAN, que no es una instalación sencilla. El propósito es reducir el dolor de cabeza y convertirlo en un proceso repetible.


Una pequeña adición a la respuesta de matador de bylucifer. Tuve el mismo problema que el mencionado en la pregunta. He hecho todos los pasos descritos por slayedbylucifer. Pero todavía tengo el problema como se menciona here :

/usr/lib64/gcc/x86_64-suse-linux/4.3/../../../../x86_64-suse-linux/bin/ld: skipping incompatible /opt/oracle/app/oracle/product/11.2.0/client_1/lib//libclntsh.so when searching for -lclntsh /usr/lib64/gcc/x86_64-suse-linux/4.3/../../../../x86_64-suse-linux/bin/ld: cannot find -lclntsh

Así que creé el siguiente enlace simbólico:

ln -s /opt/oracle/app/oracle/product/<YOUR_ORACLE_VERSION>/client_1/lib/libclntsh.so $ORACLE_HOME/libclntsh.so*

Después de ese paso, el error de arriba (no se puede encontrar -lclntsh) se solucionó. La ejecución del comando make fue sin errores.

El único problema que todavía tengo es que no entiendo por qué es necesario este enlace simbólico.


  • Instale el módulo DBI de Perl ( $ yum install perl-DBI )
  • Instale manualmente debajo de tres RPM para el cliente instantáneo de Oracle (de Instant Client Downloads para Linux x86-64 )

    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

Estoy usando la caja de Linux de 64 bits, así que seleccione sus nombres de archivo RPM como corresponda.

  • Establecer debajo de las variables:

    LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib ORACLE_HOME=/usr/lib/oracle/11.2/client64

    Los usuarios de MacOS necesitarán:

    DYLD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/

    También agregue ORACLE_HOME a su variable PATH .

  • descargar DBD :: Oracle desde CPAN

  • Deshaga el módulo y ejecute los siguientes comandos en la secuencia dada:

    perl Makefile.PL make make install

HECHO !!!

Los problemas que había enfrentado se debían a una LD_LIBRARY_PATH incorrecta. Lo había establecido en /usr/lib/oracle/11.2/client64 mientras que el valor correcto es /usr/lib/oracle/11.2/client64/lib .

Ciertamente, este fue un gran aprendizaje para un novato como yo.