2012-07-10 13 views
17

¿Podría alguien guiarme en cómo instalar el módulo Perl DBD::Oracle?Perl DBD :: Instalación del Módulo Oracle

Aquí es lo que he hecho hasta ahora:

  • Plataforma: RHEL 5.8 64 bits
  • El paquete instalado Perl DBI
  • instalado el cliente instantáneo de Oracle para Linux de 64 bits (Basi + SDK + sqlplus componente en el instante cliente
  • ha ajustado la correcta $ORACLE_HOME y $LD_LIBRARY_PATH
  • Entonces cuando hago perl Makefile.pl falla con º e 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ánea: 11.1.0

  • La versión DBD::Oracle es 1,44

Si ha instalado con éxito con el cliente instantáneo de Oracle, a continuación, podría por favor hazme saber que me estoy perdiendo?

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

Respuesta

37
  • instalar el módulo Perl DBI ($ yum install perl-DBI)
  • instalar manualmente por debajo de tres RPMs para Oracle Instant Client (de Instant Client Downloads for 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 Linux de 64 bits, así que seleccione sus nombres de archivo RPM en consecuencia.

  • aparato por debajo de las variables:

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

    usuarios de MacOS necesitarán:

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

    también se suman a la variable de ORACLE_HOMEPATH.

  • descarga DBD :: Oracle de CPAN

  • desempaquetar el módulo y ejecutar comandos a continuación en la secuencia dada:

    perl Makefile.PL 
    make 
    make install 
    

HECHO !!!

Los problemas que tuve que enfrentar fueron debidos al LD_LIBRARY_PATH incorrecto. Lo configuré en /usr/lib/oracle/11.2/client64, mientras que el valor correcto es /usr/lib/oracle/11.2/client64/lib.

Sin duda, este fue un gran aprendizaje para un novato como yo.

5

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

+0

@gerardw: gracias por el informe, me acaba de quitar la última barra, tal vez ha pasado ya Las páginas de GitHub se actualizaron a Jekyll3 y los cambios de formato de enlace. En realidad no pretendo exagerar ese enlace y No gano dinero con mi sitio web, me gusta compartir mi conocimiento para devolver a la comunidad, y estoy realmente convencido de que el artículo puede ayudar a otras personas que tuvieron problemas (como yo :) tratando de instalar DBD :: Oracle. –

+0

¿Hay alguna posibilidad de que pueda actualizar ese documento para 12.x? 12.2 al menos no incluyen un archivo .mk, y el de "demostración" es algo de lo que se queja la compilación. ¿Por qué no puede funcionar el módulo CPAN para algo más reciente que a partir de 2014? – Otheus

+0

Hola @Otheus Lo siento pero no estoy usando Oracle recientemente, así que no tengo un Oracle 12 para probarlo. El artículo fue escrito para Oracle 11g, pero no entiendo el archivo .mk al que se refiere, ya que no hay mención en las instrucciones del artículo. ¿En qué paso de instrucción del artículo llegaste? ¿Qué error obtuviste? Quizás yo también pueda ayudar. –

0

Una pequeña adición a la respuesta de slayedbylucifer. Tuve el mismo problema que mencioné en la pregunta. Hice todos los pasos descritos por slayedbylucifer. Pero aún así me dieron el problema como se ha mencionado 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 este paso el error de arriba se fijó (no puede encontrar -lclntsh). La ejecución del comando make fue sin ningún error.

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

2

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 

Copiar archivos de demostración hacen

La instalación espera que el archivo * .mk estar en /usr/share/oracle/12.1/client64 pero el 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

Añadir las siguientes líneas a su ~/.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 origen del archivo de

source ~/.bashrc 

actualización CPAN y DBI

actualización CPAN y DBI a la última

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

Instalar DBD :: Oracle

cpan> install DBD::Oracle 
+0

Funciona para 12.2 64 bits pero hay advertencias/errores. (Size_t está en conflicto con el formato% d, principalmente.) Muchas gracias – Otheus

Cuestiones relacionadas