Ubuntu服务器上如何监控Oracle数据库

在 Ubuntu 服务器上监控 Oracle 数据库,虽然不像在 Windows 或某些企业 Linux(如 RHEL)那样有现成的 GUI 工具,但你完全可以通过命令行工具、脚本、开源监控平台来实现全面监控,包含:

  • 数据库性能指标(CPU、IO、连接数)

  • 活跃会话、慢查询、锁等待

  • 表空间使用、归档日志增长

  • 实时 SQL 执行状态

  • 告警与邮件通知


一、前提条件

在 Ubuntu 服务器上监控 Oracle,你需要满足以下基本条件:

1. Oracle 数据库已部署好

不管是 Oracle 12c、19c、21c,只要能正常运行即可。

 2. 具备 Oracle 客户端工具(SQL*Plus、Oracle Instant Client)

可以远程连接 Oracle 数据库(即使 Oracle 不安装在 Ubuntu 本机上也可以监控)

安装 Oracle Instant Client(基本版):

sudo apt update
sudo apt install libaio1
wget https://download.oracle.com/otn_software/linux/instantclient/instantclient-basiclite-linux.x64-21.9.0.0.0dbru.zip
unzip instantclient-basiclite-linux.x64-21.9.0.0.0dbru.zip
export LD_LIBRARY_PATH=$PWD/instantclient_21_9

二、命令行方式监控 Oracle(适合技术人员)

你可以使用 SQL*Plus 工具通过 SQL 查询实时监控数据库状态:

示例:查看当前连接数

SELECT COUNT(*) FROM v$session;

查看活跃 SQL

SELECT sql_text FROM v$sql WHERE executions > 1000 ORDER BY executions DESC FETCH FIRST 5 ROWS ONLY;

查询等待事件

SELECT event, COUNT(*) FROM v$session_wait GROUP BY event ORDER BY COUNT(*) DESC;

你可以将这些语句封装成脚本,通过 cron 定时采集、输出日志、触发告警。


三、集成开源监控工具(推荐)

以下工具可直接在 Ubuntu 上部署,对 Oracle 提供专属监控模块:

1. Prometheus + Grafana + Oracle Exporter

Oracle Exporter 是一个社区插件,可以采集 Oracle 性能指标,供 Prometheus 拉取,并在 Grafana 中展示图形化面板。

安装步骤简述:
  1. 安装 Oracle Instant Client + Golang 编译环境

  2. 获取 exporter 源码

    git clone https://github.com/iamseth/oracledb_exporter.git
    cd oracledb_exporter
    go build
    
  3. 设置连接配置: 编辑 config.yml,添加用户名、密码、服务名等。

  4. 运行 exporter,并配置 Prometheus 抓取端口

  5. 在 Grafana 导入 Oracle 监控仪表板(已有很多开源模板)。优点:可视化好,自动采集,支持报警


2. Zabbix + Oracle Template

如果你偏向企业级监控,Zabbix 是首选。Zabbix 有专用 Oracle 模板支持以下功能:

  • 表空间使用率

  • SGA/PGA 命中率

  • 用户连接数

  • 活跃事务数

  • DML 语句变化趋势

步骤:
  1. 安装 Zabbix Server、Zabbix Agent(或通过 Proxy)

  2. 使用 Oracle 模板(社区或官方)

  3. 在 Agent 主机配置 .tnsnames.ora 文件,保持能连接 Oracle

  4. 通过自定义 item + SQL 查询方式抓取监控数据。优点:成熟稳定,支持历史趋势、告警规则灵活


四、监控内容建议清单

监控项说明
会话数当前连接数、活跃数、锁定数
SQL执行长时间运行SQL、TOP SQL
表空间剩余空间、增长率
等待事件哪些操作在等待?
重做日志是否存在归档拥堵
PGA/SGA命中率代表内存使用效率
锁与死锁查看是否存在锁等待或死锁现象
CPU/IO负载与数据库并发密切相关

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/141.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

系统高性能设计核心机制图解:缓存优化、链表调度与时间轮原理

