Zabbix监控Oracle 19c数据库完整配置指南

Zabbix监控Oracle 19c数据库完整配置指南

本文将详细介绍如何使用Zabbix配置Oracle 19c数据库监控,包括安装、配置、问题排查等全过程。本指南适合新手独立完成配置。

1. 环境准备

1.1 系统要求

  • Oracle 19c数据库服务器
  • Zabbix服务器(版本5.0或更高)
  • Zabbix Agent 2

1.2 前提条件

  • Oracle数据库正常运行
  • Zabbix服务器已安装并配置
  • 具有Oracle数据库和服务器的管理员权限

2. 安装Zabbix Agent 2

在Oracle数据库服务器上安装Zabbix Agent 2。

bash 复制代码
# 添加Zabbix仓库
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm

# 安装Zabbix Agent 2
yum install zabbix-agent2

# 启动服务并设置开机自启
systemctl start zabbix-agent2
systemctl enable zabbix-agent2

3. 配置Zabbix Agent 2

编辑配置文件 /etc/zabbix/zabbix_agent2.conf

复制代码
Server=<Zabbix服务器IP>
Hostname=<本机主机名>

重启Zabbix Agent 2服务:

bash 复制代码
systemctl restart zabbix-agent2

4. 创建Oracle监控用户

以具有管理员权限的用户(如SYS)登录Oracle数据库,执行以下SQL语句:

sql 复制代码
-- 创建用户
CREATE USER C##zabbix_mon IDENTIFIED BY zabbix
DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp
QUOTA UNLIMITED ON users
CONTAINER=ALL;

-- 授予基本权限
GRANT CREATE SESSION TO C##zabbix_mon CONTAINER=ALL;
GRANT SELECT ANY DICTIONARY TO C##zabbix_mon CONTAINER=ALL;

-- 授予特定对象的查询权限
GRANT SELECT ON SYS.DBA_TABLESPACE_USAGE_METRICS TO C##zabbix_mon CONTAINER=ALL;
GRANT SELECT ON SYS.DBA_TABLESPACES TO C##zabbix_mon CONTAINER=ALL;
GRANT SELECT ON SYS.DBA_USERS TO C##zabbix_mon CONTAINER=ALL;
GRANT SELECT ON SYS.DBA_DATA_FILES TO C##zabbix_mon CONTAINER=ALL;
GRANT SELECT ON SYS.V_$ACTIVE_SESSION_HISTORY TO C##zabbix_mon CONTAINER=ALL;
GRANT SELECT ON SYS.V_$ARCHIVE_DEST TO C##zabbix_mon CONTAINER=ALL;
GRANT SELECT ON SYS.V_$ASM_DISKGROUP TO C##zabbix_mon CONTAINER=ALL;
GRANT SELECT ON SYS.V_$DATABASE TO C##zabbix_mon CONTAINER=ALL;
GRANT SELECT ON SYS.V_$DATAFILE TO C##zabbix_mon CONTAINER=ALL;
GRANT SELECT ON SYS.V_$INSTANCE TO C##zabbix_mon CONTAINER=ALL;
GRANT SELECT ON SYS.V_$LOG TO C##zabbix_mon CONTAINER=ALL;
GRANT SELECT ON SYS.V_$OSSTAT TO C##zabbix_mon CONTAINER=ALL;
GRANT SELECT ON SYS.V_$PGASTAT TO C##zabbix_mon CONTAINER=ALL;
GRANT SELECT ON SYS.V_$PROCESS TO C##zabbix_mon CONTAINER=ALL;
GRANT SELECT ON SYS.V_$SESSION TO C##zabbix_mon CONTAINER=ALL;
GRANT SELECT ON SYS.V_$SYSMETRIC TO C##zabbix_mon CONTAINER=ALL;
GRANT SELECT ON SYS.V_$SYSTEM_PARAMETER TO C##zabbix_mon CONTAINER=ALL;

5. 配置Oracle监控

创建文件 /etc/zabbix/zabbix_agent2.d/oracle.conf

复制代码
Plugins.Oracle.Sessions.cdb1.Uri=tcp://localhost:1521
Plugins.Oracle.Sessions.cdb1.User=C##zabbix_mon
Plugins.Oracle.Sessions.cdb1.Password=zabbix
Plugins.Oracle.Sessions.cdb1.Service=cdb1

6. 配置环境变量

编辑 /etc/systemd/system/zabbix-agent2.service 文件,在 [Service] 部分添加:

复制代码
Environment="ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1"
Environment="LD_LIBRARY_PATH=/u01/app/oracle/product/19.0.0/dbhome_1/lib"
Environment="PATH=$PATH:/u01/app/oracle/product/19.0.0/dbhome_1/bin"

