Z投稿 | Zabbix如何通过ODBC对接Oracle获取相关数据?

目录

  1. 什么是ODBC及其主要功能
  2. 安装Oracle-instantclient
  3. 配置SQLPlus连接
  4. 配置Zabbix监控项

1.什么是ODBC

ODBC数据源全称是开放数据库互连(Open Database Connectivity),在微软公司开放的数据库结构中的一部分,其实是一个应用程序的接口,主要用于提供数据库的编写应用程序的能力。因为是微软公司发布的软件,ODBC也提供了SQL语句的支持,用户可以通过ODBC提供的API接口来使用和调度ODBC驱动程序,然后ODBC驱动程序通过SQL语言与数据库管理系统进行联系。

ODBC数据源在每台计算机中基本都存在,以WIN10为例,打开控制面板—系统工具—数据源 (ODBC),很见到可以找到。双击打开ODBC数据源管理器,该管理器主要用于配置、添加、删除各种不同的数据源,ODBC数据源对此专门进行了简洁化,可以让用户更加方便的进行数据源的配置。

ODBC数据源管理器的主要功能如下:

  1. 用户DSN:ODBC用户数据源存储了如何与指定数据提供者连接的信息。用户数据源只对当前的用户可见,而且只能应用在本机上。
  2. 系统DSN:ODBC系统数据源存储了如何与指定数据提供者连接的信息。系统数据源对当前机器上的所有用户可见。
  3. 文件DSN:ODBC文件数据源允许用户连接数据提供者。文件DSN可以由安装了相同驱动程序的用户共享。
  4. 驱动程序:ODBC驱动程序允许那些支持ODBC的程序通过ODBC数据源获取信息。如果安装新的驱动程序,要使用其安装程序。
  5. 跟踪:ODBC跟踪允许创建调用ODBC驱动程序的日志,以供技术人员查看;也可以辅助调试应用程序。Visual Studio跟踪启动Microsoft Visual Studio的ODBC跟踪。
  6. 连接池:连接池允许应用程序重新打开连接句柄,此操作将往返过程存入服务器。
    以上是ODBC数据源管理器的主要功能,用户也可以通过ODBC数据源管理器删除原有的DNS,或者对以前配置的数据源进行修改,操作起来也很简单快捷。今天介绍的是Zabbix如何通过ODBC对接Oracle获取相关数据。

Zabbix官方文档请点击查看

2.安装Oracle-instantclient

Instant Client Downloads for Linux x86-64 (64-bit)下载地址
我这边的Oracle数据库环境是Oracle11GR2 v11.2.0.4;首先去Oracle的官方网站下载最新的Oracle客户端。并在Zabbix主机上进行安装:


# 我们先把需要用到的四个rpm离线包下载到本地
mkdir -p oracle
cd oracle

wget https://download.oracle.com/otn_software/linux/instantclient/199000/oracle-instantclient19.9-basic-19.9.0.0.0-1.x86_64.rpm
wget https://download.oracle.com/otn_software/linux/instantclient/199000/oracle-instantclient19.9-sqlplus-19.9.0.0.0-1.x86_64.rpm
wget https://download.oracle.com/otn_software/linux/instantclient/199000/oracle-instantclient19.9-devel-19.9.0.0.0-1.x86_64.rpm
wget https://download.oracle.com/otn_software/linux/instantclient/199000/oracle-instantclient19.9-odbc-19.9.0.0.0-1.x86_64.rpm

# 在安装客户端之前我们还需要在zabbix上安装unixODBC和unixODBC-devel(这两个包我们直接在线安装即可)
yum -y install unixODBC unixODBC-devel

# 安装完成之后我们直接通过下面的命令安装 oracle-instantclient
yum localinstall oracle-instantclient19.9-*

# oracle-instantclient的安装位置如下
/usr/lib/oracle/19.9/client64
/usr/share/oracle/19.9/client64
/usr/include/oracle/19.9/client64

3. 配置SQLPlus连接

在设置环境变量之前,需要在/usr/lib/oracle/19.9/client64下创建 network/admin 文件夹,用来配置 tnsnames.ora :

# 创建 network/admin 文件夹
mkdir /usr/lib/oracle/19.9/client64/network/admin -p

# 配置 tnsnames.ora 文件
Oracle=
   (DESCRIPTION =
     (ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.200.110)(PORT = 1521))
     (CONNECT_DATA =
       (SERVER = DEDICATED)
       (SERVICE_NAME = 数据库SID)
     )
   )

注:这里也可以去创建 listener.ora和sqlnet.ora 配置文件。创建 sqlnet.ora 作用是配置解析顺序, name/password@xxxxx xxxx会先去tnsnames寻找这个名字,没有的话会解析为IP NAME_DIRECTORY_PATH=(TNSNAMES,EZCONNECT) 。感兴趣的小伙伴可以自定测试,这里不再演示。
还需要配置环境变量。环境变量必须配置,否则会造成 [01000] unixODBCCan’t open lib '/usr/lib64/lxxxxx.so’ : file not found (执行一次即可)

export ORACLE_HOME=/usr/lib/oracle/19.9/client64
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib64:$LD_LIBRARY_PATH
export TNS_ADMIN=$ORACLE_HOME/network/admin
export PATH=$PATH:$ORACLE_HOME/bin:$HOME/bin

