Ad Widget

Collapse

Oracle ODBC

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Gabalino
    Senior Member
    • Mar 2013
    • 103

    #1

    Oracle ODBC

    Здравствуйте, пытаюсь настроить мониторинг БД Oracle по статье https://habrahabr.ru/post/226365/. Из командной строки всё отработывает успешно, а в zabbix'е ошибка Cannot connect to ODBC DSN:[SQL_ERROR]:[01000][0][[unixODBC][Driver Manager]Can't open lib '/usr/lib/oracle/11.2/client64/lib/libsqora.so.11.1' : file not found]|
    Есть какие нибудь мысли по этому поводу?

    Code:
    [root@zabbix ~]# yum list installed | grep oracle
    oracle-instantclient11.2-basic.x86_64   11.2.0.4.0-1                   installed
    oracle-instantclient11.2-devel.x86_64   11.2.0.4.0-1                   installed
    oracle-instantclient11.2-jdbc.x86_64    11.2.0.4.0-1                   installed
    oracle-instantclient11.2-odbc.x86_64    11.2.0.4.0-1                   installed
    oracle-instantclient11.2-sqlplus.x86_64 11.2.0.4.0-1        installed
    Code:
    [root@zabbix ~]# sudo -su zabbix env
    HOSTNAME=zabbix.domain.loc
    SHELL=/bin/bash
    TERM=xterm
    HISTSIZE=1000
    USER=zabbix
    LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:
    LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib:/usr/lib64:
    SUDO_USER=root
    SUDO_UID=0
    USERNAME=zabbix
    PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/lib/oracle/11.2/client64/bin:
    MAIL=/var/spool/mail/root
    TNS_ADMIN=/usr/lib/oracle/11.2/client64/network/admin
    PWD=/root
    LANG=en_US.UTF-8
    SHLVL=1
    SUDO_COMMAND=/bin/bash -c env
    HOME=/var/lib/zabbix
    LOGNAME=zabbix
    SUDO_GID=0
    ORACLE_HOME=/usr/lib/oracle/11.2/client64
    _=/bin/env
    Code:
    [root@zabbix ~]# cat /etc/odbcinst.ini 
    [OracleDriver]
    Description	= Oracle ODBC driver for Oracle 11g
    Driver		= /usr/lib/oracle/11.2/client64/lib/libsqora.so.11.1
    Code:
    [root@zabbix ~]# cat /etc/odbc.ini 
    [ORA_TELECOM_NEW]
    Driver= OracleDriver
    DSN= TELECOM_NEW
    ServerName= TELECOM_NEW
    UserID= zabbix
    Password= zabbix
    Code:
    [root@zabbix ~]# ldd /usr/lib/oracle/11.2/client64/lib/libsqora.so.11.1
    ldd: warning: you do not have execution permission for `/usr/lib/oracle/11.2/client64/lib/libsqora.so.11.1'
    	linux-vdso.so.1 =>  (0x00007ffdacdc2000)
    	libdl.so.2 => /usr/lib64/libdl.so.2 (0x00007f6612b1f000)
    	libm.so.6 => /usr/lib64/libm.so.6 (0x00007f661281c000)
    	libpthread.so.0 => /usr/lib64/libpthread.so.0 (0x00007f6612600000)
    	libnsl.so.1 => /usr/lib64/libnsl.so.1 (0x00007f66123e7000)
    	libclntsh.so.11.1 => /usr/lib/oracle/11.2/client64/lib/libclntsh.so.11.1 (0x00007f660fa77000)
    	libodbcinst.so.1 => /usr/lib64/libodbcinst.so.1 (0x00007f660f865000)
    	libc.so.6 => /usr/lib64/libc.so.6 (0x00007f660f4a4000)
    	/lib64/ld-linux-x86-64.so.2 (0x00007f6612ee6000)
    	libnnz11.so => /usr/lib/oracle/11.2/client64/lib/libnnz11.so (0x00007f660f0d6000)
    	libaio.so.1 => /usr/lib64/libaio.so.1 (0x00007f660eed4000)
    	libltdl.so.7 => /usr/lib64/libltdl.so.7 (0x00007f660ecca000)
    Code:
    cat $ORACLE_HOME/network/admin/tnsnames.ora
    TELECOM_NEW = 
      (DESCRIPTION = 
        (ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.0.1)(PORT = 1521))
        (CONNECT_DATA = 
          (SERVER = DEDICATED)
          (SERVICE_NAME = abc)
        )
    )
  • SKabanov
    Member
    • Jan 2014
    • 36

    #2
    Добрый день!
    Первое что приходит в голову это проблема с правами на файл драйвера.

    Comment

    • aib
      Senior Member
      • Jan 2014
      • 1615

      #3
      Причем, судя по листингу, даже ROOT таких прав не имеет
      Code:
      ldd: warning: you do not have execution permission for `/usr/lib/oracle/11.2/client64/lib/libsqora.so.11.1'
      Sincerely yours,
      Aleksey

      Comment

      • aydar
        Senior Member
        • Dec 2014
        • 176

        #4
        ооо, с этой проблемой я бился долго и пока забросил, читал форумы, пишут, что одбс драйвер для оракл надо перелинковать.

        cannot connect to odbc dsn:[sql_error]:[01000][0][[unixodbc][driver manager]can't open lib '/usr/lib/oracle/11.2/client64/lib/li
        кстати вы как расширили лог по символам? у меня ошибка не полностью видна была
        Last edited by aydar; 11-03-2016, 09:17.

        Comment

        • Gabalino
          Senior Member
          • Mar 2013
          • 103

          #5
          Originally posted by aib
          Причем, судя по листингу, даже ROOT таких прав не имеет
          Code:
          ldd: warning: you do not have execution permission for `/usr/lib/oracle/11.2/client64/lib/libsqora.so.11.1'
          Добавил прав на выполнение, предупреждение пропало, но не помогло
          Code:
          [root@zabbix ~]# ls -la /usr/lib/oracle/11.2/client64/lib/libsqora.so.11.1
          -rwxr-xr-x. 1 root zabbix 1003582 Aug 24  2013 /usr/lib/oracle/11.2/client64/lib/libsqora.so.11.1

          Comment

          • Gabalino
            Senior Member
            • Mar 2013
            • 103

            #6
            Originally posted by aydar
            ооо, с этой проблемой я бился долго и пока забросил, читал форумы, пишут, что одбс драйвер для оракл надо перелинковать.

            кстати вы как расширили лог по символам? у меня ошибка не полностью видна была
            Это печально. Текст ошибки копировал из web-интерфейса.
            Меня удивляет, почему это не работает в zabbix.

            Code:
            [root@zabbix ~]# isql -v ORA_TELECOM_NEW
            +---------------------------------------+
            | Connected!                            |
            |                                       |
            | sql-statement                         |
            | help [tablename]                      |
            | quit                                  |
            |                                       |
            +---------------------------------------+
            SQL> select banner from v$version where rownum=1;
            +---------------------------------------------------------------------------------+
            | BANNER                                                                          |
            +---------------------------------------------------------------------------------+
            | Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production    |
            +---------------------------------------------------------------------------------+
            SQLRowCount returns -1
            1 rows fetched
            SQL> quit;

            Comment

            • oitss
              Member
              • Dec 2013
              • 62

              #7
              А все таки запустить isql и sqlplus из под пользователя zabbix ?

              Comment

              • Gabalino
                Senior Member
                • Mar 2013
                • 103

                #8
                Originally posted by oitss
                А все таки запустить isql и sqlplus из под пользователя zabbix ?
                Под пользователем zabbix isql работает
                Code:
                [root@zabbix ~]# su zabbix -c "isql -v ORA_TELECOM_NEW"
                +---------------------------------------+
                | Connected!                            |
                |                                       |
                | sql-statement                         |
                | help [tablename]                      |
                | quit                                  |
                |                                       |
                +---------------------------------------+
                SQL> select banner from v$version where rownum=1;
                +---------------------------------------------------------------------------------+
                | BANNER                                                                          |
                +---------------------------------------------------------------------------------+
                | Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production    |
                +---------------------------------------------------------------------------------+
                SQLRowCount returns -1
                1 rows fetched
                SQL> quit;

                Comment

                • oitss
                  Member
                  • Dec 2013
                  • 62

                  #9
                  а так ?

                  Code:
                  su - zabbix -c "isql -v ORA_TELECOM_NEW"
                  Last edited by oitss; 11-03-2016, 10:31.

                  Comment

                  • Gabalino
                    Senior Member
                    • Mar 2013
                    • 103

                    #10
                    Originally posted by oitss
                    а так ?

                    Code:
                    su - zabbix -c "isql -v ora_telecom_new"
                    И так работает.

                    Code:
                    [root@zabbix lib]# su - zabbix -c "isql -v ORA_TELECOM_NEW"
                    +---------------------------------------+
                    | Connected!                            |
                    |                                       |
                    | sql-statement                         |
                    | help [tablename]                      |
                    | quit                                  |
                    |                                       |
                    +---------------------------------------+
                    SQL>

                    Comment

                    • oitss
                      Member
                      • Dec 2013
                      • 62

                      #11
                      В стартовом скрипте zabbix-server

                      TNS_ADMIN,ORACLE_HOME,LD_LIBRARY_PATH определяются ?

                      Comment

                      • Gabalino
                        Senior Member
                        • Mar 2013
                        • 103

                        #12
                        Originally posted by oitss
                        В стартовом скрипте zabbix-server

                        TNS_ADMIN,ORACLE_HOME,LD_LIBRARY_PATH определяются ?
                        Имеете ввиду переменные окружения?

                        Code:
                        [root@zabbix lib]# su - zabbix -c "env"
                        XDG_SESSION_ID=184
                        HOSTNAME=zabbix.domain.loc
                        SHELL=/bin/bash
                        TERM=xterm
                        HISTSIZE=1000
                        USER=zabbix
                        LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib:/usr/lib64:
                        TNS_ADMIN=/usr/lib/oracle/11.2/client64/network/admin
                        MAIL=/var/spool/mail/zabbix
                        PATH=/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/usr/lib/oracle/11.2/client64/bin:/var/lib/zabbix/bin
                        PWD=/var/lib/zabbix
                        LANG=en_US.UTF-8
                        HISTCONTROL=ignoredups
                        SHLVL=1
                        HOME=/var/lib/zabbix
                        LOGNAME=zabbix
                        LESSOPEN=||/usr/bin/lesspipe.sh %s
                        ORACLE_HOME=/usr/lib/oracle/11.2/client64
                        _=/bin/env

                        Comment

                        • oitss
                          Member
                          • Dec 2013
                          • 62

                          #13
                          Если эти переменные прописаны в .bash_profile пользователя zabbix , то процессу zabbix-server они недоступны.

                          В той статье написано - Для этого необходимо, чтобы в окружение процесса zabbix_proxy были доступны переменные, указанные выше, для это добавим в файл: и далее по тексту.

                          В статье будет рассмотрена возможность мониторинга база данных по средствам встроенной в Zabbix поддержке ODBC, c использованием автообнаружения объектов. Для начала рассмотрим доступные для Zabbix...

                          Comment

                          • Gabalino
                            Senior Member
                            • Mar 2013
                            • 103

                            #14
                            Там тоже всё прописано

                            Code:
                            [root@zabbix lib]# cat /etc/init.d/functions
                            # -*-Shell-script-*-
                            #
                            # functions	This file contains functions to be used by most or all
                            #		shell scripts in the /etc/init.d directory.
                            #
                            
                            TEXTDOMAIN=initscripts
                            
                            # Make sure umask is sane
                            umask 022
                            
                            # Set up a default search path.
                            PATH="/sbin:/usr/sbin:/bin:/usr/bin"
                            
                            ORACLE_HOME=/usr/lib/oracle/11.2/client64
                            LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib64:$LD_LIBRARY_PATH
                            TNS_ADMIN=$ORACLE_HOME/network/admin
                            
                            PATH=$PATH:$ORACLE_HOME/bin:$HOME/bin
                            
                            export ORACLE_HOME
                            export LD_LIBRARY_PATH
                            export TNS_ADMIN
                            export PATH
                            ...

                            Comment

                            • oitss
                              Member
                              • Dec 2013
                              • 62

                              #15
                              Проверьте фактическое окружение zabbix_server


                              Code:
                              strings –a /proc/<pid_of_the_process>/environ

                              Comment

                              Working...