libclntsh.so.11.1: не удается открыть общий объектный файл. - PullRequest
21 голосов
/ 25 апреля 2010

Я хочу запланировать задачу в Linux с помощью icrontab, и задача написана на python и должна импортировать модуль cx_Oracle, поэтому я экспортирую ORACLE_HOME и LD_LIBRARY_PATH в .bash_profile ,но возникает ошибка:

libclntsh.so.11.1: невозможно открыть общий объектный файл.

Поскольку можно выполнить задачу, выполнив команду в оболочке, например:

python a.py  # ok

Я изменяю задачу в icrontab на сценарий оболочки, который вызывает мой сценарий Python,но исключение повторилось?

# the shell script scheduled in icrontab
#! bash 
python a.py    

Не могли бы вы помочь, как это сделать?

Ответы [ 11 ]

0 голосов
/ 10 августа 2016

Просто передайте переменные пути Oracle, прежде чем запускать какие-либо сценарии:
Как и для Perl, вы можете добавить ниже в начале вашего скрипта:

BEGIN {
   my $ORACLE_HOME     = "/usr/lib/oracle/11.2/client64";
   my $LD_LIBRARY_PATH = "$ORACLE_HOME/lib";
   if ($ENV{ORACLE_HOME} ne $ORACLE_HOME
   || $ENV{LD_LIBRARY_PATH} ne $LD_LIBRARY_PATH
   ) {
      $ENV{ORACLE_HOME}     = "/usr/lib/oracle/11.2/client64";
      $ENV{LD_LIBRARY_PATH} = "$ORACLE_HOME/lib";
      exec { $^X } $^X, $0, @ARGV;
   }
}
...