2012-07-10 20 views
17

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

Ecco quello che ho fatto finora:

  • Piattaforma: RHEL 5.8 a 64 bit
  • Installato pacchetto Perl DBI
  • installato Oracle Instant Client per Linux a 64 bit (basi + SDK + sqlplus componente per il cliente istante
  • stata impostata la corretta $ORACLE_HOME e $LD_LIBRARY_PATH
  • Poi quando lo faccio perl Makefile.pl non riesce con th e 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 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 versione client instant: 11.1.0

  • La versione DBD::Oracle è 1,44

Se avete installato con successo con il cliente istante di Oracle, allora potresti per favore fammi sapere cosa mi sto perdendo?

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

risposta

37
  • Installare modulo Perl DBI ($ yum install perl-DBI)
  • Installare manualmente sotto tre RPM per Oracle Instant Client (da 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 
    

Sto usando Linux a 64 bit, in modo da selezionare i nomi dei file RPM di conseguenza.

  • insieme sotto variabili:

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

    utenti MacOS avranno bisogno:

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

    aggiungere anche ORACLE_HOME alla variabile PATH.

  • scaricare DBD :: Oracle da CPAN

  • scompattare il modulo e comandi in data sequenza eseguire di seguito:

    perl Makefile.PL 
    make 
    make install 
    

FATTO !!!

I problemi che ho dovuto affrontare erano dovuti allo LD_LIBRARY_PATH errato. L'avevo 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.

5

è inoltre possibile leggere il mio articolo How to install 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.

+0

@gerardw: grazie per il rapporto, ho appena tolto l'ultima barra, forse è successo da GitHub Pages aggiornato a Jekyll3 e modifica del formato del collegamento. In realtà non faccio finta di pubblicizzare quel link e Non guadagno soldi con il mio sito web, mi piace condividere le mie conoscenze per dare indietro alla comunità, e sono davvero convinto che l'articolo possa aiutare altre persone che hanno difficoltà (come me :) cercando di installare DBD :: Oracle. –

+0

Qualche possibilità di aggiornare quel documento per 12.x? 12.2 almeno non includono un file .mk, e quello "demo" è qualcosa di cui la build si lamenta. Perché il modulo CPAN non funziona per qualcosa di più recente rispetto al 2014? – Otheus

+0

Salve @Otheus mi dispiace ma non sto usando Oracle recentemente, quindi non ho un Oracle 12 per testarlo. L'articolo è stato scritto per Oracle 11g, ma, non capisco il file .mk a cui ti stai riferendo dato che non ci sono menzioni nelle istruzioni dell'articolo. A quale punto di istruzione dell'articolo sei arrivato? Quale errore hai ottenuto? Forse posso aiutare pure. –

0

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 ancora ho ottenuto il problema come menzionato 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 

così ho creato il seguente link simbolico:

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

Dopo questo passo l'errore dall'alto (non riesce a trovare -lclntsh) è stato fissato. L'esecuzione del comando make era senza errori.

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

2

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.

Installare 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 rendere i file

L'installazione si aspetta il file * .mk di essere in /usr/share/oracle/12.1/client64 ma il l'installazione del pacchetto yum li mette 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

Aggiungere le seguenti righe 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 

Aggiornamento CPAN e DBI

Aggiornamento CPAN e DBI all'ultima

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

Installare DBD :: Oracle

cpan> install DBD::Oracle 
+0

Funziona per 12,2 64 bit ma ci sono avvertimenti/errori (Size_t è in conflitto con il formato% d, principalmente.) Molte grazie – Otheus

Problemi correlati