系统高性能设计核心机制图解:缓存优化、链表调度与时间轮原理 在高并发系统中,性能瓶颈常出现在内存竞争、调度延迟与缓存失效等环节。本文总结几项关键机制:伪共享优化、链表缓存结构、时间轮定时器,并通过文字图示还原其结构与…

Spark-Streaming核心编程

Kafka命令行的使用 创建topic kafka-topics.sh --create --zookeeper node01:2181,node02:2181,node03:2181 --topic test1 --partitions 3 --replication-factor 3 分区数量,副本数量,都是必须的。 数据的形式: 主题名称-分区编号。 在…

Spring AI - Redis缓存对话

先看效果 对话过程被缓存到了Redis 中。 原理 在上一节我们快速入门了SpringAI,具体文章请查看:快速入门Spring AI 创建 ChatClient 的代码如下: this.chatClient ChatClient.builder(chatModel).defaultSystem(DEFAULT_PROMPT).defaultAd…

图像预处理-模板匹配

就是用模板图在目标图像中不断的滑动比较,通过某种比较方法来判断是否匹配成功,找到模板图所在的位置。 - 不会有边缘填充。 - 类似于卷积,滑动比较,挨个比较象素。 - 返回结果res大小是:目标图大小-模板图大小1(H-…

【算法笔记】动态规划基础(一):dp思想、基础线性dp

目录 前言动态规划的精髓什么叫“状态”动态规划的概念动态规划的三要素动态规划的框架无后效性dfs -> 记忆化搜索 -> dp暴力写法记忆化搜索写法记忆化搜索优化了什么?怎么转化成dp?dp写法 dp其实也是图论首先先说结论:状态DAG是怎样的…

网络原理————HTTP

1,HTTP简介 我们上一期谈到了网络编程尤其是TCP和UDP,使用网络套接字来实现网络编程,上一期忘记说了,我们使用TCP的时候,我们用了线程池,这样就可以处理很多客户端而不会阻塞,那么如果客户端一…

rust编程学习(三):8大容器类型

1简介 rust标准库std::collections也提供了像C STL库中的容器&#xff0c;分为4种通用的容器&#xff0c;8种类型&#xff0c;如下表所示。 线性容器类型&#xff1a; 名称简介Vec<T>内存空间连续&#xff0c;可变长度的数组&#xff0c;类似于C中Vector<T>容器…

Javase 基础入门 —— 02 基本数据类型

本系列为笔者学习Javase的课堂笔记&#xff0c;视频资源为B站黑马程序员出品的《黑马程序员JavaAI智能辅助编程全套视频教程&#xff0c;java零基础入门到大牛一套通关》&#xff0c;章节分布参考视频教程&#xff0c;为同样学习Javase系列课程的同学们提供参考。 01 注释 单…

【 React 】重点知识总结 快速上手指南

react 是 facebook 出的一款针对视图层的库。react 使用的是单向数据流的机制 React 官方中文文档 基础 api 和语法 jsx 语法 就是在 js 中插入 html 片段 在 React 中所有的组件都是 function 组件定义 function 定义组件 就是使用 function 定义组件 任何一个 function …

C++:继承

目录 一&#xff1a;继承的概念 1.1 继承的定义 1.2 继承方式 1.3 可见性区别 公有方式 私有方式 保护方式 1.4 一般规则 二、继承中的隐藏规则 三、基类和派生类间的转换 四、派生类的默认成员函数 实现一个不能被继承的类 继承与友元 五、继承与静态成员 六、多…

十二种存储器综合对比——《器件手册--存储器》

存储器 名称 特点 用途 EEPROM 可电擦除可编程只读存储器&#xff0c;支持按字节擦除和写入操作&#xff0c;具有非易失性&#xff0c;断电后数据不丢失。 常用于存储少量需要频繁更新的数据&#xff0c;如设备配置参数、用户设置等。 NOR FLASH 支持按字节随机访问&…

C语言高频面试题——malloc 和 calloc区别

在 C 语言中&#xff0c;malloc 和 calloc 都是用于动态内存分配的函数&#xff0c;但它们在 内存初始化、参数形式 和 使用场景 上有显著区别。以下是详细的对比分析&#xff1a; 1. 函数原型 malloc void* malloc(size_t size);功能&#xff1a;分配 未初始化 的连续内存块…