配置需要的类库

chmod  x /usr/lib/oracle/19.9/client64/lib/libsqora.so.19.1
cd /usr/lib64/
ln -s libodbcinst.so.2.0.0 libodbcinst.so.1

添加Oracle驱动

# Example driver definitions
# vi /etc/odbcinst.ini
[Oracle]
Description     = Oracle ODBC driver for Oracle 11g
Driver          = /usr/lib/oracle/19.9/client64/lib/libsqora.so.19.1

添加Oracle数据源

# vi /etc/odbc.ini
# 配置示例
[DSN名称]                               将在zabbix item key中使用
Driver = oracle                         tnsnames.ini 配置的驱动名称
ServerName = ip:port/sid               ip:port/sid
UserID = 用户名                         用户名
Password = 密码                         密码

# 具体配置
[Oracle]
Driver = Oracle
ServerName = 172.16.200.241:1521/数据库SID
UserID = XXX
Password = XXX

ISQL测试

isql -v Oracle
# 检测是否可连接及中间如遇到报错的错误信息(这里的Oracle要和DSN名称一致)
[root@ZabbixServer]# isql -v Oracle
 ---------------------------------------
| Connected!                           |
|                                       |
| sql-statement                         |
| help [tablename]                     |
| quit                                 |
|                                       |
 ---------------------------------------
SQL>

SQLPlus测试连接

# sqlplus 用户名/密码@tnsnames.ora中配置的连接名称
[root@ZabbixServer ~]# sqlplus 用户名/用户密码@DSN名称

SQL*Plus: Release 19.0.0.0.0 - Production on Sun Dec 6 11:34:11 2020
Version 19.9.0.0.0

Copyright (c) 1982, 2020, Oracle. All rights reserved.

???:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> 

4. 配置Zabbix监控项

测试正常之后就可以去Zabbix里面添加数据库架监控项,需要填入键值、用户名称、密码、具体的SQL查询语句、更新时间;信息类型修改为文本。具体配置信息如下:

配置完成以后我们可以点击下方的测试按钮,如果在结果里能获取到Result converted to 文本 OPEN 信息就代表成功了;可以去检测-最新数据里面看到已经成功拿到的数据。

来源:https://www.icode9.com/content-2-899851.html

(0)

相关推荐

  • Excel连接到Oracle的正确实用方法,亲测有效!

    在真实的开发环境中,我们有的数据可能要以Excel的形式导出,为了更好地进行数据分析,并且减少导入导出重复动作浪费时间--我们可以通过ODBC连接Oracle和Excel. 操作思路: 1.确定ODB ...

  • Oracle 获取当前日期及日期格式

    获取系统日期: SYSDATE() 格式化日期:   TO_CHAR(SYSDATE(),'YY/MM/DD HH24:MI:SS) 或        TO_DATE(SYSDATE(),'YY/MM ...

  • 编程语言 Oracle 数据库导出数据泵(EXPDP)文件存放的位置

    数据泵是服务器端工具,导出的文件是放在数据库所在的服务器上,当然我们知道可以通过directory目录对象来控制.目录对象默认有四个级别,当然是有优先级顺序的 数据泵是服务器端工具,免备案空间,导出的 ...

  • zabbix对接企业微信web机器人发送报警信息

    #!/usr/bin/env python2 # -*- coding:utf-8 -*- """ zabbix 监控脚本-企业微信机器人 ""&qu ...

  • (2条消息) Oracle Windows ODBC 数据源配置。

    windows 配置 oracle odbc : 打开odbc 数据源管理器>>系统DSN>>点击"添加" 如图: 若没有驱动程序 "Oracle ...

  • 【佳作】新人投稿-闪电Z

    作者:WY 先多图预警一下,49张图片,图很多很多. 也能在作者的制作过程图中看到很多细致的制作,但是最终成品图片的数量太少了,并没有很好的展示出来作者的努力啊. 再发图的时候,首先先确定成品图的展示 ...

  • Oracle 外部表

    外部表是指不存在于数据库中的表.通过向Oracle 提供描述外部表的元数据,可以把一个操作系统文件当成一个只读的数据库表,就像这些数据存储在一个普通数据库表中一样来进行访问.外部表是对数据库表的延伸. ...

  • 投稿 | 诗合集

    立夏 三更早起晚披霞,五月农桑不着家. 田野苍茫苗破土,谁人闲暇赏繁花. 小区春景 朝出晴天红日明,万枝玉树合欢莺. 翻飞千嶂归来处,馥郁香浓夏立情. 燕归来 立时天气日高温,万树临风花影纭. 又见紫 ...

  • 母亲节投稿

    七绝 让梨 鹿车 抖手强拿一片梨, 榻前稚子眼迷痴. 梨香泌肺兹心腑, 今世难忘决别时. 迎春花 鹿车 妆嫁迎春塞北栽, 花开满屋喜香腮. 黄花细养金光灿, 梦念亲娘夜里来. 2021.5.8

  • 【病友投稿】血小板减少吃什么能补回来?

    各位病友你们好,我是一位儿童血小板减少症患者的妈妈,我的孩子今年才10岁,本来应该读小学的年纪,现在因为血小板计数迟迟没有稳定只能在家读书.真不知道孩子到底什么时候才能恢复正常的生活. 现在孩子在家总 ...