首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在zabbix中创建“数据库监视器”项时无法打开lib '/usr/lib/oracle/11.2/client64/lib/libsqora.so.11.1

在zabbix中创建“数据库监视器”项时无法打开lib '/usr/lib/oracle/11.2/client64/lib/libsqora.so.11.1
EN

Stack Overflow用户
提问于 2016-08-29 03:30:32
回答 3查看 6.7K关注 0票数 1

在此之前,安装了unixODBC。

  1. unixODBC.x86_64 2.2.14-14.el6
  2. unixODBC-devel.x86_64 2.2.14-14.el6

安装的Oracle ODBC驱动程序是:

  1. oracle-instantclient11.2-basic-11.2.0.1.0-1.x86_64
  2. oracle-instantclient11.2-odbc-11.2.0.1.0-1.x86_64
  3. oracle-instantclient11.2-devel-11.2.0.1.0-1.x86_64

和odbcinst.ini:

代码语言:javascript
复制
[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:

代码语言:javascript
复制
[test]
Driver      = Oracle-11g
DSN = Oracle-11g
ServerName =  gzdb
UserID = xxx
Password = xxx

而且ODBC连接正在成功地工作。

代码语言:javascript
复制
shell> isql -v test
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+

为了启用ODBC支持,我用标志-- with重新编译了zabbix3.0。

代码语言:javascript
复制
./configure --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --with-unixodbc

并将旧的zabbix_sever替换为新的二进制编译。

但是,当我在zabbix中创建“数据库监视器”项时,仍然存在一个错误:在这里输入图像描述

所以我运行su - zabbix -c "ldd /usr/lib/oracle/11.2/client64/lib/libsqora.so.11.1",看起来没问题

代码语言:javascript
复制
 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)

我真的不知道这个错误意味着什么。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-06-08 15:51:14

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

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

创建/etc/sysconfig/zabbix-server文件,并使用

代码语言:javascript
复制
LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/lib/oracle/12.1/client64/lib"
export LD_LIBRARY_PATH

然后重新启动zabbix服务器。

票数 0
EN

Stack Overflow用户

发布于 2016-12-14 00:41:57

我在我的办公室和亚马逊的EC2实例之间连接一个非常相似的错误,结果发现这个错误非常误导人。具体而言,我的错误是:

连接错误:('01000',"01000Driver ManagerCan无法打开lib '/usr/lib/oracle/12.1/client64/lib/libsqora.so.12.1‘:文件未找到(0) (SQLDriverConnect)")

我们的防火墙是罪魁祸首。更宽松的环境使成功没有进一步的问题。

票数 0
EN

Stack Overflow用户

发布于 2019-04-24 10:00:59

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

代码语言:javascript
复制
ps aux | grep -i mysqld

mysql     3129  0.6  5.0 1862256 94272 ?       Ssl  17:52   0:00 /usr/sbin/mysqld

1.在/usr/lib/systemd/system/maradb.service中添加环境变量$LD_LIBRARY_PATH

代码语言:javascript
复制
echo "Environment=\"LD_LIBRARY_PATH=$LD_LIBRARY_PATH\"" >> /usr/lib/systemd/system/mariadb.service 

2.重新启动mariadb.service

代码语言:javascript
复制
systemctl stop mariadb.service
systemctl daemon-reload
systemctl start mariadb.service

祝好运!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39198122

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档