Perl DBD :: Installazione del modulo Oracle

Qualcuno potrebbe guidarmi come installare il modulo Perl DBD::Oracle ?

Ecco cosa ho fatto finora:

  • Piattaforma: RHEL 5.8 64 bit
  • Installato pacchetto Perl DBI
  • Installato client Oracle Instant per Linux a 64 bit (basi + sdk + componente sqlplus per il client istantaneo
  • Hanno impostato $ORACLE_HOME e $LD_LIBRARY_PATH corretti
  • Quindi quando perl Makefile.pl fallisce con il seguente errore:

     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 XYZ" 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 versione del client istantaneo: 11.1.0

  • La versione DBD::Oracle è 1.44

Se hai installato con successo il client istantaneo Oracle, puoi per favore farmi sapere cosa mi manca?

È ansible installare DBD::Oracle senza utilizzare il client istantaneo Oracle?

  • Installa il modulo DBI Perl ( $ yum install perl-DBI )
  • Installa manualmente sotto tre RPM per il client istantaneo Oracle (da Instant Client Downloads per 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 

Sto usando una scatola Linux a 64 bit, quindi seleziona i nomi dei file RPM di conseguenza.

  • imposta sotto le variabili:

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

    Gli utenti MacOS avranno bisogno di:

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

    Aggiungi anche ORACLE_HOME alla tua variabile PATH .

  • scarica DBD :: Oracle da CPAN

  • scompattare il modulo ed eseguire i comandi sottostanti in una sequenza data:

     perl Makefile.PL make make install 

FATTO !!!

I problemi che avevo affrontato erano dovuti LD_LIBRARY_PATH . L’ho impostato su /usr/lib/oracle/11.2/client64 mentre il valore corretto è /usr/lib/oracle/11.2/client64/lib .

Certamente, questo è stato un grande apprendimento per un principiante come me.

puoi anche leggere il mio articolo Come installare DBD :: Oracle che contiene tutti i passaggi necessari per installare il modulo DBD :: Oracle CPAN, che non è un’installazione semplice. Lo scopo è quello di ridurre il mal di testa e trasformarlo in un processo ripetibile.

Ecco cosa ho fatto su CentOS 7.2 usando pacchetti yum e CPAN. Questo presuppone che tu stia utilizzando Oracle versione 12.1 ma immagino che la maggior parte delle versioni funzionerà in questo modo.

Installa 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 file

L’installazione si aspetta che il file * .mk sia in /usr/share/oracle/12.1/client64 ma il pacchetto yum install lo inserisce in /usr/share/oracle/12.1/client64/demo.

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

Modifica .bashrc

Aggiungi le seguenti linee al tuo ~ / .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 

Ora fonte il file

 source ~/.bashrc 

Aggiorna CPAN e DBI

Aggiorna CPAN e DBI al più tardi

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

Installa DBD :: Oracle

 cpan> install DBD::Oracle 

Una piccola aggiunta alla risposta di slayedbylucifer. Ho avuto lo stesso problema come menzionato nella domanda. Ho fatto tutti i passaggi descritti da slayedbylucifer. Ma ho ancora il problema come menzionato qui :

 /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 

Così ho creato il seguente link simbolico:

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

Dopo questo passaggio è stato corretto l’errore di sopra (imansible trovare -lclntsh). L’esecuzione del comando make era senza errori.

L’unico problema che ho ancora è che non capisco perché questo collegamento simbolico sia necessario.