web-dev-qa-db-fra.com

Perl DBD :: Installation du module Oracle

Quelqu'un pourrait-il me guider pour installer le module Perl DBD::Oracle?

Voici ce que j'ai fait jusqu'à présent:

  • Plate-forme: RHEL 5.8 64 bits
  • Package Perl DBI installé
  • Client Oracle Instant installé pour Linux 64 bits (composant basi + sdk + sqlplus pour le client instantané)
  • Avoir défini les $Oracle_HOME et $LD_LIBRARY_PATH corrects
  • Alors quand je fais Perl Makefile.pl il échoue avec l'erreur suivante:

    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 version client instantanée: 11.1.0

  • La version DBD::Oracle est 1.44

Si vous avez installé avec succès le client instantané Oracle, pouvez-vous me laisser savoir ce qui me manque?

Est-il possible d'installer DBD::Oracle sans utiliser le client instantané Oracle?

21
slayedbylucifer
  • Installer le module Perl DBI ($ yum install Perl-DBI)
  • Installez manuellement ci-dessous trois RPM pour le client instantané Oracle (à partir de Téléchargements de client instantanée pour 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
    

J'utilise une machine Linux 64 bits, sélectionnez donc vos noms de fichiers RPM en conséquence.

  • définir ci-dessous les variables:

    LD_LIBRARY_PATH=/usr/lib/Oracle/11.2/client64/lib
    Oracle_HOME=/usr/lib/Oracle/11.2/client64
    

    Les utilisateurs de MacOS auront besoin de:

    DYLD_LIBRARY_PATH=/usr/lib/Oracle/11.2/client64/
    

    Ajoutez également Oracle_HOME à votre variable PATH.

  • télécharger DBD :: Oracle à partir de CPAN

  • décompressez le module et exécutez les commandes ci-dessous dans l'ordre indiqué:

    Perl Makefile.PL
    make
    make install
    

TERMINÉ !!!

Les problèmes que j'avais rencontrés étaient dus au mauvais LD_LIBRARY_PATH. Je l'avais mis à /usr/lib/Oracle/11.2/client64 alors que la valeur correcte est /usr/lib/Oracle/11.2/client64/lib.

Ce fut certainement un excellent apprentissage pour un débutant comme moi. 

40
slayedbylucifer

vous pouvez également lire mon article Comment installer DBD :: Oracle qui contient toutes les étapes nécessaires à l'installation du module DBD :: Oracle CPAN, qui n'est pas une installation simple. Le but est de réduire les maux de tête et de les transformer en processus reproductible.

6
Gianluca Casati

Voici ce que j'ai fait sur CentOS 7.2 en utilisant des packages yum et CPAN. Cela suppose que vous utilisez Oracle version 12.1, mais j'imagine que la plupart des versions fonctionneront de cette façon.

Installer 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

Copier la démo pour créer des fichiers

L'installation s'attend à ce que le fichier * .mk se trouve dans /usr/share/Oracle/12.1/client64 mais l'installation du package yum les place dans /usr/share/Oracle/12.1/client64/demo.

Sudo cp /usr/share/Oracle/12.1/client64/demo/* /usr/share/Oracle/12.1/client64

Modifier .bashrc

Ajoutez les lignes suivantes à votre ~/.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

Maintenant, source le fichier

source ~/.bashrc

Mise à jour des réseaux CPAN et DBI

Mettre à jour CPAN et DBI à la dernière

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

Installer DBD :: Oracle

cpan> install DBD::Oracle
2
Maxirus

Un petit ajout à la réponse slayedbylucifer. J'ai eu le même problème que mentionné dans la question. J'ai effectué toutes les étapes décrites par slayedbylucifer. Mais j'ai toujours le problème comme mentionné ici :

/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

J'ai donc créé le lien symbolique suivant:

ln -s /opt/Oracle/app/Oracle/product/<YOUR_Oracle_VERSION>/client_1/lib/libclntsh.so $Oracle_HOME/libclntsh.so*

Ensuite, l'erreur ci-dessus (impossible de trouver -lclntsh) a été corrigée. L'exécution de la commande make s'est déroulée sans erreur.

Le seul problème que j'ai encore, c'est que je ne comprends pas pourquoi ce lien symbolique est nécessaire. 

0
Charmin