Ad Widget

Collapse

ODBC + Oracle странная проблема

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Shurman
    Member
    • Mar 2014
    • 44

    #1

    ODBC + Oracle странная проблема

    Настраиваю обнаружение для оракла.

    Непонятно вот что.
    Лог сервера:

    Code:
    PHP Warning:  odbc_connect(): SQL error: [unixODBC][Driver Manager]Can't open lib '/usr/lib/oracle/12.1/client/lib/libsqora.so.12.1' : file not found, SQL state 01000 in SQLConnect in /etc/zabbix/bin/oracle.odbc.discovery on line 6
    При этом

    Code:
    zabbix@prod1:~> /etc/zabbix/bin/oracle.odbc.discovery ORCL tablespaces
    {"data":[{"{#TBSNAME}":"SYSTEM"},{"{#TBSNAME}":"SYSAUX"},
    Сервер работает тоже от пользователя zabbix (выше - запускаю скрипт вручную, всё ок)

    Ну и надо ли говорить, что всё с окружением ОК (задвоение - от того, что и в локальном профиле пользователя zabbix добавляется путь, и в общесистемном я на всякий случай попробовал добавить):
    Code:
    zabbix@prod1:~> env | grep ORA
    ORACLE_HOME=/usr/lib/oracle/12.1/client
    zabbix@prod1:~> env | grep LIBR
    LD_LIBRARY_PATH=/usr/lib/oracle/12.1/client/lib:/usr/lib:/usr/lib/oracle/12.1/client/lib:/usr/lib:/usr/lib/mpi/gcc/openmpi/lib
    Ну и да,

    Code:
    zabbix@prod1:~> ls -l /usr/lib/oracle/12.1/client/lib/libsqora.so.12.1
    -rw-r--r-- 1 root root 3303791 Май 27  2013 /usr/lib/oracle/12.1/client/lib/libsqora.so.12.1
    На директориях по всей ветке до файла стоит 755.

    Куда бежать?
  • Shurman
    Member
    • Mar 2014
    • 44

    #2
    Разобрался. Может, кому-то окажется полезным.

    Странно, что в LD_LIBRARY_PATH пусть был, и скрипт запускался и работал успешно (isql - клиент ODBC - тоже соединялся нормально, кстати). А в выводе ldconfig -v не было ни пути, ни библиотеки. Помогло прописывание пути в /etc/ld.so.conf/oraodbc.conf. После этого и в ldconfig -v стало отображаться, и файл уже стал находиться. Фиг знает, там у меня древняя СуСЕ, может на современных дистрибутивах и прокатывало бы.

    Но потом вылезла другая ошибка. [[unixODBC][Oracle][ODBC][Ora]ORA-12154: TNS:could not resolve the connect identifier specified ]
    tnsnames.ora, ясен пень, существует и нормальный (впрочем, это понятно из того, что скрипт работает).
    Ну тут я уже подозревал, в чём дело. Поэтому просто внёс переменные окружения (ORACLE_HOME, LD_LIBRARY_PATH, TNS_ADMIN) и их экспорт в /etc/init.d/zabbix_server. После этого проблема решилась!

    Внимание, вопрос: а почему, собственно, сервер не берёт переменные окружения?!? Они 100% выставлены в /etc/profile (ну и видны по env - хоть под рутом, хоть под заббиксом)

    Comment

    Working...