Can';t打开lib'/usr/lib/oracle/11.2/client64/lib/libsqora.so.11.1创建时;“数据库监视器”;zabbix中的项目

Can';t打开lib'/usr/lib/oracle/11.2/client64/lib/libsqora.so.11.1创建时;“数据库监视器”;zabbix中的项目,oracle,zabbix,unixodbc,Oracle,Zabbix,Unixodbc,在此之前,安装了unixODBC unixODBC.x86_64 2.2.14-14.el6 unixODBC-devel.x86_64 2.2.14-14.el6 安装的Oracle ODBC驱动程序是: oracle-instantclient11.2-basic-11.2.0.1.0-1.x86_64 oracle-instantclient11.2-odbc-11.2.0.1.0-1.x86_64 oracle-instantclient11.2-devel-11.2.0.1.0-1.x

在此之前,安装了unixODBC

  • unixODBC.x86_64 2.2.14-14.el6
  • unixODBC-devel.x86_64 2.2.14-14.el6
  • 安装的Oracle ODBC驱动程序是:

  • oracle-instantclient11.2-basic-11.2.0.1.0-1.x86_64
  • oracle-instantclient11.2-odbc-11.2.0.1.0-1.x86_64
  • oracle-instantclient11.2-devel-11.2.0.1.0-1.x86_64
  • 和odbcinst.ini:

    [Oracle-11g]
    Description=ODBC for Oracle
    Driver=/usr/lib/oracle/11.2/client64/lib/libsqora.so.11.1
    UsageCount=1
    FileUsage=1
    Driver Logging = 7
    
    odbc.ini:

    [test]
    Driver      = Oracle-11g
    DSN = Oracle-11g
    ServerName =  gzdb
    UserID = xxx
    Password = xxx
    
    ODBC连接正在成功运行

    shell> isql -v test
    +---------------------------------------+
    | Connected!                            |
    |                                       |
    | sql-statement                         |
    | help [tablename]                      |
    | quit                                  |
    |                                       |
    +---------------------------------------+
    
    为了启用ODBC支持,我重新编译了zabbix3.0,并使用标志--with unixodbc

    ./configure --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --with-unixodbc
    
    并用新的二进制文件替换旧的zabbix_服务器

    但是,当我在zabbix中创建“数据库监视器”项时,仍然存在一个错误:

    所以我运行
    su-zabbix-c“ldd/usr/lib/oracle/11.2/client64/lib/libsqora.So.11.1”
    看起来还可以

     su - zabbix -c "ldd /usr/lib/oracle/11.2/client64/lib/libsqora.so.11.1"
        linux-vdso.so.1 =>  (0x00007fffe21ee000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007f1ad095e000)
        libm.so.6 => /lib64/libm.so.6 (0x00007f1ad06d9000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f1ad04bc000)
        libnsl.so.1 => /lib64/libnsl.so.1 (0x00007f1ad02a3000)
        libclntsh.so.11.1 => /usr/lib/oracle/11.2/client64/lib/libclntsh.so.11.1 (0x00007f1acdd72000)
        libodbcinst.so.1 => /usr/lib64/libodbcinst.so.1 (0x00007f1acdb61000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f1acd7cd000)
        /lib64/ld-linux-x86-64.so.2 (0x000000373c600000)
        libnnz11.so => /usr/lib/oracle/11.2/client64/lib/libnnz11.so (0x00007f1acd404000)
        libaio.so.1 => /lib64/libaio.so.1 (0x00007f1acd203000)
        libltdl.so.7 => /usr/lib64/libltdl.so.7 (0x00007f1accffa000)
    

    我真的不知道这个错误是什么意思

    我在连接office和Amazon的EC2实例时遇到了一个非常类似的错误,结果证明这个错误非常误导。具体来说,我的错误是:

    连接错误:('01000',“[01000][unixODBC][Driver Manager]无法连接 打开lib'/usr/lib/oracle/12.1/client64/lib/libsqora.so.12.1”:文件 找不到(0)(SqlDriverConnection“”)


    我们的防火墙是罪魁祸首。一个更宽松的设置允许成功,而不会出现进一步的问题。

    我在连接office和Amazon的EC2实例时遇到了一个非常类似的错误,结果证明这个错误非常误导。具体来说,我的错误是:

    连接错误:('01000',“[01000][unixODBC][Driver Manager]无法连接 打开lib'/usr/lib/oracle/12.1/client64/lib/libsqora.so.12.1”:文件 找不到(0)(SqlDriverConnection“”)


    我们的防火墙是罪魁祸首。更宽松的设置允许成功,而不会出现进一步的问题。

    这是因为您的zabbix服务器不知道在哪里查找Oracle库。 尝试将环境变量LD_LIBRARY_PATH导出到zabbix服务器

    不知道你在用什么操作系统,我在CentOS 7上

    创建/etc/sysconfig/zabbix服务器文件,并使用

    LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/lib/oracle/12.1/client64/lib"
    export LD_LIBRARY_PATH
    

    然后重新启动zabbix服务器,因为您的zabbix服务器不知道在哪里查找Oracle库。 尝试将环境变量LD_LIBRARY_PATH导出到zabbix服务器

    不知道你在用什么操作系统,我在CentOS 7上

    创建/etc/sysconfig/zabbix服务器文件,并使用

    LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/lib/oracle/12.1/client64/lib"
    export LD_LIBRARY_PATH
    

    然后重新启动zabbix服务器

    ,因为mysqld守护进程使用mysql(而不是root)运行user,所以可以使用命令[ps]check

    ps aux | grep -i mysqld
    
    mysql     3129  0.6  5.0 1862256 94272 ?       Ssl  17:52   0:00 /usr/sbin/mysqld
    
    1.将环境变量$LD_LIBRARY_PATH添加到/usr/lib/systemd/system/mariadb.service中

    echo "Environment=\"LD_LIBRARY_PATH=$LD_LIBRARY_PATH\"" >> /usr/lib/systemd/system/mariadb.service 
    
    systemctl stop mariadb.service
    systemctl daemon-reload
    systemctl start mariadb.service
    
    2.重新启动mariadb.service

    echo "Environment=\"LD_LIBRARY_PATH=$LD_LIBRARY_PATH\"" >> /usr/lib/systemd/system/mariadb.service 
    
    systemctl stop mariadb.service
    systemctl daemon-reload
    systemctl start mariadb.service
    

    祝你好运

    因为mysqld守护进程使用mysql(而不是root)运行user,所以可以使用命令[ps]check

    ps aux | grep -i mysqld
    
    mysql     3129  0.6  5.0 1862256 94272 ?       Ssl  17:52   0:00 /usr/sbin/mysqld
    
    1.将环境变量$LD_LIBRARY_PATH添加到/usr/lib/systemd/system/mariadb.service中

    echo "Environment=\"LD_LIBRARY_PATH=$LD_LIBRARY_PATH\"" >> /usr/lib/systemd/system/mariadb.service 
    
    systemctl stop mariadb.service
    systemctl daemon-reload
    systemctl start mariadb.service
    
    2.重新启动mariadb.service

    echo "Environment=\"LD_LIBRARY_PATH=$LD_LIBRARY_PATH\"" >> /usr/lib/systemd/system/mariadb.service 
    
    systemctl stop mariadb.service
    systemctl daemon-reload
    systemctl start mariadb.service
    

    祝你好运

    导出ORACLE\u HOME=/usr/lib/ORACLE/11.2/client64/lib导出LD\u LIBRARY\u PATH=$ORACLE\u HOME,它已添加到/etc/profile中,可以工作吗?导出ORACLE\u HOME=/usr/lib/ORACLE/11.2/client64/lib导出LD\u LIBRARY\u PATH=$ORACLE\u HOME,它已添加到/etc/profile中,可以工作吗?