2012-07-10 4 views
17

Est-ce que quelqu'un pourrait me guider pour installer le module Perl DBD::Oracle?Perl DBD :: Installation du module Oracle

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

  • Plate-forme: RHEL 5.8 64 bits
  • package installé Perl DBI
  • installé client Oracle Instant pour le bit Linux 64 (basi + sdk + sqlplus composant pour le client instantané
  • ont mis la bonne $ORACLE_HOME et $LD_LIBRARY_PATH
  • Puis, quand je fais perl Makefile.pl il échoue avec e e erreur suivant:

    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 avec le client instantané Oracle, alors pourriez-vous s'il vous plaît laissez-moi savoir ce qui me manque?

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

Répondre

37
  • Installez le module Perl DBI ($ yum install perl-DBI)
  • installer manuellement ci-dessous trois RPM pour le client Oracle instant (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 
    

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

  • ensemble des variables ci-dessous:

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

    utilisateurs MacOS auront besoin:

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

    ajouter également ORACLE_HOME à votre variable PATH.

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

  • Décompressez le module et exécuter des commandes ci-dessous dans l'ordre donné:

    perl Makefile.PL 
    make 
    make install 
    

FAIT !!!

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

Certainement, c'était un bon apprentissage pour un débutant comme moi.

5

Vous pouvez également lire mon article How to install DBD::Oracle qui contient toutes les étapes nécessaires pour installer le module DBD :: Oracle CPAN, ce qui n'est pas une installation simple. Le but est de réduire les maux de tête et de les transformer en un processus reproductible.

+0

@gerardw: merci pour le rapport, j'ai juste enlevé la dernière barre, peut-être il est arrivé depuis GitHub Pages mises à niveau vers Jekyll3 et les changements de format de lien. En fait, je ne prétends pas hype ce lien et Je ne gagne pas d'argent avec mon site web, j'aime partager mes connaissances pour redonner à la communauté, et je suis vraiment convaincu que l'article peut aider d'autres personnes qui ont lutté (comme moi :) essayant d'installer DBD :: Oracle. –

+0

Avez-vous une chance de mettre à jour ce document pour 12.x? 12.2 au moins n'inclut pas un fichier .mk, et le "démo" est quelque chose dont la construction se plaint. Pourquoi le module CPAN ne fonctionne-t-il pas pour quelque chose de plus récent qu'à partir de 2014? – Otheus

+0

Salut @Otheus Je suis désolé mais je n'utilise pas Oracle récemment, donc je n'ai pas un Oracle 12 pour le tester. L'article a été écrit pour Oracle 11g, mais je ne comprends pas le fichier .mk dont vous parlez puisqu'il n'y a aucune mention dans les instructions de l'article. À quelle étape de l'instruction de l'article êtes-vous arrivé? Quelle erreur avez-vous eu? Peut-être que je peux aider aussi. –

0

Une petite addition à la réponse de l'abattu bylucifer. J'ai eu le même problème que mentionné dans la question. J'ai fait toutes les étapes décrites par slayedbylucifer. Mais je suis le problème comme mentionné 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 

Je crée le lien symbolique suivant:

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

Après cette étape, l'erreur d'en haut (ne peut pas trouver -lclntsh) a été fixé. L'exécution de la commande make était sans erreur.

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

2

Voici ce que j'ai fait sur CentOS 7.2 en utilisant les paquets yum et le 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 démo rendre les fichiers

L'installation attend le fichier * .mk être en /usr/share/oracle/12.1/client64 mais yum package install 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 

la source Maintenant, le fichier

source ~/.bashrc 

Mise à jour CPAN et DBI

Mise à jour CPAN et DBI la dernière

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

Installer DBD :: Oracle

cpan> install DBD::Oracle 
+0

Fonctionne pour 12.2 64bit mais il y a des avertissements/erreurs. (Size_t est en conflit avec le format% d, principalement.) Merci beaucoup – Otheus

Questions connexes