重新加载systemd配置并重启服务:

bash 复制代码
sudo systemctl daemon-reload
sudo systemctl restart zabbix-agent2

7. 在Zabbix Web界面添加主机

  1. 登录Zabbix Web界面
  2. 进入 Configuration -> Hosts
  3. 点击 "Create host"
  4. 填写以下信息:
    • Host name: <Oracle服务器名称>
    • Groups: 选择适当的主机组
    • Interfaces: 添加Agent接口,填写IP地址和端口(默认10050)
  5. 在 "Templates" 中添加 "Template DB Oracle by Zabbix agent 2" 模板
  6. 在 "Macros" 中添加以下宏:
    • {$ORACLE.CONNSTRING} = tcp://localhost:1521
    • {$ORACLE.SERVICE} = cdb1
    • {$ORACLE.USER} = C##zabbix_mon
    • {$ORACLE.PASSWORD} = zabbix
  7. 点击 "Add" 保存

8. 验证监控

  1. 进入 Monitoring -> Latest data
  2. 选择刚添加的Oracle主机
  3. 查看是否有Oracle相关的监控项开始收集数据

9. 常见问题及解决方法

9.1 Zabbix Agent 2无法连接到Oracle

症状:Zabbix Agent 2日志中出现 "Cannot connect to Oracle" 错误。

解决方法

  • 检查Oracle监听器是否正常运行
  • 验证 oracle.conf 中的连接信息是否正确
  • 确保防火墙允许Zabbix Agent 2访问Oracle端口(通常是1521)

9.2 ORA-00000: DPI-1047错误

症状:出现 "ORA-00000: DPI-1047: Cannot locate a 64-bit Oracle client library" 错误。

解决方法

  • 确保正确设置了ORACLE_HOME和LD_LIBRARY_PATH环境变量
  • 检查Oracle客户端库是否为64位版本
  • 重新启动Zabbix Agent 2服务

9.3 权限不足

症状:Zabbix无法收集某些Oracle指标。

解决方法

  • 检查C##zabbix_mon用户是否有足够的权限
  • 可能需要额外授予一些系统视图的SELECT权限

9.4 数据收集延迟

症状:Oracle监控数据更新缓慢。

解决方法

  • 检查Zabbix服务器和Agent的性能
  • 调整数据收集间隔
  • 优化Oracle查询性能

9.5 用户创建失败

症状:创建C##zabbix_mon用户时出错。

解决方法

  • 确保以具有足够权限的用户(如SYS)执行创建用户的SQL语句
  • 检查密码是否符合Oracle的密码策略
  • 确保在正确的容器中执行命令(如果使用多租户架构)

9.6 表空间问题

症状:用户创建成功但无法使用。

解决方法

  • 确保users和temp表空间存在且有足够空间
  • 检查用户的配额设置

10. 结论

通过以上步骤,你应该能够成功配置Zabbix来监控Oracle 19c数据库。记得定期检查监控数据,及时调整配置以满足不断变化的需求。如遇到其他问题,可查阅Zabbix和Oracle的官方文档或寻求社区帮助。

注意事项:

  1. 确保所有密码符合安全策略。
  2. 定期审查和更新监控用户的权限。
  3. 保持Zabbix和Oracle软件的及时更新。
  4. 根据实际需求调整监控项和触发器。

通过细心配置和及时排障,您可以建立一个可靠的Oracle数据库监控系统,为数据库的稳定运行提供有力支持。

相关推荐
李广坤15 小时前
MySQL 大表字段变更实践(改名 + 改类型 + 改长度)
数据库
不做菜鸟的网工2 天前
Zabbix收集H3C交换机实时配置命令 「SNMP TRAP」
zabbix
爱可生开源社区2 天前
2026 年,优秀的 DBA 需要具备哪些素质?
数据库·人工智能·dba
随逸1772 天前
《从零搭建NestJS项目》
数据库·typescript
肖祥2 天前
docker安装zabbix7.4
zabbix
加号32 天前
windows系统下mysql多源数据库同步部署
数据库·windows·mysql
シ風箏2 天前
MySQL【部署 04】Docker部署 MySQL8.0.32 版本(网盘镜像及启动命令分享)
数据库·mysql·docker
李慕婉学姐2 天前
Springboot智慧社区系统设计与开发6n99s526(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·spring boot·后端
百锦再3 天前
Django实现接口token检测的实现方案
数据库·python·django·sqlite·flask·fastapi·pip
tryCbest3 天前
数据库SQL学习
数据库·sql