Ad Widget

Collapse

TNS_ADMIN и проблема подключения

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Nickollla
    Junior Member
    • Aug 2020
    • 4

    #1

    TNS_ADMIN и проблема подключения



    Всех приветствую.
    Подскажите куда копать. Особо не понимаю Oracle поэтому часть терминов не знаю.
    Исходные данные:
    Centos 7
    Софт zabbix 5.0.2
    oracle-instantclient19.8-basic.x86_64
    oracle-instantclient19.8-devel.x86_64
    oracle-instantclient19.8-odbc.x86_64
    oracle-instantclient19.8-sqlplus.x86_64

    Собрал zabbix с поддержкой на бэкенде Oracle. Тут никаких проблем.
    Залили данные в БД Oracle.
    Прописал в конфиге DBHost(тут указал непосредственно удаленный хост с Oracle базой),DBName,DBUser и DBPassword.
    Все замечательно сервер читает БД и нормально стартует.

    Но охота настроить это всё через TNS_ADMIN, чтобы автоматом переключался zabbix на резервную БД. Как это делает другой софт работая через oracle instant client
    Для этого я добавил в файл /etc/profile записи(хотя я думаю это не обязательно так как enveroment я еще прописываю через сервис):
    export ORACLE_HOME=/usr/lib/oracle/19.8/client64
    export PATH=$PATH:$ORACLE_HOME/bin
    export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib64:/usr/lib:$ORACLE_HOME/bin
    export TNS_ADMIN=$ORACLE_HOME/lib/network/admin

    Так же прописал enveroment через systemd для zabbix-server(/etc/sysconfog/zabbix-server) с таким содержимым:
    ORACLE_HOME=/usr/lib/oracle/19.8/client64
    TNS_ADMIN=/usr/lib/oracle/19.8/client64/lib/network/admin
    LD_LIBRARY_PATH=/usr/lib/oracle/19.8/client64/lib:/usr/lib64:/usr/lib:/usr/lib/oracle/19.8/client64/bin

    Через /prov/pid_zabbix/environ видно, что ENV выставляются

    Создал файл /usr/lib/oracle/19.8/client64/lib/network/admin/tnsnames.ora с содержимым:
    zabbix.ora.local =
    (DESCRIPTION =
    (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(HOST = dc3-srv-dbora1.testdomain.local)(PORT = 1521))
    )
    (CONNECT_DATA =
    (SERVICE_NAME = zabbix.ora.local)
    )
    )


    Соответственно в DBName я указал zabbix.ora.local
    Закомментировал DBHost
    Как я понимаю хост подключения должен взяться из /usr/lib/oracle/19.8/client64/lib/network/admin/tnsnames.ora
    Но в логах zabbix получаю connection to database '//localhost/zabbix.ora.local' failed: [-1] ORA-12541: TNS:no listener
    Вот и не понятно почему не идет на хост который указан в tnsname.ora

    Думал не может прочитать /usr/lib/oracle/19.8/client64/lib/network/admin/tnsnames.ora, но strace показывает, что zabbix(или эта библиотека) вычитывает данный файл
    access("/usr/lib/oracle/19.8/client64/lib/network/admin/tnsnames.ora", F_OK) = 0
    stat("/usr/lib/oracle/19.8/client64/lib/network/admin/tnsnames.ora", {st_mode=S_IFREG|0644, st_size=209, ...}) = 0
    open("/usr/lib/oracle/19.8/client64/lib/network/admin/tnsnames.ora", O_RDONLY) = 5
    ...

    Не знаю, что еще поправить. Спасайте
    З.Ы. dc3-srv-dbora1.testdomain.local - нормально резольвится и нормально с ним работает если указать в zabbix_server.conf DBHost=dc3-srv-dbora1.testdomain.local

    А может ли zabbix так работать с TNS_ADMIN(тут я имею ввиду не проверки ODBC, а именно как бэкенд для zabbix)? В скудных ответах гугла некоторые пишут, что у них нормально работает переключения БД, но конкретики нет.
Working...