转载来源 :https://mp.weixin.qq.com/s/PNl3c8frgqIYjDnVsQALHA

目 录

  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 oraclewget 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.0Copyright (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 optionsSQL>

4. 配置Zabbix监控项

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


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


https://mp.weixin.qq.com/s/PNl3c8frgqIYjDnVsQALHA

Zabbix如何通过ODBC对接Oracle获取相关数据相关推荐

  1. 对豆瓣进行爬虫来获取相关数据(分别保存到Excel表格和sqlite中)

    1.存入Excel表格的代码: from bs4 import BeautifulSoup #网页解析,获取数据 import re #正则表达式,进行文字匹配 import urllib.reque ...

  2. React AntV/G2Plot环形图Pie添加点击事件,即点击图环触发获取相关数据。

    步骤: 1.添加相关依赖,引入AntV/G2Plot图表组件 2.添加配置项 3.添加点击事件方法(关键部分:在onReady={onReadyPie},onReady是图表渲染完成执行回调方法,在该 ...

  3. 做行业研究时如何获取相关数据?

    1. 官方渠道 国家统计局 中国政府网 工信部 中经网 2. 第三方数据公司 咨询公司 研究所 IDC数据公司 iResearch艾瑞咨询深入互联网及电信相关领域研究成果,融合更多行业资源http:/ ...

  4. 强烈推荐:如何找到免费大数据,获取相关数据

    如今的我们,淹没在大数据的海洋中,却又忍受着因没有数据而导致的饥渴.很多人都想做大数据研究,但数据在哪里呢?数据不再是"资源",而是变成了一种重要"资产". - ...

  5. 【EntityFramework系列教程五,翻译】在ASP.NET MVC程序中借助EntityFramework读取相关数据...

    在前一章中你完成了复杂的学校数据模型,在本章节中你将读取并且展示这些相关数据--也就是EntityFramework加载到导航属性中的那些数据. 以下截图展示你要完成的效果: [慢模式.饥饿模式以及显 ...

  6. Python获取股票数据并绘制相应K线图,看这个就够了!

    Python对股票的K线可视化 前言 说明 注意 数据获取 Tushare获取股票数据 获取医疗器械板块数据(代码部分) 获取股票数据(代码部分) 数据预处理 变量中文化(代码部分) K线绘制 代码部 ...

  7. Oracle获取当前日期及相关操作

    Oracle获取当前日期及相关操作 查询当前时间及相应格式: select sysdate from dual; select to_char(sysdate,'yyyy-mm-dd hh24:mi: ...

  8. 【方法整理】Oracle 获取trace跟踪文件名的几种常用方式

    [方法整理]Oracle 获取trace跟踪文件名的几种常用方式 1  BLOG文档结构图 2  前言部分 2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其 ...

  9. Oracle序列相关命令

    Oracle序列相关命令 1.Oracle创建序列命令 2.Oracle序列查询命令 3.Oracle序列删除命令 4.Oracle序列实际应用 5.注意事项 1.Oracle创建序列命令 CREAT ...

最新文章

  1. Hyper-V Server 2008 R2 系统部署向导
  2. 求助matlab分解质因数,Matlab
  3. Oracle导出excel
  4. python——logging模块
  5. io操作是指什么_各种IO模型,一篇打尽
  6. django_form表单的提交
  7. 【ArcGIS风暴】ArcGIS Editor for OSM中文教程(2):下载及加载OSM数据
  8. rocksdb原理_教你玩转MyRocks/RocksDB—STATISTICS与后台线程篇
  9. TabBarController创建及使用方法简介
  10. Graph + AI 2021全球峰会圆满落幕 TigerGraph企业版3.2发布
  11. linux下的redis配置;
  12. Leetcode Merge Sorted Array
  13. Spring核心——MessageSource实现国际化
  14. 往事如烟 - 老钟14
  15. 科学家量子计算机时间倒流,科学家用量子计算机让“时间倒流”?并没有真的做到...
  16. redirect_uri域名与后台配置不一致
  17. BZOJ3786: 星系探索(伪ETT)
  18. 弱电机房工程搬迁工作内容(方案)
  19. 移动宽带没有公网IP?不,它有公网IPv6,你只需要……
  20. go语言中flag库使用

热门文章

  1. 【Python数据分析】数据预处理3——数据规约(含主成分分析详解、Python主要预处理函数)
  2. 用python对单一微博文档进行分词——jieba分词(加保留词和停用词)
  3. TensorFlow实现深度学习算法的教程汇集:代码+笔记
  4. python 数据分析--2016美国竞选辩论可视化
  5. linux 命令大全_【Linux】命令目录大全
  6. mysql执行语句_MySQL查看实时执行的SQL语句
  7. 《C++游戏开发》笔记十三 平滑过渡的战争迷雾(一) 原理:Warcraft3地形拼接算法...
  8. java模块依赖关系_链接模块依赖关系未解决
  9. 用Kotlin撸一个图片压缩插件ImageSlimming-导学篇(一)
  10. PXE+Kickstart无人值守安装CentOS 7出现DHCP故障解决报告