Perl DBD :: Установка модуля Oracle

18

Может ли кто-нибудь помочь мне установить модуль Perl DBD::Oracle ?

Вот что я сделал до сих пор:

  • Платформа: RHEL 5.8 64 бит
  • Установленный пакет DBI Perl
  • Установленный клиент Oracle Instant для Linux 64 бит (компонент basi + sdk + sqlplus для мгновенного клиента
  • Установили правильные $ORACLE_HOME и $LD_LIBRARY_PATH
  • Тогда, когда я делаю perl Makefile.pl , он терпит неудачу со следующей ошибкой:

    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.
    
  • Мгновенная клиентская версия: 11.1.0

  • Версия DBD::Oracle - 1.44

Если вы успешно установили соединение с мгновенным клиентом Oracle, не могли бы вы сообщить мне, что мне не хватает?

Возможно ли установить DBD::Oracle без использования мгновенного клиента Oracle?

    
задан slayedbylucifer 10.07.2012 в 08:04
источник

4 ответа

38
  • Установить модуль Perl DBI ( $ yum install perl-DBI )
  • Вручную установите ниже трех RPM для мгновенного клиента Oracle (от мгновенных клиентских загрузок для 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
    

Я использую 64-битный Linux-блок, поэтому выберите свои имена файлов RPM соответственно.

  • установите следующие переменные:

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

    Пользователям MacOS потребуется:

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

    Также добавьте ORACLE_HOME к переменной PATH .

  • скачать DBD :: Oracle из CPAN

  • распакуйте модуль и выполните команды ниже в заданной последовательности:

    perl Makefile.PL
    make
    make install
    

СОВЕРШЕНА !!!

Проблемы, с которыми я столкнулся, связаны с неправильным LD_LIBRARY_PATH . Я установил его в /usr/lib/oracle/11.2/client64 , тогда как правильное значение - /usr/lib/oracle/11.2/client64/lib .

Конечно, это было отличное обучение для новичка, подобного мне.     

ответ дан slayedbylucifer 10.07.2012 в 08:54
5

вы также можете прочитать мою статью Как установить DBD :: Oracle , который содержит все шаги, необходимые для установки модуля DBD :: Oracle CPAN, который не является простой установкой. Цель состоит в том, чтобы уменьшить головную боль и превратить ее в повторяемый процесс.

    
ответ дан Gianluca Casati 22.12.2014 в 16:34
  • @gerardw: спасибо за отчет об этом, я просто удалил последнюю косую черту, возможно, это произошло, так как страницы GitHub были обновлены до Jekyll3 и изменения формата ссылки. На самом деле я не претендую на то, чтобы рекламировать эту ссылку, и я не зарабатываю деньги на своем веб-сайте, мне нравится делиться своими знаниями, чтобы вернуть сообщество, и я действительно убежден, что статья может помочь другим людям, которые боролись (как я :) пытается установить DBD :: Oracle. –  Gianluca Casati 07.02.2016 в 21:36
  • Вы можете обновить этот документ для 12.x? 12.2, по крайней мере, не включают файл .mk, а «демо» - это то, о чем жалуется сборка. Почему не работает модуль CPAN для чего-то более нового, чем с 2014 года? –  Otheus 19.07.2017 в 20:11
  • Привет @Otheus Извините, но я недавно не использую Oracle, поэтому у меня нет Oracle 12 для его тестирования. Статья написана для Oracle 11g, но я не понимаю файл .mk, который вы ссылаетесь, поскольку в инструкциях по статье нет упоминания. На каком этапе инструкции вы прибыли? Какую ошибку вы получили? Может быть, я тоже могу помочь. –  Gianluca Casati 25.07.2017 в 00:17
  • YEs, краткие инструкции по полезной информации. Существует файл .mk, который использует Oracle, чтобы помочь компиляторам API и получить все правильные заголовки. К сожалению, они продолжают перемещать этот файл в разных структурах каталогов. Последние перечислены как demo.mk. Очень (не так) очевидно. :( Чтобы заставить DBD-модуль работать, мне нужно было только cp-файлы в каталоге, содержащем demo.mk, в его родительский каталог. –  Otheus 27.07.2017 в 20:24
  • Prolly лучшие варианты - сообщить об этом здесь github.com/pythian/DBD-Oracle/issues –  Gianluca Casati 29.07.2017 в 19:53
2

Вот что я сделал в CentOS 7.2, используя пакеты yum и CPAN. Предполагается, что вы используете Oracle версии 12.1, но я бы предположил, что большинство версий будут работать таким образом.

Установить 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

Копировать демонстрационные файлы

Установка ожидает, что файл * .mk будет находиться в /usr/share/oracle/12.1/client64, но установка пакета yum помещает их в /usr/share/oracle/12.1/client64/demo.

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

Изменить .bashrc

Добавьте следующие строки в ~ / .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

Теперь отправьте файл

source ~/.bashrc

Обновить CPAN и DBI

Обновите CPAN и DBI до последней версии

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

Установить DBD :: Oracle

cpan> install DBD::Oracle
    
ответ дан Maxirus 11.07.2017 в 17:02
  • Работает на 12,2 64-битных, но есть предупреждения / ошибки. (Size_t конфликтует с форматом% d, в основном.) Большое спасибо –  Otheus 19.07.2017 в 20:15
0

Небольшое дополнение к ответу slayedbylucifer. У меня была такая же проблема, как упоминалось в вопросе. Я сделал все шаги, описанные slayedbylucifer. Но все же у меня возникла проблема, например, здесь :

/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

Итак, я создал следующую символическую ссылку:

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

После этого шага исправлена ​​ошибка сверху (не удалось найти -lclntsh). Выполнение команды make было без ошибок.

Единственная проблема, с которой я все еще сталкиваюсь, заключается в том, что я не понимаю, зачем нужна эта символическая ссылка.     

ответ дан Charmin 28.09.2015 в 11:11